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

本篇将会涉及:

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

资源探测

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

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

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

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

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

资源探测的作用

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

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

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

第一个暴力探测器

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

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

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

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

首先,引入相关的模块:

# coding:utf-8import 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来指定字典文件

这三个参数缺一不可。

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

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

接着,我们创建一个继承于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.urlyexcept 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] -1except Exception as e:print(e)

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

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

def launcher_thread(names,th,url):global ii = []resultlist = []i.append(0)while len(names):try:if i[0] < th:n = names.pop(0)i[0] = i[0]+1thread = 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 = argelif opt == '-f':dicts = argelif 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文件看看:

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

测试暴力探测器

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

我们在命令行运行命令:

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

得到结果:

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

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

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

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

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

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

得到结果:

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

login.php为登录页面:

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

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

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

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

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

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

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

① 文档和书籍资料

在这里插入图片描述

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

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/626478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 解析

list(pd.DataFrame) # 所有列名切片&#xff1a;print("显式 切片:\n", df.loc[:, "number":"sum"]) 所有行&#xff0c;列是从number 到sum &#xff0c;前闭后开print("隐式 切片:\n", df.iloc[:, 1:3]) # 结果和上面一样转化成字典…

Spark---RDD依赖关系

文章目录 1.1 RDD依赖关系1.2 血缘关系1.3 依赖关系分类1.3.1 窄依赖1.3.2 宽依赖 1.4 RDD阶段划分和任务划分1.4.1 RDD阶段划分1.4.2 RDD任务划分 1.1 RDD依赖关系 在Spark中&#xff0c;一个RDD的形成依赖于另一个RDD&#xff0c;则称这两个RDD具有依赖关系(一般指相邻的两个…

创始人记|2023「年终总结」暨 WorkfineV6版本发布

大家好&#xff0c;我是Workfine黄坤&#xff0c;很高兴能够再次为大家进行分享。衷心感谢大家一直以来对我们的厚爱和支持。新的一年&#xff0c;祝愿大家财源滚滚&#xff0c;身体健康&#xff0c;阖家幸福。 这是我们创业的第七个年头&#xff0c;进入这一行也有整整十年。…

GO自研微服务框架-中间件

一.中间件 中间件的作用是给应用添加一些额外的功能&#xff0c;但是并不会影响原有应用的编码方式&#xff0c;想用的时候直接添加&#xff0c;不想用可以很轻松的去除&#xff0c;做到所谓的可插拔。 中间件的实现位置在哪里&#xff1f; 不能耦合在用户的代码中需要独立存…

减肥或者运动真的能改变面相吗?

减肥或运动真的能改变面相吗&#xff1f; 在我们日常生活中&#xff0c;经常可以听到一些关于面相的说法&#xff0c;比如“胖的人更有福气”、“瘦的人更有灵气”等等。那么&#xff0c;减肥或运动是否真的能够改变一个人的面相呢&#xff1f;下面我们就来探讨一下这个问题。…

高精度磁导航传感器MGS系列RS232|RS485|CANBUS通讯连线方法

高精度磁导航传感器MGS系列&#xff0c;包含&#xff1a;CNS-MGS-080N、CNS-MGS-160N等&#xff0c;具有1mm的检测精度&#xff0c;特别适应于⾼精度磁条导航。利⽤检测磁场相对位置来进⾏AGV的辅助定位对接&#xff0c;获得更⾼的导航、定位、驻⻋精度。 MGS系列磁导航传感器⽀…

多臂老虎机 “Multi-armed Bandits”

将强化学习与机器学习、深度学习区分开的最重要的特征为&#xff1a;它通过训练中信息来评估所采取的动作&#xff0c;而不是给出正确的动作进行指导&#xff0c;这极大地促进了寻找更优动作的需求。 1、多臂老虎机&#xff08;Multi-armed Bandits&#xff09;问题 赌场的老虎…

阿里云服务器选哪个好(各自的优势区别)

阿里云服务器该怎么选&#xff1f; 一:99元一年&#xff0c;每天花费0.27元 点击 实惠好用&#xff0c;祝从此链接购买的用户天天好事不断&#xff01; 1.想省点钱的个人开发者建议选经济型e实例(2核2G,3M网络带宽&#xff0c;40G云盘) 2.可以用来干什么&#xff1f; 搭建中小…

系统语言德语时浮点数转化问题

原因 游戏上线后&#xff0c;玩家反馈系统语言为德语时会有问题&#xff0c;经排查测试&#xff0c;发现是德语的浮点数转化&#xff0c;也就是float.parser对于德语来说会有问题。 在中国和英国&#xff0c;表示小数是用 小数点&#xff0c;即&#xff1a;0.123。但是在德国…

