栏目导航: 首页 > 操作系统 > Linux > 内容

wooyun乌云爬虫及搜索系统架设教程

www.hx99.net    时间: 2016-01-18    阅读: 次     整理: 华西安全网

 QQ截图20160302172827.gif

QQ截图20160302172817.gif

演示:http://wy.hx99.net/ 

相关组件

Python2.7 pip

mongodb

scrapy

Flask

pymongo

 

1、部署环境,安装比较麻烦,需要一定的Linux基础,大概安装过程

安装Scrapy  

http://www.hx99.net/OS/Linux/201601/37095.html

安装MongoDB 2.6  

http://www.hx99.net/Data/Other/201603/25.html

Python添加MongoDB支持PyMongo 

http://www.hx99.net/Data/Other/201603/26.html

 

可能会遇到的报错

提示error: Setup script exited with error: command gcc’ failed with exit status 1错误,

测试很多次后终于总结如下:

yum install -y zlib-dev openssl-devel sqlite-devel bzip2-devel libxslt-devel libffi-devel

 

运行python *.py时提示报错:

ImportError: No module named PIL

解决方法:

wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz

tar zxvf Imaging-1.1.7.tar.gz 

cd Imaging-1.1.7

python setup.py install

然后运行脚本即正常

安装flask

pip install flask

 

2、下载wooyun搜索程序

cd /opt

git clone https://github.com/mysterymask/wooyun.git

grep -rl "192.168.1.133" /opt,搜索IP,将默认IP改成localhost

vim /opt/wooyun/wooyun/wooyun/settings.py

修改数据库连接文件

vim wooyun/wooyun/web/app/views_py/settings.py

到此,安装完成

 

3、开始采集,采集漏洞,不保存图片及html页

/opt/wooyun/wooyun

scrapy crawl -a local_store=false wooyun

采集知识库,不保存图片及html页

scrapy runspider -a local_store=false wooyun/spiders/wooyun_doc_spider.py

增量采集漏洞,不保存图片

scrapy crawl -a update=true -a local_store=false wooyun

 

4、自动化,开机自动启动flask web-server

vi /opt/start_flaskweb.sh

输入

#!/bin/bash

nohup python /opt/wooyun/wooyun/web/run.py >/dev/null 2>&1 &

chmod +x /opt/start_flaskweb.sh   //给执行权限

vi /etc/rc.local   //添加到启动文件

添加sh /opt/start_flaskweb.sh

这样就可以开机/重启自动 运行flask web

 

定时自动增量采集

vi /opt/update_scrapy.sh

输入

#! /bin/sh

export PATH=$PATH:/usr/local/bin

cd /opt/wooyun/wooyun

scrapy crawl -a update=true -a local_store=false wooyun

计划任务,每周一和四自动采集

crontab -e

0 2 * * 1 /opt/update_scrapy.sh >> /dev/null 2>&1

0 2 * * 4 /opt/update_scrapy.sh >> /dev/null 2>&1

 

5、其它细节修改

修改5000端口为80

vim /usr/local/lib/python2.7/site-packages/flask/app.py

vim /usr/local/lib/python2.7/site-packages/werkzeug/serving.py

或使用Nginx转发端口

http://www.hxsec.com/OS/Linux/201601/37098.html

注释掉vim /opt/wooyun/wooyun/wooyun/pipelines.py  第59行

没必要把所有文章内容、评论都采集了,后果是查询太慢 "page_content":item['html'] 

doc_list.html,知识库列表一些错误更改(方案为本地不保存html及图片):
vim /opt/wooyun/wooyun/web/app/templates/doc_list.html

68行 url = "/list?bug_key= 改为 url = "/doc_search?key_word=

46/47行 href="/list?bug_key=  改为 href="/doc_search?key_word=

45行 href="{{infor.html}}"

改为 href="http://drops.wooyun.org/tips/{{infor.bug_id}}"

48行 href="static/wooyun_res/htmls/{{infor.bug_id}}.html">

