这篇文章将为大家详细讲解有关使用Python怎么实现一个资源探测器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
首先,引入相关的模块:
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为登录页面:
关于使用Python怎么实现一个资源探测器就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。