专栏名称: 信安之路
只分享干货,不扯蛋不蹭热点,共同学习共同成长,一起踏上信息安全之路!
目录
相关文章推荐
企名片  ·  新质生产力|上海书答数据科技有限公司 ·  22 小时前  
学习强国  ·  重要提醒:电动车挡风被隐患太多了! ·  2 天前  
流媒体网  ·  超全热门行业报告精选,就等你来领 ·  4 天前  
流媒体网  ·  超全热门行业报告精选,就等你来领 ·  4 天前  
企名片  ·  新质生产力|深圳想法流科技有限公司 ·  5 天前  
企名片  ·  新质生产力|深圳想法流科技有限公司 ·  5 天前  
51好读  ›  专栏  ›  信安之路

写了一个自动测试弱口令漏洞的脚本

信安之路  · 公众号  · 互联网安全  · 2024-12-17 09:00

主要观点总结

文章介绍了作者如何利用WebCrack工具进行弱口令检测,并对比了web_pwd_common_crack工具的效果。文章还详细描述了作者自用小脚本的设计思路和实现方法,包括匹配form表单、提取参数名、组合数据包发送、判断登录是否成功等步骤,并提到了误报情况的处理。最后,文章介绍了信安之路的三个内部工具。

关键观点总结

关键观点1: WebCrack工具介绍及弱口令检测思路

作者使用WebCrack工具进行弱口令检测,该工具能检测弱口令漏洞和万能密码漏洞。检测思路是通过匹配页面中的form表单,提取登录所需参数名,组合数据包发送至登录接口,根据返回内容判断是否存在漏洞。

关键观点2: 两款工具效果对比

文章提到了与web_pwd_common_crack工具的对比结果,webcrack相比web_pwd_common_crack多探测出一些漏洞,但也有误报情况。

关键观点3: 作者自用小脚本的设计思路和实现方法

作者基于两款工具的设计思路,完成了一个自用小脚本,用于检测弱口令和SQL注入。该脚本通过匹配form表单、提取参数名、组合数据包发送、判断登录是否成功等步骤实现,但存在误报情况。

关键观点4: 信安之路内部工具介绍

文章最后介绍了信安之路的三个内部工具:成长平台、攻防技术知识库和历史漏洞扫描器,分别用于学习信息安全攻防技术、汇聚安全攻防体系实战文档和快速发现已知威胁。


正文

为了实现登录口的自动弱口令尝试,在 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,就算小白也能一键检测历史漏洞,快速发现已知威胁。

推荐文章
大家-腾讯新闻  ·  云也退:一部看完没打瞌睡的现代舞
7 年前