Py学习  »  Python

黑客你好,请使用Python编写一个渗透测试探测器

马哥Linux运维 • 6 年前 • 519 次点击  


本篇将会涉及:

  • 资源探测

  • 一个有用的字典资源

  • 第一个暴力探测器


资源探测


在渗透测试中,资源探测属于一个非常必要的阶段,其主要功能包括资源映射和收集信息等,通常来讲会有三种主要类型:

  • 字典攻击

  • 暴力破解

  • 模糊测试


字典攻击是指黑客在工作过程中,通过预先设置好的字典文件来进行密码或者密钥的破解工作,这个过程通常不是漫无目的的,而是需要针对性的对于字典文件里的一切可能组合进行尝试。

暴力破解也即所谓穷举法,通过预先设定的好的组合方式,依次进行列举,将所有可能的密码挨个尝试,直到发现可用的口令位置。

模糊测试与前两项有较大差别,并非为了密码或口令的破解工作,通常情况下是通过某些规则之外的输入来迫使目标程序发生异常来找到目标系统漏洞的方法。


资源探测的作用


通过资源探测,我们可以在目标系统中发现文件、目录、活动、服务还有相关的参数,为下一步的行动提供信息参考。


一个开源的模糊测试数据库


https://github.com/fuzzdb-project/fuzzdb 是一个开源的漏洞注入和资源发现的原语字典。其提供了攻击、资源发现和响应分析的资源。

 

第一个暴力探测器


接下来,我们需要把上面介绍的数据库现在下来以便后续使用,你可以自行选择下载方式:


这个数据库将会在我们之后的工作中担任“字典”的工作,来辅助我们完成对网站的探测。现在我们需要新建一个 .py 文件,在这个文件中编写探测器。


首先,引入相关的模块:


  • requests用于请求目标站点;

  • threading用于启用多线程;

  • sys用于解析命令行参数;

  • getopt用于处理命令行参数;


然后,定义一个程序的横幅:


这个横幅用于在程序启动的时候显示出来,除了让程序个性一点之外,也没啥用。


再定义一个函数,用来显示程序的用法:


我们的程序因为是在命令行下运行的,所以需要设置一些参数,在这里,我们用:

  • -w来指定网址

  • -t 来指定线程数

  • -f来指定字典文件

这三个参数缺一不可。


这两个函数创建好后,运行程序便会出现如下界面:


看上去是不是有那么点意思。


接着,我们创建一个继承于Thread的类request_performer(),用于创建线程并向目标站点发起请求以及获取响应:


在request_performer()类的run()方法里面,我们利用requests对URL进行请求并将响应的状态码打印出来。而这,就是我们这个探测器的最主要功能了。


再创建一个启动request_performer()类的函数launcher_thread(),用于遍历字典文件中的关键字组合成URL并生成新的线程。


继续创建一个函数start(),用于接收命令行中的参数将其传递给launcher_thread()函数:


最后,当然是在主程序中运行了:


这个程序到底有什么用呢?

在这里,我们不得不再提一下上面提及过的FUZZDB数据库。fuzzdb是一个用于模糊测试的数据库,类似于一个庞大的字典。而这些字典的内容呢,都是安全大神们维护的、在实践中发现很有可能会是攻击点的目录或路径。


我们可以打开数据库中的一个txt文件看看:


这是一个针对wordpress博客系统插件的一个字典,这里面都是插件的路径和目录。

 

测试暴力探测器


还记得在渗透测试环境搭建那篇文章介绍的虚拟机环境吗?

里面有一个充满漏洞的Web应用http://www.scruffybank.com/,我们可以使用我们刚刚编写好的暴力探测器对这个网站进行一下探测。

字典文件我们先采用一个简单的字典:


我们在命令行运行命令:


得到结果:


common.txt字典中有三个是成功的响应,我们打开其中一个http://www.scruffybank.com/robots.txt看看:


包含了三个禁止搜索引擎爬取的链接,看字面意思,其中一个还是后台地址admin,但是在结果页我们知道/admin是404错误,但是有一个/Admin,我们打开看看:


弹出了认证登录框,但是我们没有用户名和密码,目前来说只能作罢。

我们再使用FUZZDB数据库里的字典测试一下。选择fuzzdb-master/discovery/predictable-filepaths/php目录下的PHP.fuzz.txt:


同样在终端命令行运行命令:


得到结果:


虽然有很多404,但是我们还是发现了一些成功的响应:
比如info.php,打开原来是PHP的info界面:


login.php为登录页面:


phpmyadmin是mysql数据库的web管理入口:


在数据探测收集阶段,我们通过我们自己编写的暴力探测器,获得了这些页面的信息,对分析服务器和web应用的漏洞并进行针对性的渗透有很大的帮助。


作者:州的先生

来源:http://zmister.com/archives/180.html




————近期开班————

马哥教育2018年Python自动化运维开发实战面授班2018年3月5号开班,马哥联合BAT、豆瓣等一线互联网Python开发达人,根据目前企业需求的Python开发人才进行了深度定制,加入了大量一线互联网公司:大众点评、饿了么、腾讯等生产环境真是项目,课程由浅入深,从Python基础到Python高级,让你融汇贯通Python基础理论,手把手教学让你具备Python自动化开发需要的前端界面开发、Web框架、大监控系统、CMDB系统、认证堡垒机、自动化流程平台六大实战能力,让你从0开始蜕变成Hold住年薪20万的Python自动化开发人才

10期面授班:2018年03月05号(北京)

09期网络班:腾讯课堂随到随学网络

扫描二维码领取学习资料

更多Python好文请点击【阅读原文】哦

↓↓↓


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/H3KNFkQA7U
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/5018
 
519 次点击