0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

WebCrack如何自动识别出要爆破的参数

马哥Linux运维 来源:马哥Linux运维 作者:马哥Linux运维 2022-08-14 11:45 次阅读

在做安全测试的时候,随着资产的增多,经常会遇到需要快速检测大量网站后台弱口令的问题。

然而市面上并没有一个比较好的解决方案,能够支持对各种网站后台的通用检测。

所以WebCrack就应运而生。

工具简介

WebCrack是一款web后台弱口令/万能密码批量爆破、检测工具。

不仅支持如discuz,织梦,phpmyadmin等主流CMS

并且对于绝大多数小众CMS甚至个人开发网站后台都有效果。

在工具中导入后台地址即可进行自动化检测。

项目地址

https://github.com/yzddmr6/WebCrack

实现思路

大家想一下自己平常是怎么用burpsuite的intruder模块来爆破指定目标后台的

抓包 -> send to intruder -> 标注出要爆破的参数 -> 发送payload爆破 -> 查看返回结果

找出返回包长度大小不同的那一个,基本上就是所需要的答案。

那么WebCrack就是模拟这个过程

但是就要解决两个问题

如何自动识别出要爆破的参数

如何自动判断是否登录成功

识别爆破参数

对于这个问题采用了web_pwd_common_crack的解决办法

就是根据提取表单中 user pass 等关键字,来判断用户名跟密码参数的位置

但是在测试中还发现,

有些前端程序员用拼音甚至拼音缩写来给变量命名

什么yonghu , zhanghao , yhm(用户名), mima 等

虽然看起来很捉急,但是也只能把它们全部加进关键字判断名单里。

如何判断登录成功

这个可以说是最头疼的问题

如果对于一种管理系统还好说,只要找到规律,判断是否存在登录成功的特征就可以

但是作为通用爆破脚本来说,世界上的网站各种各样,不可能去一个个找特征,也不可能一个个去正则匹配。

经过借鉴web_pwd_common_crack的思路,与大量测试

总结出来了以下一套比较有效的判断方式。

判断是否动态返回值并获取Error Length

6395edda-1b11-11ed-ba43-dac502259ad0.png

先发送两次肯定错误的密码如length_test

获取两次返回值并比较

如果两次的值不同,则说明此管理系统面对相同的数据包返回却返回不同的长度,此时脚本无法判断,退出爆破。

如果相同,则记录下此值,作为判断的基准。

然而实际中会先请求一次,因为发现有些管理系统在第一次登录时会在响应头部增加标记。如果去掉此项可能会导致判断失误。

判断用户名跟密码的键名是否存在在跳转后的页面中

这个不用过多解释,如果存在的话说明没登录成功又退回到登录页面了。

有人会问为什么不直接判断两个页面是否相等呢

因为测试中发现有些CMS会给你在登录页面弹个登录失败的框,所以直接判断是否相等并不准确。

还有一种计算页面哈希的办法,然后判断两者的相似程度。

但是觉得并没有那个必要,因为有不同的系统难以用统一的阈值来判断,故舍弃。

关键字黑名单检测

本来还设置了白名单检测机制

就是如果有“登录成功”的字样出现肯定就是爆破成功

但是后来发现并没有黑名单来的必要。

因为首先不可能把所有CMS的登录成功的正则样本都放进去

其次在测试的过程中,发现在其他检测机制的加持后,白名单的判断变得尤其鸡肋,故舍弃。

并且黑名单的设置对于万能密码爆破模块很有好处,具体往下看吧。

Recheck环节

为了提高准确度,防止误报。

借鉴了web_pwd_common_crack的思路增加recheck环节。

就是再次把crack出的账号密码给发包一次,并且与重新发送的error_length作比对

如果不同则为正确密码。

在这里没有沿用上一个error_length,是因为在实际测试中发现由于waf或者其他因素会导致返回包长度值变化。

框架拓展

用上面几种办法组合起来已经可以做到基本的判断算法

但是为了使WebCrack更加强大,我又添加了以下三个模块

动态字典

这个不用过多解释,很多爆破工具上都已经集成了。

假如没有域名,正则检测到遇到IP的话就会返回一个空列表。

假如域名是

test.webcrack.com

那么就会生成以下动态字典列表

test.webcrack.com
webcrack.com
webcrack
webcrack123
webcrack888
webcrack666
webcrack123456

