写了一个自动测试弱口令漏洞的脚本
2024-12-17 01:0:0 Author: mp.weixin.qq.com(查看原文) 阅读量:10 收藏

为了实现登录口的自动弱口令尝试,在 github 找了一圈发现已经有小伙伴做了一些研究,项目地址:

https://github.com/yzddmr6/WebCrack

为此,作者还专门写了一个博客来介绍他的实现思路,地址:

https://yzddmr6.com/posts/webcrack-release/

整个检测思路如图:

该工具不仅能检测弱口令漏洞,还能检测万能密码,也就是登录口存在 SQL 注入的漏洞,整体效果,作者的测试结果与 TideSec 团队开发的 web_pwd_common_crac 工具做了对比:

https://github.com/TideSec/web_pwd_common_crac

1、web_pwd_common_crack 跑出来 11 个,其中7个可以登录。4个是逻辑上的误报,跟waf拦截后的误报。

2、webcrack 跑出来 19 个,其中 16 个可以登录。2 个是 ecshop 的误报,1 个是小众 cms 逻辑的误报。

webcrack 比 web_pwd_common_crack 多探测出来的 9 个中,有 5 个是万能密码漏洞,2 个是发现的web_pwd_common_crack 的漏报,2 个是动态字典探测出来的弱口令。

不过这个工具,主要用来测试大量登录系统,属于通用类型的检测,核心思路就是通过匹配页面中的 from 表单,提取登录所需参数名,然后组合数据包发送到登录接口,根据返回内容来判断是否存在漏洞。

对我而言,主要目标是检测是否存在 admin、123456 这类弱口令,SQL 注入部分,可以使用专业的扫描器来实现,为此,基于以上两款工具的设计的思路,完成了一个自用小脚本,效果还不错,但误报不可避免,程序员的设计思路并非统一的,会有各种各样的情况存在。

核心就以下几点:

1、从页面中匹配 form 表单中的 action 地址,也就是验证账号密码的接口地址,这块直接使用正则表达式来完成,也很简单:

action_path = re.findall("action\s*=\s*\"([^\"]*)\"", form_content, re.I)[0]

2、接下来从 form 表单中提取输入的参数名,也就是 input 部分的 name,同样使用正则

key = re.findall("name=\"([^\"]+)\"", input_element, re.I)[0]

其中如果 type 为 password 那么说明该字段是需要提供的密码部分

3、接下来是组合数据包发送,然后判断登录是否成功,通过使用一个基准账号密码来做第一次尝试,获取响应的 header 和 body 内容,然后再使用我们想要测试的账号密码来获取 header 和 body 内容,最后跟基准请求做比对,从而判断是否登录成功,我的判断方式主要有以下步骤:

  • 比较两次的响应的状态码是否一致,第一次是失败的尝试,如果后面的尝试有不同,则认为后面尝试的账号密码是正确的

  • 比较两次返回的响应内容长度是否一致,如果一致,则认为后面尝试的密码是无效的

  • 比较两次请求是否有跳转,判断跳转后的地址是否一致

  • 比较两次请求响应内容中的关键词,比如成功的关键词,失败的关键词,如果判断验证码则跳过

经过以上操作之后,对于发现的弱口令结果,还是有一半的误报,不过还可以接受啦,找一个案例测试如图:

测试登录如图:

脚本我就放到信安之路知识星球了,给大家做个参考,后续可以基于此,借助 ddddocr 的能力,自动识别验证码,让弱口令检测更加智能。

信安之路三大内部工具介绍(成为VIP即可):

1、信安之路成长平台,通过将信息安全攻防技术分解成开放性任务,由浅入深学习安全攻防,同时锻炼自学能力,还有大量资料供学习参考,低成本入门信息安全必要之选。

2、信安之路攻防技术知识库,汇聚安全攻防技术体系、大量实战技术文档,海量历史漏洞细节,让知识武装头脑的同时,提高学习工作效率。

3、信安之路历史漏洞扫描器,随时随地,通过云端下载 POC,就算小白也能一键检测历史漏洞,快速发现已知威胁。


文章来源: https://mp.weixin.qq.com/s?__biz=MzI5MDQ2NjExOQ==&mid=2247499709&idx=1&sn=37ae556f51a5d91da71ea04b2afee842&chksm=ec1dcf95db6a468326ec10ef4a3feee1fde64e01d6454e055bc92c16c698b4190e0ad6517892&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh