使用Python编写一个渗透测试探测工具

这篇具有很好参考价值的文章主要介绍了使用Python编写一个渗透测试探测工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇将会涉及:

  • 资源探测
  • 一个有用的字典资源
  • 第一个暴力探测器

资源探测

资源探测在渗透测试中还是属于资源的映射和信息的收集阶段。
主要有以下三个类型:

  • 字典攻击
  • 暴力破解
  • 模糊测试

字典攻击,在破解密码或密钥的时候,通过自定义的字典文件,有针对性地尝试字典文件内所有的字典组合。

暴力破解,也叫做穷举法,按照特定的组合,进行枚举所有的组合。简单来说就是将密码进行逐个推算直到找出真正的密码为止。

模糊测试,指通过向目标系统提供非预期性的输入并监视其发生的异常结果来发现目标系统的漏洞。

资源探测的作用

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

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

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

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

第一个暴力探测器

在之前的章节,我们了解了使用Python进行HTTP请求的方法,在本章,我们了解的资源探测的作用的用途。接下面我们就利用Python编写一个资源探测器,用来对Web网站进行资源探测。

我们将上面介绍的开源模糊测试数据库FUZZDB从github上克隆或下载下来:

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

这个数据库会作为我们的资源探测器的字典,来对web站点进行针对性的探测。

新建一个Python文件,开始我们的暴力探测器的编写。

首先,引入相关的模块:

# coding:utf-8

import requests
from threading import Thread
import sys
import getopt
  • requests用于请求目标站点;
  • threading用于启用多线程;
  • sys用于解析命令行参数;
  • getopt用于处理命令行参数;

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

# 程序标识
def banner():
    print("\n********************")
    name = '''
  ______          _     _
 |___  /         (_)   | |
    / / _ __ ___  _ ___| |_ ___ _ __
   / / | '_ ` _ \| / __| __/ _ \ '__|
  / /__| | | | | | \__ \ ||  __/ |
 /_____|_| |_| |_|_|___/\__\___|_|
    '''
    print(name)
    print("州的先生-暴力发掘器 v0.1")
    print("***********************")

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

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

# 程序用法
def usage():
    print("用法:")
    print("     -w:网址 (http://wensite.com/FUZZ)")
    print("     -t:线程数")
    print("     -f:字典文件")
    print("例子:bruteforcer.py -w http://zmister.com/FUZZ -t 5 -f commom.txt")

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

  • -w来指定网址
  • -t 来指定线程数
  • -f来指定字典文件

这三个参数缺一不可。

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

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

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

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

class request_performer(Thread):
    def __init__(self,word,url):
        Thread.__init__(self)
        try:
            self.word = word.split("\n")[0]
            self.urly = url.replace('FUZZ',self.word)
            self.url = self.urly
        except Exception as e:
            print(e)

    def run(self):
        try:
            r = requests.get(self.url)
            print(self.url,"-",str(r.status_code))
            i[0] = i[0] -1
        except Exception as e:
            print(e)

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

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

def launcher_thread(names,th,url):
    global i
    i = []
    resultlist = []
    i.append(0)
    while len(names):
        try:
            if i[0] < th:
                n = names.pop(0)
                i[0] = i[0]+1
                thread = request_performer(n,url)
                thread.start()
        except KeyboardInterrupt:
            print("用户停止了程序运行。完成探测")
            sys.exit()
    return True

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

def start(argv):
    banner()
    if len(sys.argv) < 5:
        usage()
        sys.exit()
    try:
        opts,args = getopt.getopt(sys.argv[1:],"w:t:f:")
    except getopt.GetoptError:
        print("错误的参数")
        sys.exit()

    for opt,arg in opts:
        if opt == '-w':
            url = arg
        elif opt == '-f':
            dicts = arg
        elif opt == '-t':
            threads = int(arg)

    try:
        f = open(dicts,'r')
        words = f.readlines()
    except Exception as e:
        print("打开文件错误:",dicts,"\n")
        print(e)
        sys.exit()

    launcher_thread(words,threads,url)

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

if __name__ == '__main__':
    try:
        start(sys.argv[1:])
    except KeyboardInterrupt:
        print("用户停止了程序运行。完成探测")

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

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

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

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

测试暴力探测器

还记得在渗透测试环境搭建那篇文章介绍的虚拟机环境吗?
里面有一个充满漏洞的Web应用www.scruffybank.com/,我们可以使用我们刚刚…
字典文件我们先采用一个简单的字典:

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

我们在命令行运行命令:

python3 brutediscovery.py -w http://www.scruffybank.com/FUZZ -t 5 -f common.txt

得到结果:

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

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

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

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

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

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

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

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

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

python3 brutediscovery.py -w http://www.scruffybank.com/FUZZ -t 5 -f PHP.fuzz.txt

得到结果:

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

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

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

login.php为登录页面:

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

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

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

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

