记一次“弱口令”挖掘实战记录

声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。

请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

最近领导安排了一次众测任务给我这个驻场的安服仔,是甲方公司一个新上线的系统,要求对此系统进行漏洞挖掘。没有任何测试账号,资产ip等信息,领导丢下一个域名就跑了。

0x01 信息收集

打开域名,就是一个堂堂正正的登陆界面

图片

使用nslookup查一下域名解析

图片

先对ip进行端口信息收集,除了一个443和一个识别不出来的2000端口,就没有其他端口。那么只能从web入手了。

图片

简单扫了一下目录,发现了后台登陆界面

图片

0x02 漏洞发掘初试

由于web只找到两个登陆页面,其他什么都找到,那么只能先对登陆页面进行测试。看到前台登陆页有短信登陆功能,马上想到短信发送是否有频率和次数限制,如有则存在短信炸弹漏洞。

虽说不是什么危害性很大的漏洞,但漏洞就是漏洞!然鹅,这么简单都洞找不到,哭了。

图片

至于爆破账号密码也不要想了,验证码是真的,而且这密码还rsa加密,真的没啥心情去尝试爆破,估计毫无成功的希望。至此陷入僵局。

图片

0x03 另辟蹊径

虽说是月薪只有几千的安服仔,但作为一名无证信息安全从业人员,怎能轻易言败。重新换个角度进行思考,首先这是一个新上线的系统,而总所周知,甲方公司不具备任何开发能力,那么此系统必然是由第三方公司进行开发,而系统正式上线之前大概率是有测试系统的。

下一步就是尝试去寻找此测试系统了,首先留意到前台登陆页面的源码中,可以看到甲方公司的用户协议文本。

图片

在各大网络空间搜索引擎中使用如下命令进行查找

代码语言:javascript
复制
tilte = "xxxx" & body = "xxxx"

经过一番搜索,可以发现一个不能说是相似,只能说是一模一样的网站。

图片

常规操作,先进行一波端口扫描。这个站端口比起生产系统的多了好几个,分别有:

代码语言:javascript
复制
22   : ssh
3306 : Mysql
6379 : Redis
3000 : HTTP 测试网站
5080 : HTTP 开发商另外一个项目的网站
8848 : HTTP 不明

3000端口的测试网站跟生产站类似,只有一个登陆界面,后台地址也是一样的,也是拿它没任何办法。

Mysql和Redis都是有密码的,暂时也没办法,那么将目光投向另外两个Http服务。

代码语言:javascript
复制
5080端口,也是一个只有一个登陆界面的网站,看得出跟3000端口的网站是同一个框架搭建,可以暂时略过。
8848端口打开是nginx默认页,估计是需要指定uri才能打开。简单搜索一下8848这个关键字,发现是nacos使用的默认端口。
图片

什么是 Nacos?

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

简单来说,就是nacos里面有大量配置文件。既然有默认端口,那么有默认口令也是人之常情。直接一发nacos:nacos,一发入魂!

图片

翻查各种配置文件,发现大量敏感信息,可以找到Mysql和Redis的密码。3306端口对外开放,直接进入Mysql里面翻网站的账号和密码hash,在另外一个表,还可以找到密码hash使用的salt。

图片

导出数据库所有hash,先肉眼看一下,发现有大量hash是相同,机智的你看到这个,肯定想到这要不是弱口令,要不就是默认密码。

图片

马上准备下班了,先用8位纯数字+小写字母进行爆破,丢上服务器慢慢爆,明天一早起床收割。

0x04 弱口令挖掘

第二天一早上班,看了一下爆破结果,又有新的发现。爆破出来的密码,大多是有特定格式的,主要的格式是:

代码语言:javascript
复制
四位甲方公司英文简写+4位数字(以下我就用abcd代表该公司简写)。

使用爆破出来的口令成功登入测试网站的前台,因为是测试网站,里面也没啥有价值的系统。我们的目标还是要爆破出后台管理的密码。

图片

下一步要继续优化爆破字典,根据我对此甲方公司的了解和多年配置弱口令的经验,我初步想到以下两个思路:

  1. 使用大小组合的甲方公司英文简写+4位数字进行爆破。或者直接使用首字母大写就足够了(能按一下shift,就不想按两下,对吧),这个方案复杂度最低,甚至可以再加2位数字进行爆破。
  2. 使用大小组合的甲方公司英文简写+一位特殊字符+4位数字,或者大小组合的甲方公司英文简写+4位数字+一位特殊字符。大部分人为了强行加入特殊字符,一般喜欢在字符和数字之间加,或者在最后一位,此方案就是针对这种习惯。

方案二的字典成功爆出后台密码,密码是:Abcd2333@,严格意义上,这已经是很强的口令,有大小写字母、数字、特殊字符。但是,如果对这个公司有所了解,很容易就能发现其常用的简写,这么来说的话,这密码也能算是一个“弱口令”。

图片

测试站后台成功拿下。经过后台一番探索,基本可以确定是thinkphp6,而且没有多语言插件(谁没事装这插件。。。),getshell无望。

Redis权限太低,版本不是4.x,也没啥办法。至此测试站渗透结束。

0x05 回到生产网站

虽说没有成功拿下测试站有点可惜,不过从测试站的数据库拿到不少的账号和密码,这些账号密码极有可能能登陆生产网站。

简单整理一下各种账号口令,都是富有甲方特色的账号,例如:

代码语言:javascript
复制
账号:abcdadmin,密码:Abcd#2022
账号:abcdtest01,密码:Abcd2333!
账号:abcdtest02,密码:Abcd2333!
账号:admin01,密码:abcd2333

手工组合各种账号和密码在主站进行测试,轻松进入后台。编写报告:后台弱口令【高危】.docx,任务完成,安服仔永不言败~

0x06 总结

学艺不精,没办法getshell拿到权限,实在太菜。此文主要记录一个强行挖掘弱口令的过程,渗透测试需要猥琐的思路,弱口令也不再局限于top100,top1000之类。