前言
1枚很简单的洞,昨天有看到公众号写了这个cms的审计文章,但是没提这个洞,所以这里简单分享一下。
目录
-
源码扫描
-
Fortify SCA
-
漏洞分析
-
静态分析(phpstorm)
-
动态调试(phpstorm+xdebug)
-
漏洞验证
-
漏洞利用
源码扫描
Fortify SCA
先用工具( Fortify SCA )扫一波
-
tip:中文乱码问题
漏洞分析
静态分析 (phpstorm)
疑似存在漏洞的位置
/files/downloads.php
触发漏洞的参数为$sourceFile, 跟进整个传参过程,判断该参数的值是否可控
//打开文件
$fp = fopen("$sourceFile", "rb");
CTRL+鼠标左键单击,一路回溯
# 依次回溯
fopen("$sourceFile", "rb");
|
$sourceFile = $fileadd;
|
$fileadd=$down['softadd'];
|
$down= mysql_fetch_array($result);
|
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());
|
$fileid=addslashes($_GET['cid']);
这里大概就可以看出参数$sourceFile的值大概率是受cid(用户可控)影响的,softadd的值直接影响最后的$sourceFile, 静态分析到这里就差不多结束了。
动态调试 (phpstorm + xdebug)
把系统的功能大致过了一遍,理清了该系统的文件下载功能的实现方式
-
step1: 由管理员发布下载 (/admin/?r=newsoft)
-
注:管理员是可以通过修改Cooike绕过登录验证的,网上已经有很多分析,这里就不做过多分析了。
-
step2: 用户前台点击下载即可 (/?r=downloads&type=soft&line=unicom&cid=)
首先找到发布内容 -> 发表软件的功能点
似乎要找的可控参数应该就是这了
下断点,开启监听
一路F7,跟一遍参数过程(主要关注softadd)
最后到/admin/files/newsoft.php (93 ~ 97)
$query = "INSERT INTO download (
title,keywords,description,images,hit,xiazai,daxiao,language,version,author,demo,url,softadd,softadd2,xs,content,date
) VALUES(
'$title','$keywords','$description','$filename','1','0','$daxiao','$language','$version','$author','$demo','$url','$softadd','$softadd2','$xs','$content',now()
)";@mysql_query($query) or die('新增错误:'.mysql_error());
echo "<script>alert('亲爱的,下载,".$imgsms."成功保存。');location.href='?r=softlist'</script>";
exit;
}
如图
这里$softadd直接被插入了数据库
use xhcms;
select * from downloads;
到这里漏洞的产生的原因也就分析完了。
漏洞验证
回到首页,找到文件下载的功能点
成功下载 C:windowswin.ini
漏洞利用
-
Cookie伪造+任意文件下载
数据库配置文件/inc/conn.info.php
本文始发于微信公众号(don9sec):代码审计-熊海CMS任意文件下载 0day?
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论