WebGoat--general+Access Control Flaws
WebGoat是基于WEB实验漏洞的Java靶场程序,跨站点脚本攻击(XSS),访问控制,线程安全,操作隐藏字段,操纵参数,弱会话cookie,SQL盲注,数字型SQL注入,字符串型SQL注入,web服务、Open Authentication失效,危险的HTML注释等
0xx1 General
- HTTP相应
主要是了解HTTP提交,输入框输入之后点击提交就行
- HTTP拆分
- 判断,重定向里边的Location参数恰好是提交的参数chinese,这样,就存在HTTP应答拆分的可能
-
- 在http://yehg.net/encoding/进行URL编码,将URL编码后提交
China
Content-Length: 0
HTTP/1.1 200 OK
Content-Type: application/x-www-form-urlencoded
Content-Length: 47
<html>Gogoing</html>
URL编码为:
China%0AContent-Length%3A%200%0A%0AHTTP%2F1.1%20200%20OK%0AContent-Type%3A%20application%2Fx-www-form-urlencoded%0AContent-Length%3A%2047%0A%3Chtml%3EGogoing%3C%2Fhtml%3E%0A
如果某行的内容是Content-Length:0,则浏览器响应队列会认为这个响应已经结束.浏览器向重定向地址发送请求后会把Content-Length:0之后的内容当成下一个响应,从而显示<html>Gogoing</html>页面内容
- 在这个基础上可以改进攻击方式让它更有威胁.在构造的请求中加入Last-modify字段,并设置一个将来的值比如2020年1月1日.意思是服务器告诉浏览器,这个网页最后一次修改是在2020年1月1日.如果浏览器不清除缓存,下一次请求这个页面会加上if-modify-since字段,值是2020年1月1日,也就是说浏览器会问服务器,这个网页在2020年1月1日之后修改过嘛?当然服务器是人的话肯定会对这个问法莫名其妙,怎么会传过来一个未来的值?但是因为是程序,服务器会比对最后一次修改时间和传过来的时间,发现传过来的时间较新,就会回送304即Not Modified,表示这个网页没有被修改过.浏览器接受到了这个响应会从本地缓存读取网页,当然是之前注入的错误网页.如果浏览器不清除缓存,再也别想读取到正确的网页信息了.这就是HTTP的Cache Poisoning(缓存毒化)。
-
china
Content-Length: 0
HTTP/1.1 200 OK
Content-Type: application/x-www-form-urlencoded
Last-Modified: Mon, 27 Oct 2222 14:50:18 GMT
Content-Length: 47
URL编码:
china%0AContent-Length%3A%200%0A%0AHTTP%2F1.1%20200%20OK%0AContent-Type%3A%20application%2Fx-www-form-urlencoded%0ALast-Modified%3A%20Mon%2C%2027%20Oct%202222%2014%3A50%3A18%20GMT%0AContent-Length%3A%2047
0xx2 Access Control Flaws(访问控制缺陷)
1. Using an Access Control Matrix(使用访问控制矩阵)
这个就比较简单了,找到对应权限就OK
2. Bypass a Path Based Access Control Scheme(绕过基于路径的访问控制方案)
我们需要找到对应的.xml文件来通关,由于启动方式的不同,文件路径也不一定相同
首先,先确定一下当前路径和目标路径(经查证,我这里的目标路径给错了,应该是tomcat6/conf/tomcat-user.xml)
然后使用Burpsuite抓包,然后修改一下File部分,修改为: ../../../../../../../../../var/lib/tomcat6/conf/tomcat-users.xml(注意自己的路径,此处不唯一)