前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为被动扫描器量身打造一款爬虫 - LSpider

为被动扫描器量身打造一款爬虫 - LSpider

作者头像
Gamma实验室
发布2021-02-12 13:49:11
8650
发布2021-02-12 13:49:11
举报
文章被收录于专栏:Gamma安全实验室Gamma安全实验室

作者:LoRexxar'@知道创宇404实验室

日期:2021年1月28日

github开源地址:

代码语言:javascript
复制
https://github.com/knownsec/LSpider

什么是LSpider?

一款为被动扫描器而生的前端爬虫~

由Chrome Headless、LSpider主控、Mysql数据库、RabbitMQ、被动扫描器5部分组合而成。

(1) 建立在Chrome Headless基础上,将模拟点击和触发事件作为核心原理,通过设置代理将流量导出到被动扫描器。

(2) 通过内置任务+子域名api来进行发散式的爬取,目的经可能的触发对应目标域的流量。

(3) 通过RabbitMQ来进行任务管理,支持大量线程同时任务。

(4) 智能填充表单,提交表单等。

(5) 通过一些方式智能判断登录框,并反馈给使用者,使用者可以通过添加cookie的方式来完成登录。

(6) 定制了相应的Webhook接口,以供Webhook统计发送到微信。

(7) 内置了Hackerone、bugcrowd爬虫,提供账号的情况下可以一键获取某个目标的所有范围。

为什么选择LSpider?

LSpider是专门为被动扫描器定制的爬虫,许多功能都是为被动扫描器而服务的。

建立在RabbitMQ的任务管理系统相当稳定,可以长期在无人监管的情况下进行发散式的爬取。

LSpider的最佳实践是什么?

服务器1(2c4g以上): Nginx + Mysql + Mysql管理界面(phpmyadmin)

将被动扫描器的输出位置设置为web路径下,这样可以通过Web同时管理结果以及任务。

LSpider部署5线程以上,设置代理连接被动扫描器(被动扫描器可以设置专门的漏扫代理)

服务器2(非必要,但如果部署在服务器1,那么就需要更好的配置):RabbitMQ

还有什么问题?

LSpider从设计之初是为了配合像xray这种被动扫描器而诞生的,但可惜的是,在工具发展的过程中,深刻认识到爬虫是无法和被动扫描器拆分开来的。

强行将应该在被动扫描器实现的功能在爬虫端实现简直是舍本逐末,所以我们发起了另一个被动扫描器项目,如果有机会,后续还会开源出来给大家。

设计思路?

详情请阅读:

代码语言:javascript
复制
https://lorexxar.cn/2021/01/28/lspider-design/

登录推送

每时推送+漏洞推送

Usage

安装与使用参考:

代码语言:javascript
复制
https://github.com/knownsec/LSpider/blob/master/docs/init.md

你可以通过下面的命令来测试是否安装成功

代码语言:javascript
复制
python3 manage.py SpiderCoreBackendStart --test

值得注意的是,以下脚本可能会涉及到项目路径影响,使用前请修改相应的配置

启动LSpider webhook(默认端口2062)

代码语言:javascript
复制
./lspider_webhook.sh

启动LSpider

代码语言:javascript
复制
./lspider_start.sh

完全关闭LSpider

代码语言:javascript
复制
./lspider_stop.sh

启动被动扫描器

代码语言:javascript
复制
./xray.sh

一些关键的配置

Mysql配置

值得注意的是,如果django版本变化,这部分配置可能发生变化

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'LSpider',
        'USER': 'root',
        'PASSWORD': 'lspider123!@#',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': 'SET default_storage_engine=INNODB;SET NAMES utf8mb4',
            'charset': 'utf8mb4',
        }
    }
}

Chrome访问到的文件储存位置已废弃,默认下载到/dev/null

代码语言:javascript
复制
CHROME_DOWNLOAD_PATH = '/tmp/lspider'

LIMIT_DEEP为爬虫深度,即从目标开始直到第几层不再继续 THREADPOOL_MAX_THREAD_NUM 线程池数量

代码语言:javascript
复制
LIMIT_DEEP = 2
THREADPOOL_MAX_THREAD_NUM = 5

RabbitMQ配置,值得注意的是,建议使用RabbitMQ,因为基于队列的任务管理非常容易爆内存,无法解决。

代码语言:javascript
复制
# rabbitmq
RABBITMQ_IP = ""
RABBITMQ_PORT = ""
RABBITMQ_USERNAME = ""
RABBITMQ_PASSWORD = ""
RABBITMQ_VHOST = ""

# wheather open rabbitmq
IS_OPEN_RABBITMQ = True

Chrome Headless配置,将被动扫描器的代理填写在这里,建议开启

代码语言:javascript
复制
# proxy for chrome headless
IS_OPEN_CHROME_PROXY = True
CHROME_PROXY = '127.0.0.1:7777'

Hackerone 账号配置,只有配置完成之后才可以使用Hackerone爬虫

代码语言:javascript
复制
# for hackerone
HACKERONE_USERNAME = ""
HACKERONE_PASSWORD = ""

是否开启微信推送(配合webhook),相关配置是推送到企业微信小程序的。

其中,debug为传送一些debug信息的配置,WECHAT_NOTICE为传输结果的配置。

其中各个配置可以参考企业微信小程序处id

代码语言:javascript
复制
# loghander
LOGHANDER_IS_OPEN_WEIXIN = False

# for weixin
WECHAT_NOTICE = {
    'corp_id': ' ',
    'secret': ' ',
    'agent_id': ' ',
}

WECHAT_NOTICE_DEBUG = {
    'corp_id': ' ',
    'secret': ' ',
    'agent_id': ' ',
}

如果开启这个配置,Chrome webdriver 会以非headless的模式启动,便于调试环境

代码语言:javascript
复制
# for test 
IS_TEST_ENVIRONMENT = False

如何配置扫描任务 以及 其他的配置相关

其中包含了如何配置扫描任务、鉴权信息、webhook。

值得注意的是,文中提到的Cookie配置,格式为浏览器请求包复制即可。

如何配置扫描任务以及其他的配置相关,详情请参考:

代码语言:javascript
复制
https://github.com/knownsec/LSpider/blob/master/docs/manage.md

使用内置的hackerone、bugcrowd爬虫获取目标

使用hackerone爬虫,你需要首先配置好hackerone账号

代码语言:javascript
复制
python3 .\manage.py HackeroneSpider {appname}

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Gamma安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是LSpider?
    • 为什么选择LSpider?
      • LSpider的最佳实践是什么?
        • 还有什么问题?
          • 设计思路?
          • Usage
          • 一些关键的配置
          • 如何配置扫描任务 以及 其他的配置相关
          • 使用内置的hackerone、bugcrowd爬虫获取目标
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档