将渗透测试的过程记录在Elasticsearch中

渗透测试行业正在快速发展,同时也在不断创新。更多的工具被创造出,同时解决了很多问题,近年来,许多人习惯了在渗透测试工作中使用Elasticsearch,最主要的便是攻击Web应用程序。

越来越多的公司和网站正在开启众测计划。如果你有其他人所没有的新工具,那么你可以从众测中赚更多的钱,这篇文章将教你如何使用新工具与Elasticsearch给你带来优势

使用Elasticsearch破解Web应用程序的第一个例子就是发布了Burp Suite插件,允许您登陆到Elasticsearch。您将需要Burp Suit pro安装此插件,插件可以从BApp安装,该插件名称为“Report To Elastic Search”

1

您可以通过在自己机器上安装Elasticsearch来使用此插件,不过我并不建议这样做,或者您可以使用远程服务器运行Elasticsearch。您也可以使用托管的Elasticsearch服务,例如Qbox,托管是最简单省时的。

默认情况下,Elasticsearch插件的报告保存位置被配置到连接到默认Elasticsearch端口上的Localhost。我们可以使用SSH本地转发使用插件模拟远程Elasticsearch在本地运营,使用以下命令使您的远程Elasticsearch在本地计算机Localhost:9200可用,在这个例子中,172.20.0.203是我们的Elasticsearch服务器,显然不在我的本地机器上

$ ssh -f -N -L 9200:127.0.0.1:9200 user@172.20.0.203

现在我们可以向Elasticsearch发送数据,或者只是在远程机器上运行的Elasticsearch进行交互,就想它在本地运营一样。例如,在我的本地机器上,我可以列出我的Elasticsearch集群上的索引:

$ curl localhost:9200/_cat/indices?pretty?true

下面的截图显示了在本地机器上运行curl的输出:

2

如果你没有Burp Suit Pro,还有一个类似的插件,你可以在Burp Suit Free中安装和使用。使用这个插件最难的部分就是安装了。这个插件似乎还在开发中。与以前的插件一样,您可以使Elasticsearch和Kibana在远程服务器运行,只需要用ssh本地转发来访问它们。插件可以在这里找到插件是ElastcBurp;文件在这里这是您加载到Burp作为插件的文件,Repo中的其他文件也可以在本地机器使用,但是只有那个文件被作为插件。

你需要下载Python独立的Jar文件和Burp Suit,同时还需要将路径添加到您的Python库安装的目录。在我的机器上是:/usr/local/lib/python2.7/dist-packages/。设置方面可以根据下图操作

3

在你的电脑上执行clone并进入到它的目录

$ git clone https://github.com/thomaspatzke/WASE
$ cd WASE/

ElasticBurp插件和其他工具与有各种依赖关系。需要安装它们。从WASE目录复制所有python2代码到那个目录。这些文件需要被复制到你的python存储库路径:

$ sudo cp  *.py /usr/local/lib/python2.7/dist-packages/

正确的应用权限:

