如何优雅的反击扫描你网站的黑客
苏州市亿韵商务信息有限公司   2019-08-28 06:08:12 作者:陈清蓉

  根据作者的描述,问题是出现在AWVS 10 的一个任务调度的API上。

  在AWVS 10 被安装后,系统会默认安装一个叫做“AcuWVSSchedulerv10”的自启动服务,这个服务是跑在system权限下的。他会监听本地的8183端口,用户可以通过它直接调用接口来给awvs添加新的扫描任务。

  如下图所示,通过访问http://127.0.0.1:8183即可完成扫描任务的添加删除和进度查看。

  在添加任务时,参数里有一项为reporttemplate ,他的作用是选择扫描结束生成报告时所用的模板,研究发现这个参数会被带入WVS的命令行执行。由于系统没有对用户的输入做检查,导致我们可以通过reporttemplate带入任意的参数,形成了命令注入。

  通过查看awvs的官方文档

  发现wvs命令行下有一个参数为/run,通过它可以执行系统任意命令。因此我们可以使用这个参数获得一个system权限的命令执行。

  作者给出的poc如下:

  虽然这个api没有做任何的身份鉴权和访问控制,但是由于只是监听了127.0.0.1的端口,他人无法直接访问,所以危害程度降低了很多,作者也只是把它定义为一个权限提升漏洞。

  但是真的只能用来本地提权吗?

  进一步利用——优雅的反击

  作者给出的poc直接向接口发送添加任务的请求,因此可以看出其实这个漏洞是可以通过CSRF主动触发的。于是一个邪恶的想法诞生了,我们可不可以在网页中嵌入包含CSRF利用的js,当有人通过AWVS扫描我们的网站,触发这个js,直接执行命令反击回去呢?

  感觉有点异想天开的味道,因为扫描器应该只是做http请求的发送与接收,不会去执行到页面里的js ,但是想起我的偶像mickey说过的话,梦想还是要有的,万一实现了呢?

  谨记偶像的教诲,我先搭环境试了下,awvs扫描本地的一个页面,页面里包含如下的js

  令我吃惊的是,在awvs扫描网站之后,服务器日志确实收到了post请求,页面的js被执行了。

  看来也许真的可以反击了?

  我把作者给出的poc改写为通过js提交

  当扫描器扫描我们的网站时,浏览器会向其本地的接口发送请求添加一个立刻执行的扫描任务,然后触发漏洞执行shutdown –r –t 0,让对方机器重启。

  随后我使用awvs扫描目标网站,机器被成功重启。当然,想给攻击者种个马也是可以的=。=