记一次在服务器上wooyun搜索站的搭建

<–more–>

首先必须要感谢一下 hancool大哥的帮忙阿~~~ 至少帮我解决了不少麻烦

wooyun_pulic

wooyun公开漏洞以及知识库和搜索


依赖组件

python2.7和pip
mongodb
scrapy
flask 或者tornado( 个人建议用tornado 这个比较稳定 有能力的人可以自己写一下)
pymongo
Elasticsearch(搜索引擎,可选)

ubuntu下安装

1、安装python、pip、mongodb

1
sudo apt-get install python python-pip mongodb

2、安装scrapy

1
2
3
4
5
安装scrapy如果报错,则先apt-get安装下述依赖包,然后安装pip安装lxml后即可正常安装scrapy
sudo apt-get install libxml2-dev libxslt1-dev python-dev zlib1g-dev libevent-dev python-openssl

sudo pip install lxml
sudo pip install scrapy

3、安装pymongo和flask(或tornado)

1
2
sudo pip install flask pymongo
(sudo pip install tornado)

4、从github下载源码

1
git clone https://github.com/hanc00l/wooyun_public

爬虫

鉴于wooyun已经关了 其实这里的爬虫已经没有用了~ 所以详细步骤就不写了

搜索

漏洞搜索使用了Flask作为web server,bootstrap作为前端(8.12增加tornador web server,可配合nginx反向代理,支持高并发的应用)
启动web server :在flask目录下运行./app.py,默认端口是5000
启动Elassticsearch(如果已配置了Elasticsearch):在elasticsearch-2.3.4/bin目录下运行./elasticsearch -d (-d表示以后台方式运行)
搜索:在浏览器通过http://localhost:5000进行搜索漏洞,多个关键字可以用空格分开。
默认使用mongodb的数据库搜索,在进行全文搜索时比较慢,推荐安装使用Elasicsearch搜索引擎。

安装和配置Elasicsearch的方法(点我)

安装elasticsearch

1、安装JDK(或者JRE)

1
sudo apt-get install openjdk-7-jdk

2、下载elasticseach

1
2
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.4/elasticsearch-2.3.4.tar.gz
tar xvf elasticsearch-2.3.4.tar.gz

3、运行elasticsearch

1
2
cd elasticsearch-2.3.4/bin
./elasticsearch

4、测试一下,安装完成运行后elasticsearch会在9200端口上进行监听

1
2
3
4
5
6
7
8
9
10
11
12
13
curl -X GET http://localhost:9200
{
"name" : "Sebastian Shaw",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.4",
"build_hash" : "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f",
"build_timestamp" : "2016-06-30T11:24:31Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}

配置mongodb

1、编辑/etc/mongodb.conf,增加:

1
2
replSet=rs0 #这里是指定replSet的名字 
oplogSize=100 #这里是指定oplog表数据大小(太大了不支持)

重启动mongodb

1
sudo service mongodb restart

2,进入mongodb shell,初始化replicSet

1
2
mongo
rs.initiate( {"_id" : "rs0", "version" : 1, "members" : [ { "_id" : 0, "host" : "127.0.0.1:27017" } ]})

3,搭建好replicSet之后,退出mongo shell重新登录,提示符会变成:rs0:PRIMARY>,就可以退出Mongodb

安装中文分词插件elasticsearch-analysis-ik

1、从github下载编译好好的插件

1
2
3
4
cd ~  
sudo apt-get install unzip
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v1.9.4/elasticsearch-analysis-ik-1.9.4.zip
unzip elasticsearch-analysis-ik-1.9.4.zip

2、将插件复制到elasticsearch的plugins目录

1
cp -r elasticsearch-analysis-ik elasticsearch-2.3.4/plugins

3、修改elasticsearch.yml配置,定义插件配置

1
vi elasticsearch-2.3.4/config/elasticsearch.yml

在最后增加:

1
2
index.analysis.analyzer.ik.type : 'ik'
index.analysis.analyzer.default.type : 'ik'

4、退出并重启elasticsearch

1
2
elasticsearch-2.3.4/bin/elasticsearch -d
(-d表示以后台方式运行)

安装mongo-connector,将数据同步到elasticsearch

1
2
sudo pip install mongo-connector elastic2_doc_manager
sudo mongo-connector -m localhost:27017 -t localhost:9200 -d elastic2_doc_manager

显示Logging to mongo-connector.log.后将会把mongodb数据库的信息同步到elasticsearch中,完全同步完成估计需要30分钟左右,同步期间不能中断,否则可能导致elasticsearch与mongodb数据不一致。

在同步过程中,可能会报错:

1
2
3
OperationFailed: ConnectionTimeout caused by - ReadTimeoutError(HTTPConnectionPool(host=u'localhost', port=9200): Read timed out. (read timeout=10))
2016-08-04 17:24:53,372 [ERROR] mongo_connector.oplog_manager:633 - OplogThread: Failed during dump collection cannot recover! Collection(Database(MongoClient(u'127.0.0.1', 27017), u'local'), u'oplog.rs')
2016-08-04 17:24:54,371 [ERROR] mongo_connector.connector:304 - MongoConnector: OplogThread <OplogThread(Thread-7, started 140485117060864)> unexpectedly stopped! Shutting down

解决办法:
修改timeout值,从默认的10改为200

1
sudo vi /usr/local/lib/python2.7/dist-packages/mongo_connector/doc_managers/elastic2_doc_manager.py

1
2
3
4
5
将:
self.elastic = Elasticsearch(hosts=[url],**kwargs.get('clientOptions', {}))

修改为:
self.elastic = Elasticsearch(hosts=[url],timeout=200, **kwargs.get('clientOptions', {}))

启用全文搜索

1、安装elasticsearch-py

1
pip install elasticsearch

2、更新app.py

1
2
cd ~/wooyun_public
git pull

3、修改app.py

1
2
3
vi ~/wooyun_public/flask/app.py
修改:
SEARCH_BY_ES = 'auto'

为mongodb数据库创建索引

1
2
3
4
mongo
use wooyun
db.wooyun_list.ensureIndex({"datetime":1})
db.wooyun_drops.ensureIndex({"datetime":1})

Push内容

一共有两部分内容,一份内容在wooyun_public/flask/static
就是statci整个文件包含了大部分内容
还有一份内容在mongodb数据库里面~ 需要打包下来
打包命令是

1
mongodump -h 127.0.0.1 -o /home/wooyun/mongodb/

后面的地址是保存路径
还原数据库命令是

1
mongorestore   /home/wooyun/mongodb/

虚拟机下载地址

http://pan.baidu.com/s/1kVtY2rX 提取密码:5ik7 PS:这个是hancool前辈做的

其他

主要内容都是copy了是hancool前辈的的文章~
文章地址在github 如果想用虚拟机或者看更详细的内容 可以从去github看看https://github.com/hanc00l/wooyun_public