1. 背景
在Web应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行执行函数去处理。如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。同样调用系统命令处理,将命令执行漏洞。
2. RCE
2.1 RCE漏洞
RCE分为:代码执行、命令执行
- 代码执行【危害:执行脚本代码】
- 脚本:PHP、Java、Python
- 产生:Web源码、中间件平台等
- 检测
- 白盒:代码审计
- 黑盒:漏洞扫描、公开漏洞、手工看参数值及功能点
- 防御:敏感函数禁用、变量过滤或固定、WAF产品
- 命令执行【危害:执行系统命令】
- 系统:linux、windows
- 产生
- 检测:白盒、黑盒
- 防御:敏感函数禁用、变量过滤或固定、WAF产品
漏洞形成条件: 可控变量、漏洞函数
绕过
linux下绕过空格技巧:
${IFS}
$IFS$9
<
<>
{,}
$IFS在linux下表示分隔符,如果不加{}则bash会将IFS解释为一个变量名, 加一个{}就固定了变量名,$IFS$9后面之所以加个$是为了起到截断的作用 ;为什么要用$9呢,因为$9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串。 不仅\ $9可以使用,其他的数字也都可以正确绕过。
2.2 案例(公开漏洞)
平台:墨者学院
- 启动靶场环境
- 查找Webmin公开漏洞
- 使用BurpSuite抓包,并修改参数:
- 根据题目要求,key存放在根目录下,查找根目录:
- key.txt为答案,使用cat命令查看该文件: