一,复现环境准备
所需文件安装包资源
phpstudyv8下载安装 https://www.xp.cn/download.html
espcmsv5百度网盘下载链接:https://pan.baidu.com/s/1vRYpoQiqbrSPQYPVVJbYRQ
提取码:espc
php版本5.3.x,mysql版本5.3.x espcmsv5版本不支持更高版本的php和mysql。
seay源代码审计系统:网页直接搜索就可以直接安装
二,复现环境搭建
:
1,phpstudy配置
打开首页的apche,mysql,(MySQL版本为5.x.x)
phpstudy网站搭建
将cms源码.zip–>cms源码–>espcms.rar–>espcms中的文件全部直接复制到www.espcmstest.com文件下如图所示
总之cms源码.zip–>cms源码–>espcms.rar–>espcms中的文件要直接在www.testespcms.com的子目录下。
2,espcms安装
在浏览器输入地址栏 www.testespcms.com(如果为第一次安装)就可以按照手册步骤安装
若以前安装过就会直接到网站首页。
espcms在线安装手册 https://www.ecisp.cn/html/cn/v5_faq/
(若安装数据库是页面无响应大概率是php版本过高,或者mysql版本过高)MySQL数据库默认密码一般为root,安装完成后 www.testespcms.com\adminsoft为网页后台地址
三,seay源代码审计系统自动审计
新建项目找到文件并且打开espcms文件点击自动审计开始即可
选中,双击进行查看:
这里是带入参数进入数据库查询,下一步对$parentid右键全局搜索,查看参数传递过程
右键定位accept函数
通读代码可知,传入的参数是R,所以此处传递参数的方法既可以是get也可以是post。然后使用daddslashes进行过滤,其实质就是addslashes。
在回顾前文代码{$sql = “select * from
d
b
t
a
b
l
e
w
h
e
r
e
p
a
r
e
n
t
i
d
=
db_table where parentid=
dbtablewhereparentid=parentid”;},sql查询语句并没用单引号进行分隔,因此,此处存在sql注入漏洞
回到sql代码处看到class important extends connector右键全局搜索查看important在哪里实例化得到下图
大致的流程就是获取url中的archive参数作为寻找php文件的参数,并包含获取url中的action参数,作为函数名,并调用在具体的函数中获取parentid的值,组成sql语句。
因此可以构建exp:
http://www.testespcms.com/adminsoft/index.php?archive=citylist&action=citylist&parentid=-1 union select 1,2,user(),4,5
注入结果
四,结果
成功获得用户名