记一次sql注入到连接3389

前言

专注于web漏洞挖掘、内网渗透、免杀和代码审计,感谢各位师傅的关注!网安之路漫长,与君共勉!

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

目标拓扑

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查询目标站点的相关资产。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

权限获取

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。

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值