Exp9 Web安全基础
首先下载WebGoat
Kali中输入代码java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat。
进入火狐,地址localhost:8080/WebGoat,即可打开webgoat
使用默认用户名webgoat密码webgoat登录
进入界面
二、实验内容
开始做题
1.Stored XSS Attacks
打开对应题目
输入如下
得到以下结果
可以看到已经成功。
2.Reflected XSS Attacks
打开对应题目
在code框内输入<script>alert("20151208");</script>,结果如下
完成题目。
3.Cross Site Request Forgery(CSRF)
打开对应题目
查看cookies
按如下格式输入
<img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'>
得到结果
完成
4.CSRF Prompt By-Pass
打开对应题目
按如下格式输入
点开所得链接
完成
5.Numeric SQL Injection
打开对应题目
此题使用BurpSuite抓包修改
打开BurpSuite,通过以下路径Proxy->Options->Add添加一个端口,将绑定的端口设为1208,点击确认后会在Options下增加一行,勾选新形成的这一行:
点击浏览器右上方的更多选项卡,选择preference
在页面左侧选择advanced,选择network页标签,在connection那一行选择settings…
在弹出的窗口中设置代理服务器和端口(要与BurpSuite中绑定的一致)
回到题目页面,点击Go,然后进入BurpSuite中依次选择Proxy->Intercept
选择send to repeater
选择Params将其中station的值改为101 or 1=1,点击Go运行,成功。
6.Log Spoofing
在User Name中输入%0d%0aLogin succeeded !admin
完成。
7.LAB:SQL Injection(Stage 1:String SQL Injection)
使用firebug显示当前网页的源码并直接在其中修改
在密码栏中输入' or 1=1 --,点击登录
完成。
8.LAB:SQL Injection(Stage 3:Numeric SQL Injection)
使用firebug查看网页源码,把其中的value值由101改为101 or 1=1 order by salary desc --,这样老板的信息就会被排到第一个
完成。
9.Database Backdoors
先输入示例101
输入语句:101; update employee set salary=20151208成功将该用户的工资变成20151208
输入语句
101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20151208@hackme.com' WHERE userid = NEW.userid
就可以了,表中一旦添加新用户那么就在用户表里将新用户的邮箱改为我设置的邮箱。
10.Blind Numeric SQL Injection
先输入101
构造输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 数值 );
,根据返回的语句是否合法判断pin值的范围。
找到正确值2364、
所有题目完成。
三、实验问题回答
(1)SQL注入攻击原理,如何防御
(2)XSS攻击的原理,如何防御
(3)CSRF攻击原理,如何防御
(1)SQL注入攻击原理,如何防御
答:
- 攻击原理:SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。
-
防御措施:
- 输入验证,检查用户输入的合法性,确信输入的内容只包含合法的数据,不允许出现“= ”、“-”之类的非法字符,或者限制输入的长度,从而限制了SQL注入的可能。
- 错误消息处理,防范SQL注入,还要避免出现一些详细的错误消息,因为黑客们可以利用这些消息。要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。
- 加密处理,将用户登录名称、密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入SQL命令。
(2)XSS攻击的原理,如何防御
答:
- 攻击原理:XSS攻击,即跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
-
防御措施:
- 一种方法是在表单提交或者url参数传递前,对需要的参数进行过滤。
- 过滤用户输入的 检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。
(3)CSRF攻击原理,如何防御
答:
- 攻击原理:CSRF(Cross-siterequestforgery跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。CSRF通过伪装来自受信任用户的请求来利用受信任的网站。
-
防御措施:
- 通过 referer、token 或者 验证码 来检测用户提交。
- 尽量不要在页面的链接中暴露用户隐私信息。
- 对于用户修改删除等操作最好都使用post 操作 。
- 避免全站通用的cookie,严格设置cookie的域。
- 四、实验体会
- 这次实验是通过webgoat来进行测试和攻击,webgoat很适合用来进行教学和练手,安装也很方便,只需要JAVA的Jar包,有Java环境就可以使用。也可以对你的使用有个基本的检测,做对会显示对号。这次实验分别尝试了SQL、CSRF、XSS攻击,攻击的场景类型也较为丰富,但也相对简单,距离实战还有一定的距离,当然应该应付一些设计缺陷较大,安全防范不足的小网站还是足够了,也让我们更直观的体会到web的脆弱性。
- 由于基础不好,做的又慢又累,感觉也学不到啥,好在终于是最后一次,结束了。