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进行转义

  • 42
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值