昔日

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

M0L0K's Blog—关注网络安全与渗透测试~:

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


评论

热度(9)