【文末有福利,一定要看完哦】
0x01 漏洞扫描工具现状
为什么先说漏扫工具?作者本人开发了多年小型安全工具,遇到的最大瓶颈是由于现在Web开发技术逐渐从传统的mvc架构转向前后端分离模式,后端将功能抽象出Api接口供前端调用。
悄悄告诉各位,棱镜X已开源:https://github.com/yqcs/prismx
前端项目用的最多的是基于Nodejs开发的框架React和vue、Angular,这类框架有个共同特点:只有一个index.html静态页面,其他组件如弹框等是由js渲染出来的,然而在传统的蜘蛛爬虫中无法解析js,此时传统蜘蛛获取到的页面内容如下:
使用浏览器访问页面并解析js后,会将动态生成的内容渲染到id为root的div中呈现给用户,切换页面则是渲染对应路由的页面内容。
此情况导致传统爬虫无法正确获取到动态渲染页面的表单以及接口地址,从而较难执行网站目录爬取、SQL注入、XSS等漏洞的检测。
针对此种情况,很多个人开发的漏洞扫描器跟进了优化,加入了无头浏览器进行页面渲染,从而解决上述问题。
什么是无头浏览器?无头浏览器(Headless Browser)是指一种没有图形用户界面(GUI)的、可以在后台运行的网页浏览器,在python、golang等语言中均有成熟的框架可以调用。
0x02 漏扫爬虫反制
如何反制?周末在研究蜜罐系统(效果在文末),期间在找接口时突然想到,是否可以结合云厂商的服务器元数据metadata接口从而获取服务器各项数据?metadata数据中存在很多敏感信息,包括ram角色的临时凭证,权限较高时可直接接管服务器。ram角色个人用户可能一般不会开启,对于云产品权限管理细粒度较为精细的企业很多都会使用。这就是为什么反制的是云服务器的原因。不知道metadata是什么东西的看下文!
look in my eyes www.cnblogs.com/zpchcbd/p/17839539.html
介绍好了,原理也很简单,就是在蜜罐服务器写个js,访问接口http://100.100.100.200/latest/meta-data ,然后获取到结果后将结果发送到蜜罐后端接口。
我的攻击服务器是Aliyun,以该厂商为例,由于没搞明白怎么给服务器赋予ram管理权限,这里就不获取临时凭证,仅读取基本信息做演示。先安装无头浏览器 wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
安装好后在蜜罐服务器使用python启个web服务,网页内容如下。
ok,web服务器搭建好后开始编写测试代码,模拟黑客的扫描工具。语言无所谓,我这边使用golang开发,注意给无头浏览器设置个参数,禁用安全检查,否则无法访问。
disable-web-security=true
设置为true后通过网络连接日志可看到元数据接口成功被访问。
蜜罐的接口接收到服务器提交的内容,证明此路线没问题。
接下来开始尝试对黑客工具进行反制,其实反制范围挺广,只要是使用无头浏览器技术的基本都可以测试。Github开源的相关项目挺多,以go为例,查看禁用安全检查的项目
其中热门项目之一Crawlergo作为爬虫引擎在国内也被各位大佬花样使用
找一个调用Crawlergo项目且start比较多的工具wscan,经过一番调试,将前端代码数据的提交方式做个小小的改动,启动爬虫扫描后成功触发,读取到服务器元数据。
上面仅使用自己编写的脚本和一个开源项目做演示,有些人可能会问其他高级点的漏扫能这样操作吗,原理就很简单,只要对方的爬虫支持解析js,并且禁用安全访问就行。可以尝试让私有化部署的AI调用文档阅读功能,让它自己把元数据或内网其他信息吐出来。
开发技术比较好的“脚本老子”就比较心塞了,因为很多都是他们在使用这种爬虫🤣🤣
0x03 号外号外!
到了各位最爱的广告环节!!我在周末实现了一个简单的web蜜罐,部署后会收集攻击者的一些设备特征、精准经纬度、各平台登录后的账号信息等,有兴趣合作开发的直接D我vx prismx-io。下面是平台功能演示,获取到我的企鹅账号、微博uid:
Ad第二弹,Prism X / 棱镜X · 单兵渗透平台 专业版,支持私有化定制了,有需求的直接联系哦。
原文始发于微信公众号(遮天实验室):反制 | 让你再扫我?看我无感反制漏扫VPS
评论