后缀可以自己在脚本中定义。

万能密码检测

后台的漏洞除了弱口令还有一大部分是出在万能密码上

在WebCrack中也添加了一些常用的payload

admin' or 'a'='a
'or'='or'
admin' or '1'='1' or 1=1
')or('a'='a
'or 1=1--

可以自行在脚本里添加更多payload。

但是同时带来个问题会被各大WAF拦截

这时候黑名单就派上用场啦

可以把WAF拦截的关键字写到检测黑名单里,从而大大减少误报。

小插曲

用webcrack检测目标资产进入到了recheck环节

63bcd062-1b11-11ed-ba43-dac502259ad0.png

但是webcrack却提示爆破失败。

手工测试了一下检测出的万能密码

63cb6d8e-1b11-11ed-ba43-dac502259ad0.png

发现出现了sql错误信息

意识到可能存在后台post注入

63eadf02-1b11-11ed-ba43-dac502259ad0.png

发现了sa注入点

这也反应了对于后台sql注入,webcrack的正则匹配还做的不够完善,下一个版本改一下。

自定义爆破规则

有了上面这些机制已经可以爆破大部分网站后台了

然而还是有一些特(sha)殊(diao)网站,并不符合上面的一套检测算法

于是webcrack就可以让大家自定义爆破规则。

自定义规则的配置文件放在同目录cms.json文件里

参数说明

[    {        "name":"这里是cms名称",        "keywords":"这里是cms后台页面的关键字,是识别cms的关键",        "captcha":"1为后台有验证码,0为没有。因为此版本并没有处理验证码,所以为1则退出爆破",        "exp_able":"是否启用万能密码模块爆破",        "success_flag":"登录成功后的页面的关键字",        "fail_flag":"请谨慎填写此项。如果填写此项,遇到里面的关键字就会退出爆破,用于dz等对爆破次数有限制的cms",        "alert":"若为1则会打印下面note的内容",        "note":"请保证本文件是UTF-8格式,并且请勿删除此说明"    }]

举个例子

{        "name":"discuz",        "keywords":"admin_questionid",        "captcha":0,        "exp_able":0,        "success_flag":"admin.php?action=logout",        "fail_flag":"密码错误次数过多",        "alert":0,        "note":"discuz论坛测试"    }

其实对于dz,dedecms,phpmyadmin等框架本身的逻辑已经可以处理

添加配置文件只是因为程序默认会开启万能密码爆破模块

然而万能密码检测会引起大多数WAF封你的IP

对于dz,dedecms这种不存在万能密码的管理系统如果开启的话不仅会影响效率,并且会被封IP

所以配置文件里提供了各种自定义参数,方便用户自己设置。

关于验证码

验证码识别算是个大难题吧

自己也写过一个带有验证码的demo,但是效果并不理想

简单的验证码虽然能够识别一些,但是遇到复杂的验证码就效率极低,拖慢爆破速度

并且你识别出来也不一定就有弱口令。。。

所以就去掉了这个功能

总流程图

一套流程下来大概是长这个亚子

63f4a578-1b11-11ed-ba43-dac502259ad0.png

对比测试

找了一批样本测试,跟tidesec的版本比较了一下

web_pwd_common_crack 跑出来11个

其中7个可以登录。4个是逻辑上的误报,跟waf拦截后的误报。

webcrack 跑出来19个

其中16个可以登录。2个是ecshop的误报,1个是小众cms逻辑的误报。

webcrack比web_pwd_common_crack多探测出来的9个中

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

最后

这个项目断断续续写了半年吧

主要是世界上奇奇怪怪的网站太多了,后台登录的样式五花八门。

有些是登录后给你重定向302到后台

有些是给你重定向到登录失败页面

有些是给你返回个登录成功,然后你要手动去点跳转后台

有些直接返回空数据包。。。

更神奇的是ecshop(不知道是不是所有版本都是这样)

假如说密码是yzddmr6

但是你输入admin888 与其他错误密码后的返回页面居然不一样。。。

因为加入了万能密码模块后经常有WAF拦截,需要测试各个WAF对各个系统的拦截特征以及关键字。

总的半年下来抓包抓了上万个都有了。。。。。。