改为 href="http://drops.wooyun.org/tips/{{infor.bug_id}}" target='_blank'>

 

bug_list.html,漏洞列表面参考上面

48

45/46行 改为 bug_search?key_word=

6、详细介绍

1)爬取wooyun公开漏洞

按路径建立文件夹:wooyun/web/app/static/wooyun_res/htmlswooyun/web/app/static/wooyun_res/images

wooyun/下运行默认命令:scrapy crawl wooyun,完成所有数据的爬取。有三个参数可控制爬取方式。

 

-a page_max:控制爬取页数。0:默认值,表示全部爬取;num:大于0,表示爬取页数。eg:scrapy crawl -a page_max=2 wooyun #爬取两页数据(即第一页和第二页)

-a local_store:控制是否将页面及图片下载至本地。true:默认值,下载页面和图片至本地保存;false:不下载页面和图片,只保存标题等信息及相关链接。 eg:scrapy crawl -a local_store=true wooyun

-a update:控制是否为增量更新爬取。false:默认值,非增量更新爬取(全部爬取);ture:增量爬取,从之前的爬取位置起从后向前爬取。eg:scrapy crawl -a update=true wooyun

 

爬虫参数保存位置为:wooyun/wooyun/spiders/settings.py,可根据需要修改

web参数保存位置为:wooyun/web/app/views_py/settings.py

 

2)爬取乌云知识库

按路径建立文件夹:wooyun/web/app/static/wooyun_res/htmlswooyun/web/app/static/wooyun_res/images

wooyuh/下运行默认命令:scrapy runspider wooyun/spiders/wooyun_doc_spider.py,完成所有数据爬取。有两个参数控制爬取方式。

-a page_max:控制爬取页数。0:默认值,表示全部爬取;num:大于0,表示爬取页数。eg:scrapy runspider -a page_max=2 wooyun/spiders/wooyun_doc_spider.py #爬取两页数据(即第一页和第二页)

-a local_store:控制是否将页面及图片下载至本地。true:默认值,下载页面和图片至本地保存;false:不下载页面和图片,只保存标题等信息及相关链接。 eg:scrapy runspider -a local_store=true wooyun/spiders/wooyun_doc_spider.py

由于页面没有知识库文章总量参数,因此无法通过数量判断更新量,更新时需手动输入参数。

 

3)web信息搜索

web界面采用Flask框架作为web服务器,bootstrap作为前端

启动web server :在web目录下运行python run.py,默认端口是5000

搜索:在浏览器通过http://localhost:5000进行搜索漏洞,多个关键字可以用空格分开。

4)其它

本程序只用于技术研究和个人使用,程序组件均为开源程序,漏洞来源于乌云公开漏洞,版权归wooyun.org

5)mongoDB数据库用法:

进入数据库mongo 

查看库show dbs

切换库 use wooyun

删除数据库db.dropDatabase()

切换库后,可以删除当前库,如果采集有问题,可以删除库重采集

查看表

show collections

删除表内数据

db.wooyun_bug.remove({})

db.wooyun_doc.remove({})

统计

db.wooyun_bug.count()

 备份/导出

/usr/bin/mongodump -d wooyun -o/var/lib/mongo/wooyun_bak

恢复/导入备份

mongo

use wooyun 

db.addUser ("admin","admin888"); 

/usr/bin/mongorestore -d wooyun  --port 27017  /var/lib/mongo/wy 

 

启动mongo

/usr/bin/mongod --dbpath /var/lib/mongo

查看日志

tail -50 /var/log/mongodb/mongod.log 

自启

vim /opt/start_mongo.sh

#!/bin/bash

nohup /usr/bin/mongod --dbpath /var/lib/mongo >/dev/null 2>&1 &

 

vi /etc/rc.local

sh /opt/start_mongo.sh

本文来源:华西安全网[http://www.hx99.net]
发表评论】【告诉QQ好友】【错误报告】【加入收藏】【关闭