记一次实战 xxe 及弱口令爆破学习

Andrew 2020-10-06
Web安全 发布于 2020-10-06 10:45:35 阅读 103 评论 0

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

前言

最近做的一次渗透测试,给的两个系统都只有一个登陆页面,也不能测试子域名或者其他端口。两个系统打开看了看挑了一个看起来比较容易好搞的软柿子。简单的测试了一下弱口令,注入没有啥结果。

开始信息收集,发现一些可能存在问题的点都记录下来一点点去测:

越测越绝望,看来还是不好搞。因为登陆框登陆失败信息很统一,不确定存在什么用户,所以用了常见用户名+top1000密码去爆破,跑了一上午没跑出来。

想着不能低危三连,去群里找销售问问能不能给个测试账号,客户不提供…….看来只能低危三连了

去群里找了以往的模板,准备照着写一下报告,然而神奇的事情发生了,这个项目半年前有过一次测试,大佬再其中一个系统中测出了一个弱口令。

用户名:admin。密码:域名+8899

报着试一试的心态往登陆框一输,然后进去了…………………………ohhhhhhhhh

明明也是一个弱口令,我为啥一开始没测出来,陷入了深深的反思…..看来弱口令爆破也是有操作的。

借此机会好好学习一下弱口令爆破那些事。

弱口令爆破的一些姿势学习记录

1.用户名确定方法

因为一些网站登陆框,输入不存在的用户名,会提示:用户名不存在,请重新输入 (这种情况下其实就可以提一个用户名枚举的漏洞)。

我们根据该信息可以枚举用户名,如果枚举的用户名很多的话,就可以用这些用户名,批量去撞弱口令,可以大大提高爆破成功率。

1.1 用户名枚举漏洞

用户名枚举主要就是利用,输入存在用户名和不存在用户名时返回信息不同来确认。而用户名枚举,因为不是爆破同一个账号的密码,所以不容易引起系统,waf拦截还是很好用的。

而登陆页面中可以输入用户名的地方有三处:登陆框,密码找回,注册

举一些栗子:

某校登陆框:

错误的用户名提示:提示用户名或密码错误,乍一看没什么问题

但是输入正确的用户名,错误的密码时:

根据返回信息不同,进行用户名枚举:

枚举到一个11用户。其实学校的话完全可以使用搜索引擎来收集学号,撞弱口令,这里只是为了简单演示

某src注册接口:

注册接口,手机号存在会提示:用户名已存在。

用户不存在,会提示:验证码以发送。

虽然发送同一ip发起发送验证码请求过多会提示:验证码请求频繁,但是当手机号存在时依旧会提示:用户名已存在。

从而造成注册手机号枚举。

1.2 利用公开信息收集用户名

搜索引擎收集:

比如,收集高校学号信息

site:*.test.edu.cn 学号

就能收集到很多,更进一步收集还有收集泄露的office文件,一般excel文件中比较多

site:*.test.edu.cn filetype:xlsx 学号

企业公开信息:

最近p神在小密圈分享了一个找用户名的小技巧:

爆破弱口令的时候经常需要目标公司的员工姓名组成字典,但员工姓名字典从哪来呢?

我们来实践一下这个技巧:打开天眼查,输入公司名称—>进入公司主页—>找到知识产权部分。即可看到很多知识产权信息,点击详情即可看到发明人姓名

社交软件:

社交软件,大佬都有很多骚操作,简单分享一下我知道的。

比如我们可以搜索qq群:

2020级清华大学通知群

编造一下加群信息,进入群的瞬间打开文件,下载所有群文件….也许有意想不到的收获

具体操作没实践过…大佬们可在得到测试授权的情况下自行尝试。

2.密码生成

个人感觉,密码爆破时针对性的生成目标字典,再配合top500,top10000字典,可以大大提高成功率。

密码生成主要使用一些小工具,这里简单推荐一下用起来感觉不错的工具:

2.1 pydictor

项目地址:github.com/LandGrey/pydictor

该工具有很多模块,其中社会工程学字典模块,可以根据用户信息针对性生成字典:

python pydictor.py --sedb

设置收集到的用户名,邮箱,生日等可以针对性的生成字典。

该工具还有字典合并去重,字典编码等多种功能,也可以单独 编写扩展插件。

2.2 杂七杂八的小工具

网上流通的各种小工具….可以试试,部分感觉还行。

在线字典生成网站:

www.bugku.com/mima/

大佬们有好用的社工库的话,根据收集的信息直接查,形成降维打击也是很好的选择,这个不多说。

2.3 一些小尝试

感觉密码爆破更多的还是看运气,更多的操作只是提高爆破成功的概率,反正多试试。

毕竟鲁迅先生曾经说过,人类所有的伟大都来源于试一试。

常用手段出不来,可以试试:

域名,用户名,企业名,后台名称加1-5位随机数字。
如:htgl8899,zhangsan2020

六位数字太费时间就不优先考虑了

3.存在验证码

存在验证码,验证码过弱,或者存在绕过缺陷也是可以被爆破的

3.1 验证码识别

pkavhttpfuzzer

验证码识别可以使用pkavhttpfuzzer,该工具可以识别一些特别简单的验证码

也可以使用burp插件:github.com/c0ny1/captcha-killer

调用第三方的打码平台接口

比如这里调用:www.ttshitu.com/ 的识别接口,识别效果还是不错的。不过太贵了,一般渗透测试,不至于不至于…

也可以自己开发训练验证码识别接口,这个没有深究过,大佬们可自行尝试

3.2 验证码绕过

验证码有时候存在缺陷可能导致被绕过

先知有大佬文章详细的说了验证码的绕过姿势,这里就不照搬了

放一下连接:

[红日安全]Web安全Day14 - 验证码实战攻防 :

xz.aliyun.com/t/6971

逻辑让我崩溃之验证码姿势分享 : xz.aliyun.com/t/4533

弱口令登陆后的xxe

回到一开始的项目,弱口令登陆后台之后,第一步当然是找上传点,找到一个上传excel文件上传的。抓包进行任意文件上传测试,发现上传不会返回路径,只解析文件的内容并返回到页面上,估计服务器都没有保存上传的文件,任意文件上传不存在。

但是发现服务器对文件存在解析,而且还是xlsx文件,xlsx文件主要由xml文件构成,解析过程中可能会存在xxe漏洞

制作poc文件进行尝试:

更改test.xlsx文件后缀位test.zip

重新压缩回去:

zip -r test.xlsx ./*

重新上传文件,发现接收到了服务器的请求,确定漏洞存在

这也算是第一次在实战中遇到文件上传的xxe (^_^),推荐一道ctf题练习:
buuoj.cn/challenges# [%E7%BD%91%E9%BC%8E%E6%9D%AF%202020%20%E9%9D%92%E9%BE%99%E7%BB%84]filejava

整体文章算是对自己之前项目的一个总结,该项目还存在很多问题,但碍于时间,和自己太菜没有getshell,争取下次一定getshell!!!

原创: h11ba1 雷神众测
原文链接:https://mp.weixin.qq.com/s/BNMLDwBb9f3xts-...

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!