攻防演练 | 柳岸花明又一村

admin 2022年11月14日11:49:44评论50 views字数 2737阅读9分7秒阅读模式


  • 前言

  • 目标拓扑

  • 信息收集

  • 权限获取

    • sql注入

    • 权限获取

  • 权限提升

  • 拓展战果

  • 攻击链路


前言

一次攻防演练过程,中间没有涉及域渗透、内网渗透方面的知识,简单分享一下思路和过程。 

目标拓扑

45.xx.xx.xx:8082 禅道系统,开放多个端口 

45.xx.xx.xx:8081 管理系统 

45.xx.xx.xx:888 智慧校园 

45.xx.xx.xx:80 Fastadmin 

123.xx.xx.xx 智慧校园 

123.xx.xx.xx:3306 智慧校园从数据库 

aliyun.com:3306 智慧校园主数据库 

45.xx.xx.xx:3306 智慧校园的支付数据库

信息收集

信息收集过程没有浪费太多的时间,直接fofa查询目标站点的相关资产。

攻防演练 | 柳岸花明又一村
2.png

权限获取

sql注入

指纹识别发现目标是禅道系统并且存在sql注入漏洞

POST /zentao/user-login.html HTTP/1.1
Host: xxxxxxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Content-Length: 71
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/x-www-form-urlencoded
Referer: xxxxx
Accept-Encoding: gzip

account=admin

sqlmap一把锁

攻防演练 | 柳岸花明又一村
1.png

通过数据库信息,得到禅道管理员与普通用户账号

4a84894b28f2815f7081fa830fb35d6b :xxxxxxx
e9f5c5240c0bb39488e6dbfbdb1517e0 :123456qwe

权限获取

接下来就是想办法拿shell,--os-shell获取不到shell。尝试其他方式。

对目标进行端口扫描,发现数据库端口开放。

攻防演练 | 柳岸花明又一村

尝试一下使用禅道管理员的账户密码连接数据库,成功登陆数据库。

攻防演练 | 柳岸花明又一村
4.png

既然同一个IP开发多个web服务,可不可能使用同一个数据库?继续在数据库中翻阅8081端口的系统的账户密码。登陆进后台 账户为:admin,密码为Lanren2021。

攻防演练 | 柳岸花明又一村

获取管理员口令一个,但是依旧没拿到45.xx.xx.xx的shell。继续翻数据库。

发现有一个数据中的表记录admin用户登陆的日志,日志中有url。

攻防演练 | 柳岸花明又一村

直接访问该url,发现45.xx.xx.xx的80端口,开放了一个fastadmin(可以拿shell)。

继续翻阅找到了该fastadmin的账户密码

攻防演练 | 柳岸花明又一村

admin/123456

攻防演练 | 柳岸花明又一村

这里直接根据 https://www.secpulse.com/archives/158403.html,拿到shell。

攻防演练 | 柳岸花明又一村

权限提升

拿到shell 发现存在宝塔。利用蚁剑自动绕过disable_function,拿到www权限。

攻防演练 | 柳岸花明又一村

通过 CVE-2021-4034 提权,成功拿到root权限,参考链接:https://github.com/berdav/CVE-2021-4034。

攻防演练 | 柳岸花明又一村

发现站点使用宝塔搭建(此时已经是root权限),而且开放2046端口,直接查看宝塔账户密码,登陆宝塔面板。

攻防演练 | 柳岸花明又一村

查看ningx配置文件,发现一个888端口,目录在wcs,开放的是一个智慧校园系统。查找账户密码。一个维护员、一个超级管理员。密码被加盐,一个为弱口令,另一个解密不出来。使用维护员登陆目标系统

密文:$2a$10$0sjBLlwrrch2EjgYls197e9dGRCMbQ7KUIt/ODPTSU0W.mEPaGkfG

明文:123456

用户名:admin

攻防演练 | 柳岸花明又一村
攻防演练 | 柳岸花明又一村

致此该系统的渗透本该结束了,继续看下文。

拓展战果

在信息收集的过程中,还发现了一个域名https://oa.xxxx.com.cn/index,访问该域名发现该系统和45.xx.xx.xx的888端口开放的服务都是智慧校园。该域名对应的IP为123.xx.xx.xx。同样的系统对应两个不通的IP?

既然系统一样,那么数据库、源码是不是也一样?但是很遗憾使用45.xx.xx.xx数据库中的管理员账户密码为登陆成功。但是45.xx.xx.xx数据库中有学生的身份证信息。所以使用学生身份登陆智慧校园试一下。密码未知。

谷歌搜索:site:xxxx.edu.cn intext:"密码为"

攻防演练 | 柳岸花明又一村

成功登陆,但是修改密码怎么绕过呢?直接访问https://xx.xx.edu.com/manage绕过。

绕过之后,也没发现什么功能点。但是这个系统感觉有点像ruoyi。

攻防演练 | 柳岸花明又一村

那怎么拿shell。两个系统的数据库不一样,那么源码是一样的吧。至少看起来都差不多。

所以说回到45.xx.xx.xx的shell中。在上文我们通过nginx找到了888端口系统 源码的位置。直接把jar包反编译。

攻防演练 | 柳岸花明又一村

目录如下

攻防演练 | 柳岸花明又一村

查找一些乱七八糟的配置文件。在application-pro.yml文件中,发现了数据库配置的账户密码。

攻防演练 | 柳岸花明又一村

这里数据库分三个数据库

主数据库为阿里云

从数据库为该系统本身(123.xx.xx.xx)的3306端口

支付数据库为45.xx.xx.xx的数据库

那么我们先连从数据库看看有啥数据。在从数据库中也发现了两个管理员账户密码,但是其中一个超级管理员权限没有解密出来。因为加salt了,而且也不是弱密码。

攻防演练 | 柳岸花明又一村

所以接下来的思路就是通过登陆超级管理员的账户看看能不能拿到shell。问题就来到怎么获取超级管理员的账户密码了。

既然源码拿到了可不可以把超级管理员的密码改掉?即使加盐了但是只要知道源码和明文可以生成加密后的账户密码,然后替换掉即可。所以直接在java源码中,找到加密代码,生成密码。

但是问题来了,从数据库是没有权限改的。主数据库是不是可以改,于是登陆阿里云的主数据库修改账户密码(其实改密码是违规的哈哈哈哈哈哈哈哈哈)。

这里也要注意:阿里云的主数据库是不可以直接从公网访问的,所以直接在45.xx.xx.xx的机器上连接数据库。

攻防演练 | 柳岸花明又一村

修改完毕登陆系统,就是常规的SnakeYaml rce漏洞。

攻防演练 | 柳岸花明又一村

root权限

攻防演练 | 柳岸花明又一村

攻击链路

  • 禅道注入:获取数据库信息,但是未拿到shell。

  • 获取数据库信息,但是未拿到shel:数据库中信息收集,发现其他系统。

  • 权限提升: 绕disable_function,提权。

  • 扩大战果:

    • 发现相同系统,尝试获取shell。

    • 权限不足,超级管理员密码未知,尝试修改。

    • 源码生成密文,主数据库修改。

    • snakeyaml反序列化rce。


原文始发于微信公众号(不懂安全的果仁):攻防演练 | 柳岸花明又一村

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月14日11:49:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   攻防演练 | 柳岸花明又一村http://cn-sec.com/archives/1408004.html

发表评论

匿名网友 填写信息