2024 极术通讯-“周易”NPU与飞桨完成II 级兼容性测试,助力实现多样化AI部署

导读&#xff1a;极术社区推出极术通讯&#xff0c;引入行业媒体和技术社区、咨询机构优质内容&#xff0c;定期分享产业技术趋势与市场应用热点。 芯方向 Helium 技术讲堂 | 循环缓冲区的使用 当人工智能 (AI) 下沉到各式各样的应用当中&#xff0c;作为市场上最大量的物联网…

聚酰亚胺PI的特性有哪些?UV胶水能够粘接聚酰亚胺PI吗?又有哪些优势呢?

聚酰亚胺&#xff08;Polyimide&#xff0c;PI&#xff09;是一种高性能的聚合物材料&#xff0c;具有许多优异的特性。以下是聚酰亚胺的主要特性&#xff1a; 1. 高耐热性&#xff1a;聚酰亚胺的玻璃化转变温度和熔点都很高&#xff0c;可在非常高的温度下工作&#xff0c;其长…

Python 获取ResponseContent的文件名

通过网络请求下载的文件&#xff0c;有些时候不想重命名可以直接使用网页所返回的文件名 需要用到两个库 uuid 负责生成随机的数 unquote 负责解析编码后的字符 分了两种情况进行处理 1.找得到header 里面文件名 直接使用文件所返回的文件名 2.找不到header里面的文件…

leecode2719 | 统计整数数目

给你两个数字字符串 num1 和 num2 &#xff0c;以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件&#xff0c;我们称它是一个好整数&#xff1a; num1 < x < num2 min_sum < digit_sum(x) < max_sum. 请你返回好整数的数目。答案可能很大&#xff0…

极智芯 | 解读自动驾驶芯片之高通骁龙Ride系列

欢迎关注我的公众号「极智视界」,获取我的更多技术分享 大家好,我是极智视界,本文分享一下 解读自动驾驶芯片之高通骁龙Ride系列。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 对于自动驾驶芯片,之…

抖音弹幕玩法汉字找不同让鼠标指针自动漂浮的实现原理及代码

如下图&#xff0c;抖音直播间弹幕互动玩法&#xff0c;为了增强用户的视觉感知体验&#xff0c;在里面加了一个鼠标&#xff0c;来让用户感知到自己在操作。下一节我们将背景音乐也给加上去。 我们实现的方案是用anime.js动画&#xff0c;来让一个图片在指定区域范围内随机漂浮…

PDF文件中字体乱码的一种简单的处理方法

要解决问题先得碰到问题&#xff0c;碰到问题就迈出了解决问题的关键一步。 问题PDF文件的下载链接 这文件用Acrobat打开&#xff0c;无法搜索文本&#xff0c;复制文本出来也都是乱码。但用sumatra PDF打开就不存在这个问题&#xff01; 用Acrobat的印前检查解决。prefligh…

解决kubelet报failed to get imageFs info: non-existent label \“docker-images\“

问题&#xff1a; 一环境主机重启后&#xff0c;查看kubelet日志经常有大量无法回收镜像文件报错&#xff0c;会导致kubelet的pleg不健康&#xff0c;从而导致kubelet发生重启。报错如下&#xff1a; 解决办法 解决方法一&#xff1a; systemctl stop docker systemctl stop …

解锁Python神器vars:让你的代码瞬间脱颖而出!

vars()函数是一个内置函数&#xff0c;用于返回对象的__字典__&#xff0c;其中包含对象的__属性__。它适用于模块、类和实例对象&#xff0c;为你提供了访问对象属性的便捷方式。 1. vars() 函数概述 vars()函数有两种使用方式&#xff1a; 不带参数&#xff1a;返回当前作…

<软考高项备考>《论文专题 - 69 风险管理(1) 》

1 论文基础 1.1 写作要点 过程定义、作用写作要点、思路规划风险管理是定义如何实施项目风险管理活动的过程。作用:确保风险管理的水平、方法和可见度与项目风险程度相匹配&#xff0c;与对组织和其他干系人的重要程度相匹配。风险管理计划的内容、编写原则。结合风险管理计划…

20240104金融读报1分钟小得

数字技术引领将是补齐金融机构在普惠金融服务质量、效率等方面短板的有效方式 从省农担的名单制管理-》整村担保&#xff08;整个村子都担保&#xff0c;具体售给谁由银行决定&#xff09;