PHP代码审计之YIXUNcms With Xdebug

好久没审过代码了,拾一下…

路由分析

看到index.php包含了php/index.php,跟进看一下。

着重看一下是怎么解析处理的URL。

php\bases\prourl.class.php

其实注释已经说的很清楚了。

/index.php/m/a/param

如上的形式,m是控制器类名、a是方法名、param是参数。

后台任意文件删除

其实后台有很多删除操作,但是因为过滤以及调用方式有点特殊无法绕过。

这种就很迷…我暂时找不到绕过的方法。

1

下面这个任意文件删除是POST引起的。

admin\controls\flink.class.php

可以看到修改友情链接logo的时候删除了原来的logo,而原来的logo的文件名是POST方式传输,所以目录穿越时不存在上面的问题。

抓包

可以看到确实POST了一个logo,改为../test.txt。

2

admin\controls\video.class.php

情况和友链那个差不多,但是需要注意的是判断了是否上传video。

虽然我这里上传的是php,但是并没有上传成功,但是删除确实成功了。

后台任意文件读取

admin\controls\template.class.php

直接传输路径导致web绝对路径泄露以及任意文件读取。

可以看到没有任何处理,仅仅是把输出的数据进行了一下htmlspecialchars()

后台任意文件写入

1

admin\controls\template.class.php

这个还是比较高危,可以getshell。

很明显,又是没有任何处理,直接写入了文件,并且可以指定任意路径。

2

admin\controls\base.class.php

看到设置cms基本信息这里,跟进writeConfig看一下

这里是存在写入的动作的,看一下能不能写shell。(里面的phpinfo是测试的时候插入的),但是明显地看得出来是没有办法执行的,所以尝试一下闭合。

闭合后也要记得注释掉后面的多余的”);

后台SQL注入

php\bases\db.class.php

admin\controls\user.class.php

看到添加账号这里,最后是调用了insert(其实mess那里应该有个xss),跟进insert

看到调用了check,应该是检查安全性的。

这里用了stripslashes(),可能应该使用addslashes()才对…有点迷。

用户添加:

因为是封装好的sql操作出了问题,那利用点就会非常多了。

admin\controls\album.class.php

写在后面

这个cms的洞呢都是很简单的洞,估计也有一些比较深入的我没有挖出来。类似MVC的审计一定要搞清楚路由,然后看全局文件定义的功能有没有疏漏,过滤有没有疏漏等,这个SQL注入还有一点疑问,后面补。

非常可惜的是前台没有审计出来什么利用点。

补-Xdebug + PHPstorm调试

刚好利用这个cms练习一下php是怎么动调的,这里用phpstorm+Xdebug。

Download Xdebug

Xdebug下载地址

要选择好对应的Xdebug版本,不然会出问题,不知道哪个版本点这里,复制对应的phpinfo信息即可判断,不过不支持php7以下,但是php对很多练习的cms都不友好,所以可以自行在官网寻找对应版本xdebug。

下载好以后放入php/ext/中,修改php/php.ini

重启web server,看phpinfo

phpStorm Setting

xdebug.remote_enable = On
xdebug.remote_host="127.0.0.1"
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.idekey="PHPSTORM"
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "d:\tmp"

上述代码追加到php.ini中。

端口与上述代码对应。

同样,内容与代码对应。

打开了project才会有server)

验证成功。

设置断点,点击开始监听。

可以看到单步跟进后才执行了phpinfo,如果debug按钮是灰色的,可以选择要调试的文件右键debug,这里呢是以进程充当调试的,当然也可以下载xdebug helper,这样可以以浏览器运行来调试。

Xdebug Helper

Leave a Reply

Your email address will not be published. Required fields are marked *

3 × one =