$ sudo chown root:staff/usr/local/lib/python2.7/dist-packages/*.py

安装其他依赖包:

$ sudo pip install six tzlocal urllib3 elasticsearch elasticsearch_dsl

WASE项目包含不同的工具,所以尽量不要混淆。Wase/WaseQuery.py是用Python3编写的,所以你必须安装python3依赖以使用它:

$ sudo pip3 install elasticsearch_dsl elasticsearch_dsl

在WASE目录中有两个目录被链接到其他文件,你可以删除它们。

$ rm -rf elasticsearch/ 
$ rm -rf elasticsearch_dsl/

如果你安装完成插件,那接下来就是如何使用该插件了。它会在Elasticsearch中创建一个index。

我建议您在Kibana和Elasticsearch运行的端口执行ssh本地转发,在启动插件之前还需要在远程服务器上启动Elasticsearch和Kibana服务。

在本地计算机上运行此命令以启用ssh本地转发:

$ ssh -f -N -L 5601:127.0.0.1:5601 timo@172.20.0.203
		 $ ssh -f -N -L 9200:127.0.0.1:9200 timo@172.20.0.203

现在你可以直接启动burp suit,在启动后需要开启127.0.0.1:8080代理

现在要重新在burp suit的扩展插件中启用它

4

如果一切顺利,那么你应该看到这样的:

5

在Burp Suite中的ElasticBurp选项卡中可以重新配置索引,我将我的索引名称更改为:wase-burp-bug-bounty。

6用Burp和浏览器的组合浏览您的指定目标。您可以右键单击一条响应,并选择“Add to ElasticSearch Index”,使该响应在Elasticsearch中可搜索:

7

这样,您可以搜索特定关键字的响应,例如:<“error”/code>。也许还有一些你想搜索的东西,比如html中的注释。这是你如何使用Kibana在索引中搜索某些内容。

您可以在Kibana中创建索引。如下图:

8

我们现在已经在Kibana搜索到我们的索引:

9

现在您可以搜索一个关键字,例如我们通过搜索关键字来搜索在用户浏览器中设置Cookie的响应Cookie:

10

有一些渗透测试过程中需要用使用到枚举,这绝对值得记录到elasticsearch。这对于后期整理以及在渗透测试期间快速搜索和参考都是很有帮助的。

例如查找子域。有许多不同的工具可以使用,其中之一像knock也被称为knockpy。您可以安装它:

		$ mkdir /opt/pentest
		$ chown `whoami`:`whoami` /opt/pentest/
		$ cd /opt/pentest
		$ git clone https://github.com/guelfoweb/knock
		$ cd knock
		$ sudo python setup.py install

现在我们在yahoo.com运行knock来演示,

		python knockpy/knockpy.py yahoo.com
		Target information yahoo.com
		Ip Address        Target Name
		----------        -----------
		206.190.36.45     yahoo.com
		98.139.183.24     yahoo.com
		98.138.253.109    yahoo.com

knock会保存CSV格式的报告,我们可以使用Logstash将其索引到Elasticsearch中,以下是保存的CSV文件

		$ head yahoo_com_1475932483.72.csv 
		target,ip address,domain name,type
		about.yahoo.com,217.12.1.156,about.yahoo.com,alias
		about.yahoo.com,217.12.1.155,fd-geoycpi-uno.gycpi.b.yahoodns.net,host
		about.yahoo.com,66.196.66.213,fd-geoycpi-uno.gycpi.b.yahoodns.net,host
		about.yahoo.com,66.196.66.212,fd-geoycpi-uno.gycpi.b.yahoodns.net,host
		about.yahoo.com,217.12.1.156,fd-geoycpi-uno.gycpi.b.yahoodns.net,host
		ad.yahoo.com,204.71.200.45,ad.yahoo.com,alias
		ad.yahoo.com,204.71.200.45,a5.yahoo.com,host
		adkit.yahoo.com,217.12.13.41,adkit.yahoo.com,alias
		adkit.yahoo.com,217.12.13.40,adspecs.yahoo.com,alias

就像你看到的一样,文件结构很简单,我们可以轻易的将它索引至Logstash,为了使事情更容易,我们可以使用PUT在Sense中创建一个映射文件

	PUT knockpy
		{	
			"mappings": {
				"logs": {
				"properties": {
					"@timestamp": {
					"type": "date",
					"format": "strict_date_optional_time||epoch_millis"
					},
					"@version": {
					"type": "string"
					},
					"address": {
					"type": "string",
						"index":    "not_analyzed"
					},
					"domain name": {
					"type": "string",
						"index":    "not_analyzed"
					},
					"host": {
					"type": "string",
						"index":    "not_analyzed"
					},
					"ip": {
					"type": "string",
						"index":    "not_analyzed"
					},
					"message": {
					"type": "string",
						"index":    "not_analyzed"
					},
					"path": {
					"type": "string",
						"index":    "not_analyzed"
					},
					"target": {
					"type": "string",
						"index":    "not_analyzed"
					}
				}
			}
			}
		}

11

接下来我们可以用Logstash将我们的数据索引至Elasticsearch:

		input {
		 file {
		  path => "/opt/pentest/knock/*.csv"
		  start_position => "beginning"
		  sincedb_path => "/dev/null"
		 }
		}
		filter {
		 csv {
			separator => ","
			columns => ["target","ip","address","domain name","type"]
		 }
		}
		output {
		  elasticsearch {
			hosts => "http://localhost:9200"
			 index => "knockpy"
		 }
		stdout {}
		}

我们可以通过以下命令运行配置

$ /opt/logstash/bin/logstash -f knockpy.conf

12

结论

这只是一个将两个比较出名的渗透测试工具结果索引到Elasticsearch中展示。你也可以索引更多其他渗透测试工具的结果。通过这个Elasticsearch,我们可以使渗透测试工作更顺利,也可以找到我们可能错过的事情。

 

*来源:Qbox,MottoIN小编编译发布, 转载请注明来自MottoIN

原创文章,作者:Jarry,如若转载,请注明出处:http://www.mottoin.com/article/testing/98644.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code