Python黑客:编写一个密码暴力攻击测试器

1

本篇概要

  • HTTP 基本认证
  • 对HTTP Basic认证进行密码暴力攻击测试

2

什么是HTTP 基本认证

HTTP基本认证(HTTP Basic Authentication)是HTTP协议中实现Web资源访问控制的最简单的认证手段。其通过添加header头域的方式或者在URL中附带参数的方式提供认证信息,并通过Base64编码将认证信息进行编码传输,最后由服务器接收到编码后的字符进行解码认证。

当我们访问一个需要进行HTTP基本认证的网址时,其会通过响应一个401状态码,并返回一个认证框来接收用户输入的认证信息。如果我们填错,服务器会继续返回一个401状态码和认证框,如果认证成功,则返回200请求成功状态码。

HTTP基本认证一个优点是几乎所有的现代浏览器都支持这种认证方式,非常的简单方便,但是由于其技术特性,这种认证方式并不是很安全,现在亦多存在于内网环境下的站点。

其采用的Base64编码加密,也是属于“防君子不防小人”的加密。利用Python的base64模块,我们就能够轻松的进行加密和解密:

返回的结果为:

是不是感觉很坑爹,嗯,就是的。^_^

3

编写Python密码暴力测试器

了解了HTTP基本认证的一些概念,下面我们继续使用Python编写一个渗透测试密码暴力破解器。

照常,我们引入相关的模块

相关模块的功能,在上一篇编写资源探测器的文章中已经提及,忘记了的可以前往博客阅读:http://zmister.com/archives/180.html、http://zmister.com/archives/181.html

由于字典中的条目会有很多,所以我们设置一个全局变量,用来标识字典中的密码是否有效:

然后照例我们定义一个横幅函数,装饰我们的单调的命令行:

接着,仍然是程序的使用参数方法示例:

接着就是我们的主类request_performer():

最后是启动线程的函数launcher_thread()和启动程序的函数start():

最后,我们依然使用虚拟机中的http://www.scruffybank.com/作为靶机,对http://www.scruffybank.com/Admin 的admin用户进行密码攻击测试,以一个弱口令文件作为字典:

在命令行终端运行命令:

结果显示发现了一个密码“administrator”

我们打开http://www.scruffybank.com/Admin,使用用户名admin和密码administrator登录,看看能否成功登录。

结果认证成功进入了一个目录内,说明我们的弱口令密码暴力测试成功了。

下一篇,我们将改进我们的密码暴力测试器,让其支持更加安全的认证方式——HTTP摘要认证。 PS:点击“阅读原文”查看完整代码,欢迎来踩。

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2017-11-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端开发

json-server进阶

现在访问http://localhost:3000/list会看到动态生成了1000条数据,这跟咱们手动在json文件里写1000条数据效果一样,但肯定没有这么...

1204
来自专栏Golang语言社区

使用go-swagger为golang API自动生成swagger文档

Swagger是一个简单但功能强大的API表达工具。它具有地球上最大的API工具生态系统,数以千计的开发人员,使用几乎所有的现代编程语言,都在支持和使用Swag...

2912
来自专栏web前端

myEclipse6.5与数据库(SQL Server2008)连接遇到的问题<用SSH框架的时候,用servlet+javabean+jsp的时候>

昨天因为学习SSH框架的搭建,时隔一年又重新遇到了myEclipse连接数据库的问题。废话不多说,上干货 (以下全部按照我遇到的问题的顺序,也就是没有顺序,就是...

1916
来自专栏编程

Go语言的网络编程简介

文 | 源小白 共9877字,阅读需25分钟 本文通过 Go 语言写几个简单的通信示例,从 TCP 服务器过渡到 HTTP 开发,从而简单介绍 net 包的运用...

2157
来自专栏文渊之博

使用PowerShell 监控运行时间和连接情况

概念 Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。你可以把它看成是命令行提示符cmd.exe的扩充,不对,应...

2136
来自专栏源哥的专栏

客户端数据集/服务端数据集的原理和设计

最近在开发一个比较大型的项目,主要采用Activex控件做底层操作,采用Javascript做逻辑控制和处理,采用Ajax实现服务端与客户端之间的交互,而在实际...

774
来自专栏Android开发实战

I/O在底层的工作概述

本文主要讨论I/O在底层是如何工作的。本文服务的读者,迫切希望了解Java I/O操作是在机器层面如何进行映射,以及应用运行时硬件都做了什么。假定你熟悉基本的I...

783
来自专栏用户2442861的专栏

HTTP POST GET 本质区别详解

    一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交

831
来自专栏FreeBuf

闲聊Windows系统日志

最近遇到不少应急都提出一个需求,能不能溯源啊?这个事还真不好干,你把证据,犯案时间都确定的时候,要求翻看监控(日志)对应犯罪嫌疑人时,突然说监控(日志)没有记录...

2810
来自专栏积累沉淀

Javascript模块化编程(二):AMD规范

这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块。 (接上文) 七、模块的规范 先想一想,为什么模块很重要? 因...

3528

扫码关注云+社区