RCE漏洞简介

RCE漏洞基本概念

命令执行漏洞是指攻击者可以随意执行系统命令,氛围远程代码执行和系统命令执行,黑客可以直接在web应用中执行系统命令,从而获取敏感信息或者拿下shell权限。

程序应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell exec、passthru、popen、proc _popen等,当用户能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击

由于开发人员编写源码时,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句,并提交服务端执行

命令注入攻击中,Web服务器没有过滤类似system、eval和exec等函数,是该漏洞攻击成功的主要原因。

利用条件:

  • 应该调用执行系统命令的函数

  • 将用户输入作为系统命令的参数拼接到了命令行中

  • 没有对用户输入进行过滤或过滤不严

漏洞产生的原因

一、代码层过滤不严

  • 商业应用的一些核心代码封装在二进制文件中,在web应用中通过system函数来调用: system(“/bin/program --arg $arg”);

二、系统的漏洞造成命令注入

  • bash破壳漏洞(CVE-2014-6271)

三、调用的第三方组件存在代码执行漏洞

  • 如wordPress中用来处理图片的imageMagick组件

  • JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等)

  • ThinkPHP命令执行

php命令执行

Windown 命令连接符

一、&
  • 无论左边是false还是true,右边都执行,按顺序执行

二、&&
  • 具有短路效果,左边是false,右边不执行

三、|
  • 表示A命令语句的输出,作为B命令语句的输入执行。当A为false的时候将不会执

四、||
  • AIIB,表示A命令语句执行失败,然后才执行B命令语句。

Linux 命令连接符

一、&
  • 在后台运行

二、;
  • 分号(;)可以进行多条命令的无关联执行,每一条执行结果不会影响其他命令的执行

三、&&
  • 按照顺序执行,如果前面应该正确就会执行下一个,如果错误那么就不会执行下一个

四、||
  • 如果||左边的命令执行失败(返回1表示失败),才执行|右边的命令,否则不执行右边的命令,具有短路功能。

五、()
  • 如果想执行几个命令,则需要用命令分隔符分号隔开每个命令,并使用圆括号()把所有命令组合起来

rce 绕过

在执行命令的时候可能会过滤空格,或一些命令,这时候就需要绕过

一、空格过滤

1、${IFS}

  • cat${IFS}flag.txt

2、重定向符<>

  • cat<>flag.txt

3、%09(需要PHP环境)

  • cat%09flag.txt

二、黑名单绕过
  • 拼接

    • A=c;b=at;c=fla;d=g.txt;$a$b $c$d

  • base64编码

    • echo 'Y2F0IGZsYWcudHh0==' |base64 -d

  • 单引号、双引号

    • cat ' 't fla " " g.txt

  • 反斜线

    • cat\t fla \g.txt

  • $1,$2等和 $@

三、读文件绕过

当cat命令被拦截时,可以使用其它的一些命令

  • More

  • Less

  • Head

  • Tac

  • Tail

  • Nl

  • 0d

  • Vi

  • Vim

  • Sort

  • Uniq

  • File -f

四、通配符绕过
  • ?字符代表单个字符

  • *字符代表任意数量的字符

  • [...]匹配方括号之中的任意一个字符

  • #存在文件a.txt和 b.txt

  • $ ls [ab].txt

  • a.txt b.txt

  • $ Is *[ab].txt

  • ab.txt a.txt b.txt

五、内联执行绕过
  • 命令和$(命令)都是执行命令的方式

  • 反引号是命令替换,命令替换是指Shell可以先执行中的命令,将输出结果暂时保存在适当的地方输出。语法:command

漏洞防御

  • 尽量少使用执行命令函数或者禁用disable_functions(php.ini)

  • 在进入执行命令的函数之前,对参数进行过滤,对敏感字符进行转义

  • 参数值尽量使用引号包括,并在拼接前调用addslashe进行转义

相关推荐

  1. RCE漏洞简介

    2024-06-06 02:38:06       28 阅读
  2. RCE漏洞简单总结

    2024-06-06 02:38:06       31 阅读
  3. <span style='color:red;'>RCE</span><span style='color:red;'>漏洞</span>

    RCE漏洞

    2024-06-06 02:38:06      43 阅读
  4. JeecgBoot jmreport/queryFieldBySql RCE漏洞复现

    2024-06-06 02:38:06       65 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 02:38:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 02:38:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 02:38:06       87 阅读
  4. Python语言-面向对象

    2024-06-06 02:38:06       96 阅读

热门阅读

  1. 昵称生成器

    2024-06-06 02:38:06       29 阅读
  2. python之collections

    2024-06-06 02:38:06       26 阅读
  3. ASP.NET Core 增加后台定时托管任务

    2024-06-06 02:38:06       29 阅读
  4. 阿里云计算之Linux目录学习笔记(三)

    2024-06-06 02:38:06       19 阅读
  5. python多线程

    2024-06-06 02:38:06       42 阅读
  6. Redis一键巡检脚本

    2024-06-06 02:38:06       32 阅读
  7. MySQL 连接池在 Python 中的深度探索与实践

    2024-06-06 02:38:06       33 阅读