最近这段时间遇到了很多SSRF的漏洞类型,但很多都是无回显,但它们都有个通用的特点就是它发起的请求往往都是有Apache-HttpClient这款容器发起的。
在测试过程当中首先无服务器的可以借助dnslog等平台进行测试。
[2019-06-20 20:38:40] 4.4.4.4 - - yonngshao.com/&referer=none - Apache-HttpClient/x.x (Java x.x minimum; Java/x.x.0_***) -
本文所述情况不会针对自身挖掘到的漏洞作为例子,而是会提供demo进行研究,并声明禁止非法用途。
先看下demo.php
<?php
function is_allowed_URL($url){
//可用来防止HTTP头注入
if (!$url || !filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED & FILTER_FLAG_HOST_REQUIRED & FILTER_FLAG_QUERY_REQUIRED)){
return false;
}
//仅允许http或https协议
if(!preg_match('/^https?://.*$/', $url)){
return false;
}
return true;
}
if (!is_allowed_URL($_GET['url'])) {
echo '非法';
exit;
}
//打开输出缓冲区并获取远程图片
ob_start();
$context = stream_context_create(
array('http' => array(
'follow_location' => false // don't follow redirects
))
);
// 略
$ch = curl_init();
$timeout = 10;
curl_setopt ($ch, CURLOPT_URL, $_GET['url']);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$url = curl_exec($ch);
ob_end_clean();
部署至环境后,请求http://yongshao.com/demo.php?url=http://外网地址:{port}
[2019-06-20 21:12:39] 4.4.4.4 - - ssrf.yongshao.com/&referer=none - -
由于我这里demo不是基于容器的导致在UA的值是空。
之后再请求一次不存在的端口
可见time变得非常高的值。
这里以这个特点进行对内网探测请求: http://192.168.1.1/demo.php?url=http://127.0.0.1:$80$
遍历端口时记得把Intruder attack--columns--Response received打勾
这样就有个明显知道内网当中存在哪些端口与不存在哪些端口了。以上不含高技术价值的信息(因为我也不会啊),仅供思路参考!
以上临时工所述
我司一概不负责
本文始发于微信公众号(逢人斗智斗勇):SSRF无回显挖掘方法
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论