因为通用型爆破,可能无法做到百分百准确,可以自己修改配置文件来让webcrack更符合你的需求。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 密码
    +关注

    关注

    8

    文章

    185

    浏览量

    30266
  • 网站
    +关注

    关注

    1

    文章

    256

    浏览量

    22765
  • 管理系统
    +关注

    关注

    1

    文章

    1940

    浏览量

    34453

原文标题:WebCrack:网站后台弱口令批量检测工具

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何实现串口的自动识别

    用visa设计串口通信程序每次都得选择串口,请问有没有哪位大侠会设计能够自动识别串口的程序??谢谢了~
    发表于 03-23 22:48

    求助帖 labview自动识别

    自动识别 ,不想直接在前面板组合框中输入,因为如果表格中的A和B变成C和D的话就不匹配了,想实现自动识别。问题是组合框是字符串类型,A,B形成了一个一维数组,怎么办!!!求助
    发表于 04-19 14:34

    负载自动识别与测量装置

    制作一个负载自动识别测量装置,可以识别感性负载 容性负载 纯电阻负载 并能对被测量的负载进行定量的测量 显示相关参数值关于电源:只提供一组正负5V直流电源求助~~小白表示毫无思路各位大神们帮帮忙 不需要具体方案 给个思路就行
    发表于 10-29 17:52

    说说利用vision assitant实现数字的自动识别

    最近一周无聊试下vision assitant里面的OCR功能,因为之前做的一个机械零件编号检测需要识别上面的数字。简单介绍一下如何做到自动识别。1.查找范例OCR,里面有个自动识别,先放在
    发表于 03-18 10:39

    请问USB自动识别芯片RH7901是怎样自动识别充电设备的?

    本帖最后由 一只耳朵怪 于 2018-5-22 14:19 编辑 USB自动识别芯片RH7901RH7902 怎样自动识别充电设备的?***彭SRH7901 RH7902是USB充电协议端口
    发表于 05-22 14:15

    如何使用AM335X的OTG功能,如果插入U盘能否自动识别

    最近使用AM335X的评估板,如何测试OTG的功能,Linux内核已经配好USB的配置,如果我将U盘接到OTG模式下的U口,系统能自动识别出U盘吗?如果我将OTG模式下的USB插入PC机,PC能
    发表于 06-21 01:01

    我想把自动识别出来的图像从左到右编个顺序。

    我做了个程序,能自动识别图像里面的圆形,并且得到中心点坐标及圆的半径,但是识别得出来的圆形顺序是随机的,我想给它们从左到右编个号,请问能怎么实现?图像是程序效果图。
    发表于 09-28 14:14

    车辆自动识别称重系统的工作原理

    车辆自动识别称重系统的工作原理车辆自动识别称重系统组成车辆自动识别称重系统典型方案示意图车辆自动识别称重系统给用户带来的利益
    发表于 03-01 09:31

    车辆自动识别称重系统是怎样组成的?

    车辆自动识别称重系统的工作原理是什么?车辆自动识别称重系统是怎样组成的?
    发表于 05-13 07:02

    智能交通系统中的车牌自动识别技术有哪些应用呢

    治安卡口等场合,成为研究的热点。车牌识别技术是利用计算机等辅助设备进行的自动汽车牌照自动识别就是在装备了数字摄像设备和计算机信息管理系统等软硬件平台的基础之上,通过对车辆图像的采集,采用先进的图像处理、模式
    发表于 03-02 06:30

    在MDK环境中无法识别出来__clang_arm的宏定义是何原因

    在MDK环境中rtconfig.h中无法自动识别__CLANG_ARM的宏定义如上图所示,无法识别出来__clang_arm的宏定义
    发表于 06-28 14:58

    有适合自动识别是risc-v架构还是arm架构的烧录器吗?

    目前市面上有自动识别出被烧录MCU是risc-v架构还Arm架构的烧录器吗?无需用户手动切换模式,能够自动识别到被烧录MCU的内核架构。
    发表于 09-14 17:40

    STLink是怎么自动识别STM32芯片型号的?

    这个自动识别机制是怎么样做到的
    发表于 10-27 08:32

    STM32的串口自动识别波特率

    STM32串口自动识别波特率
    的头像 发表于 03-04 09:53 8380次阅读

    WebCrack后台弱口令指检测

    WebCrack是一款web后台弱口令/万能密码批量爆破、检测工具。
    的头像 发表于 01-30 10:40 1952次阅读