wooyun乌云爬虫及搜索系统架设教程
wooyun爬虫及搜索
wooyun.org bug search
1.相关组件
Python (建议2.7) pip
mongodb
scrapy
Flask
pymongo
1、安新环境,安装比较麻烦,需要一定的Linux基础,大概安装过程
安装Scrapy
https://www.hx99.net/OS/Linux/201601/37095.html
安装MongoDB 2.6
https://blog.csdn.net/chszs/article/details/23392487
为Python添加MongoDB支持PyMongo
https://my.oschina.net/leezhen/blog/207265
可能会遇到的报错
提示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 https://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转发端口
https://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="https://drops.wooyun.org/tips/{{infor.bug_id}}"
48行 href="static/wooyun_res/htmls/{{infor.bug_id}}.html">
改为 href="https://drops.wooyun.org/tips/{{infor.bug_id}}" target='_blank'>
bug_list.html,漏洞列表面参考上面
48行
45/46行 改为 bug_search?key_word=
mongoDB数据库用法:
进入数据库mongo
查看库show dbs
切换库 use wooyun
删除数据库db.dropDatabase()
切换库后,可以删除当前库,如果采集有问题,可以删除库重采集
查看表
show collections
删除表内数据
db.wooyun_bug.remove({})
db.wooyun_doc.remove({})
统计
db.wooyun_bug.count()
6、详细介绍
1)、爬取wooyun公开漏洞
按路径建立文件夹:wooyun/web/app/static/wooyun_res/htmls、wooyun/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/htmls、wooyun/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
搜索:在浏览器通过https://localhost:5000进行搜索漏洞,多个关键字可以用空格分开。
4)、其它
本程序只用于技术研究和个人使用,程序组件均为开源程序,漏洞来源于乌云公开漏洞,版权归wooyun.org