某大学关键系统shell过程记录

本文最后更新于:2022年4月13日 下午

1.前言

本文只作复盘记录,不得将其用于违法用途。

2.记录

是某大学的教师个人主页网站,预览界面如下:

在这里插入图片描述

在某次大规模的内网扫描中发现有一个弱口令的MYSQL,

密码是root 123456

在这里插入图片描述

登录进去发现有些熟悉,发现是咱们学校教师个人主页的后端数据库,由之前对整个网站的架构了解到这应该是一个站库分离的系统。

在这里插入图片描述

但是十分可惜的是这个似乎是一个已经被弃用的数据库,里边的数据都有好多年没更新了。。

而且这个mysql虽然是root,但由于提权失败,这个机子最终还是没能拿下来。

在这里插入图片描述

心灰意冷之际,抱着试一试的心态用nmap扫描了全部的端口,然后发现新的数据库也架在上面。。。

在这里插入图片描述

这就有意思了,我们再试试root 123456

一发入魂

在这里插入图片描述

然而这台机子还是提权失败了,但没关系,我们可以把目光转向网页端,也即是尝试着拿一下前端的shell

从数据库中翻到管理员的密码

在这里插入图片描述

这个密文我们可能一开始不知道是什么加密方式,但是没关系,我们有方法找到。

在上面的图中,我们可以发现有很多相同的值。

在这里插入图片描述

可以推测这个就是网站的初始密码,初始密码一般来说不会太复杂,我们可以试着去搜一哈。

在这里插入图片描述

好吧,有些尴尬。。但是没关系啊,我们还有另一个数据库呢,我们用它试试

在这里插入图片描述

在这里插入图片描述

这不就出来了吗

在这里插入图片描述

由这个我们不难看出密码是经过一次sha1加密后将原始的二进制字节流再进行了一次base64编码

通过一些简单的转换我们可以拿到原始的hexdigest:

在这里插入图片描述

将其拿去解密可以拿到管理员的密码:

在这里插入图片描述

登录之

在这里插入图片描述

找了半天上传马子的地方,然后发现这个CMS自带命令执行。。。

在服务器管理–>脚本 中直接能执行系统命令

在这里插入图片描述

在这里插入图片描述

下面这个更完善一些:

1
2
3
4
5
6
7
8
def command = """executable arg1 arg2 arg3"""// Create the String
def proc = command.execute() // Call *execute* on the string
proc.waitFor() // Wait for the command to finish

// Obtain status and output
println "return code: ${ proc.exitValue()}"
println "stderr: ${proc.err.text}"
println "stdout: ${proc.in.text}" // *out* from the external program is *in* for groovy

试了一下没能反弹回shell,猜测是防火墙做了限制。但没关系啊,shell还有正向的呢。

肥肠幸运的是这台机器刚好有nc:

在这里插入图片描述

我们让其监听,然后我们连过去即可:

在这里插入图片描述

接下来就可以进行一系列的权限维持操作了,到后面我们成功拿下了root的交互式shell

在这里插入图片描述

3.总结

运气很重要
不要放过任何一个可能出现问题的点
思维要灵活,懂得在特定场景下合理运用所学的知识


某大学关键系统shell过程记录
https://m0ck1ng-b1rd.github.io/2021/10/07/实战/某大学关键系统shell过程记录/
作者
何语灵
发布于
2021年10月7日
许可协议