首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

搭建属于你自己的Web集群式渗透系统

一个功能完善可以自定义的渗透系统可以帮助你省下很多的时间来思考目标站点的弱点,本文章就是教你怎么搭建一个Web入口的集群式渗透系统。

0×00 介绍

0×01 要求

0×02 结果展示

0×03 如何把前端和后端以及渗透脚本联系起来

0×04 利用到的框架和数据库的设计

0×05 如何修改一些开源的脚本到我的Web渗透系统来

0×06 总结与预告

0×00 介绍

不知道大家在平时渗透中,有没有觉得在自己电脑上进行渗透非常的不方便。需要费一部分的脑力进行窗口切换,结果查看,并且有时还要黏贴到下一个工具进行自动化渗透等等。而我们的电脑本身运算能力有限,带宽有限,稳定性有限,都不能最大程度的加快我们的渗透进程,所以在一个月前,就想搭建一个Web平台的集群渗透系统,把任务下发到服务器去做,我们只要等一段时间浏览下网页看看结果就好,最大程度解放双脑,而且速度和稳定性都有所提升。

目前项目已经成型,但是因为代码中包含很多我平时的渗透思想和一些自己的检测手段,所以暂时不能开源,不过我会教大家如何去搭建一个属于你自己Web端的任务分发式渗透系统,让大家都能解放自己的双手。

0×01 要求

既然是Web渗透平台,其中的难度肯定是有的,希望大家首先熟悉Python、Html、并且至少拥有一台自己的服务器。我会讲解如何搭建,从前端都后端到服务器脚本的部署,以及搭建中容易遇到不好解决的一些问题,如有在制作过程遇到坑请在下面留言,本人会一一解答。另外希望大家有实践动手能力。

0×02 结果展示

为了激起大家的搭建欲望和搭建兴趣,能够最终或大或小都搭建出一个自己的平台, 我先将自己搭建成功的Web系统给大家看一下,也为了能给大家感受一下到底是一个什么样的东西。

0×03 如何把前端和后端一些渗透脚本联系起来

现在都流行后端分离么,既然赶上了,那我们也把整体布局前后端分离开来。其实并不是什么很厉害的东西,就是后端提供Api返回数据库中的一些信息的JSON,然后前端通过Ajax来获取,这样前后端维护起来方便。可是这有一个问题,前端接收JSON信息显示,后端返回信息,那后端的信息怎么来了?后端是怎么获取到扫描器的结果的呢?很简单,在数据库中设置一个Flag,写一个python脚本检测这个Falg。一旦检查到Flag就开始执行扫描,并把扫描结果存在数据库,这样就可以Web前端,Web后端,Web扫描器所在的服务器统统解耦分开,维护起来更加的方便,定位问题起来更加的精准。这就是以前很多开源框架经常BB的解耦度高。(当然我没做到那些优秀开源框架那么厉害,我只是给大家描述一下我理解的这种思想,希望大家可以吸收)

0×04 利用到的框架

前端:VUE.js.

jQuery Bootstrap

后端:Python Flask

数据库:Mysql

可能有人就会说了,这么多,很多都只是听过没有用过啊。或者说,我一个搞Web渗透的,怎么会那么多前端框架,你就是来逗的吧。其实前端不管什么框架,什么技术,你可以去Github搜索一个已经将基本样式包装好的然后进行修修改改,遇到不会的马上去搜索,都可以摸索出来的。这里我给大家推荐一个在线通过拉拉小框框就可以做一个漂亮的前端工具,我刚开始入门就是在这里拉框框看源码一点一点学会的,各位可以先不用在意样式美丑与否,我们的目标就是做一个给自己平时使用的Web渗透系统而已 Bootstrap前端在线生成,再说的简单点,我们就是要一个能够写入和读取展示数据库都东西而已。

后端Python Flask是一个非常轻巧,侵略性很低的框架,只要你pip install flask安装好了,import进来即可。使用方法如图所示,这个框架也是我对比几个PythonWeb框架后最推荐大家选择的一个,因为轻巧,入门十分容易,而且功能已经够用。只要在定义的函数上方加上@api.route(‘/url’) 然后访问http://ip:port/url ,就会自动执行下方的函数,我们在用pymysql,进行数据库读取操作,最后把数据进行读取,用Flask自带的json解析函数返回,一个API接口就完成了。

我这里定义了6个API接口,分别是

(1)返回目前所有的项目目前的状态,JSON中包括每个项目的目前的执行与否状态,每个渗透检测选项目前的执行与否状态 如果执行完毕的话还有结果;

(2)添加项目 本质就是在Mysql添加数据;

(3)删除项目 本质就是在Mysql中删除项目;

(4)返回目前集群中的服务器 同1;

(5)添加服务器 同2

(6)删除集群中的服务器 同3

这些接口分别对应上方展示图的各个页面,其实就是一些与数据库有关的操作,所以数据库结构其实很重要,大家可以在建立数据库的时候也可以参考一下,这个布局也是我当前认为比较好的数据库布局,比较清晰。

数据库Mysql 这个大家肯定都熟悉吧,Sql注入的基础,之所以选择Mysql,还是因为轻巧。上图就是我的数据库的结构图。可以看到,一共7个表,其中project和server分别的表示项目状态信息和集群服务器状态信息的,其中project表中的url代表要渗透的网站,thread是渗透要执行的线程数量OS、Server、CMS、Domain、UrlPath代表是否执行该种渗透检测。而State则表示当前项目是否在执行,也是上文提到的FLAG。其他五个表分别是储存脚本执行后的一些关键渗透结果数据,我给每一个渗透选项都建立了一个表,这样结构比较清晰,采用project的id+脚本获取的信息为主键。使得每次集群服务器运行完毕某一个脚本后生成的数据直接存到数据库然后可以通过Python Flask提供的API接口让前端Ajax调用。

0×05 如何修改一些开源的脚本到我的Web渗透系统来

其实这个系统,最关键的东西还是集成大家一起牛逼的开源扫描器,和自己写的一些用起来比较顺手的扫描器整合起来,然后利用Web这个便捷的入口进行操作,那怎么样把别人的扫描器的数据结果存入数据库呢?首先,我在开源项目中使用了他人的脚本有lijiejie的二级域名爆破脚本和Sublist3r的二级域名搜索脚本(其设计原理是基于通过使用搜索引擎,从而对站点子域名进行列举。)都是开源的,网上可以搜到,可是怎么样把他们改造成我们的渗透利器的一部分呢?首先抓住一点,我们要把他们关键的输出数据修改成符合我们数据库结构的样子在输入到数据库。可以发现,基本上每个开源的渗透脚本都是会有把关键信息print输出出来的,所以我们的首要目标就是搜索print 看看是否有定义某一个信息输出类,如果有,就找到类包装的输出关键信息的那个函数,在函数下面吧输出的信息改造成你要想的数据,然后储存在一个事先定义的全局变量里,然后在设计一个函数把变量里的关键信息进行储存到数据库中即可。如果没有这个类,那就直接全局查找print,查看哪个print输出点输出的信息是我们要的,一般这些工具都是多线程或者多进程设计的,print关键信息的基本上就一句到二句。找到后就同上即可。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171225B0KUDI00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券