一、概述
本文分享对某个目标GetShell的全过程。
二、正文
1、目录遍历
先摸了一下,目标tp5.0.9,开了debug但是RCE都修了,随手访问一下runtime目录。
发现Apache配置错误,导致了目录遍历漏洞,
2、窃取会话ID
其中session文件夹保存着对应的session_id,如果有管理员登陆过的session_id,那么可以直接登陆后台,翻了一下,翻到一个。
3、构造Cookie登录后台
直接设置cookie:
PHPSESSID=omdp4xxxxxxxxxxxxxx
访问URL:
http://www.xxx.com/admin/index/index.html
成功登陆后台:
4、尝试修改文件上传配置
在系统参数可修改上传参数,添加php后缀
虽然可修改后缀,有上传接口,但是系统的默认上传文件组件为ueditor,不受后台参数所配置,无法上传webshell。
5、利用HTML源代码推测接口
不死心,分析了会网页源码接口:
由/admin/file/del.html 接口推测可能存在接口:/admin/file/upload.html
6、利用Debug信息构造请求
直接访问该路径,因为缺乏参数,导致程序报错,获取到上传关键源码信息。
看到关键点,允许上传的文件类型取于数据库,很有可能就是我们配置的地方。
构造文件上传的请求包:
7、Getshell
虽然由于创建缩略图过不了getimagesize导致报错,但是前面的php文件其实已经创建完成,在报错里面可以获取到路径,最终拿到webshell。
三、总结
目标站点使用了框架ThinkPHP5.0.9,但是RCE漏洞已经修复;凭借对ThinkPHP多年的理解通过访问Runtime目录获取到后台用户的sessionid,并成功登录后台;尝试通过修改文件上传配置,上传WEBSHELL,失败;通过其他接口推测出另外一个上传接口;通过Debug泄露的信息构造请求包,成功GETSHELL;
微信扫描二维码,关注我的公众号