在接下来的文章里,我们将丰富和完善我们编写的渗透测试工具的功能。
敬请期待!

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

2️⃣国内外Python书籍、文档

① 文档和书籍资料

使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化
使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓
使用Python编写一个渗透测试探测工具,python,开发语言,服务器,数据库,信息可视化文章来源地址https://www.toymoban.com/news/detail-793542.html

到了这里,关于使用Python编写一个渗透测试探测工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 渗透测试--2.漏洞探测和利用

    目录 一.漏洞分类 二.漏洞探测 三.漏洞利用 四.漏洞扫描 1.Nessus 2.Web应用漏洞扫描器——DVWA 五.Metasploit漏洞利用 网络漏洞 系统漏洞 应用漏洞  人为不当配置 渗透测试是一种测试网络、应用程序和系统安全性的方法,旨在发现并利用漏洞和安全漏洞,以评估系统的安全性。

    2024年02月05日
    浏览(47)
  • Python+Requests+PyWebIO框架详解,编写测试工具提高团队测试效率

    老铁们如果是QA,想必也遇到过类似痛点吧: 业务逻辑复杂性决定测试场景复杂性,配置测试场景常常花费大量时间,导致测试效率降低 新用户的测试场景,账号可能经常注销,协助debug时需要用userid,每次都得重新抓包。而且测试账号很多,来回切,即使在本地管理userid,

    2024年02月13日
    浏览(37)
  • 基于Python+Django的毕业设计-web渗透测试工具(附源码+论文)

    大家好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。 🎀 当前专栏:基于Python的毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 💞微信小程序毕业设计 🎀 安卓app毕业设计 🌎Java毕业设计 https://download.csdn.net/download/m0_46388260/87891131 本次通过渗透测试的方式可以进行模拟

    2024年01月16日
    浏览(35)
  • 主机探测与端口扫描-渗透测试模拟环境(2)

    本篇将介绍主机探测与端口扫描渗透模拟环境下整理的各类收集方法、各类工具技术使用的演示,阅读后可用在工作上 。 往期系列文章: 渗透攻防环境搭建与攻防知识体系思维导图 渗透模拟环境配置和工具介绍-渗透测试模拟环境(0)_luozhonghua2000的博客-CSDN博客 外围信息搜集

    2024年02月06日
    浏览(33)
  • 使用Python编写一个多线程的12306抢票程序

    国庆长假即将到来,大家纷纷计划着自己的旅行行程。然而,对于很多人来说,抢购火车票人们成了一个令人头疼的问题。12306网站的服务器经常因为流量高而崩溃,导致抢票变得越来越严重异常困难。 首先,让我们来了解一下12306抢票的难点。由于很多人都在同一时间段内

    2024年02月07日
    浏览(49)
  • 使用python编写的爬虫给X站视频增加一个播放量

    目录 前言 一、增加播放量的请求分析 1.请求网址:  2.请求分析:  3.对cookie分析: 4. 对荷载分析: 二、代码实现 总结拓展 在平时观看X站视频的过程中,一个视频的播放量需要点击播放来增加,而在代码中如何实现播放量的增加呢,本篇文章就带你实现在代码中增加一个

    2024年02月05日
    浏览(35)
  • 使用python编写脚本测试目标主机的TCP端口连通性

            使用Python的Socket模块的connect()函数来尝试连接目标主机的特定端口。如果连接成功,则说明该端口是打开的;否则,该端口是关闭的。         下面是一个示例脚本,可以检测目标IP的22端口是否开启:         在这个程序中,我们首先使用socket模块创建一

    2024年02月11日
    浏览(33)
  • 实战演示:使用Python编写人脸识别测试代码,让你的应用拥有智能感知能力

    人脸识别是计算机视觉领域的一个重要应用。它使用计算机算法来识别和验证面部特征,通常用于安全认证、视频监控、人脸比对等方面。近年来,随着深度学习技术的发展,人脸识别的性能得到了极大的提升,成为了智能感知应用中的重要一环。在这篇文章中,我们将使用

    2024年02月12日
    浏览(41)
  • 21.2 Python 使用Scapy实现端口探测

    Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具,它能够处理和嗅探各种网络数据包。能够很容易的创建,发送,捕获,分析和操作网络数据包,包括TCP,UDP,ICMP等协议,此外它还提供了许多有用的功能,例如嗅探网络流量,创建自定义协议和攻击网络的安全测试工

    2024年02月08日
    浏览(35)
  • python编写一个小程序,python入门小程序编写

    大家好,小编来为大家解答以下问题,python编写一个小程序,python入门小程序编写,现在让我们一起来看看吧! 大家好,小编为大家解答python简单易懂的小程序的问题。很多人还不知道python入门小程序编写,现在让我们一起来看看吧! 20个小段程序 1.字符串翻转 运行结果:

    2024年02月03日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包