声明:该篇文章仅供学习网络安全技术参考研究使用,请勿使用相关技术做违法操作。本公众号的技术文章可以转载,能被更多人认可本文的创作内容属实荣幸之至,请在转载时标明转载来源即可.也欢迎对文章中出现的不足和错误进行批评指正!
实战打靶系列第 14 篇文章
这个靶机中,涉及到http3网站的访问,可以安装quiche进行访问,或者将curl的版本提升到7.66以上,7.66以上有--http3的参数可以使用(需要重新编译)
涉及ssrf漏洞
目标:拿到3个flag并且得到root权限
sudo arp-scan -l
靶机的ip:192.168.56.117
kali的ip:192.168.56.103
nmap -sV -sC -O -p- 192.168.56.117
目标开放了22,80两个端口,22端口跑的是ssh的服务,80端口时apache的http服务,操作系统的检测是Linux 4.15 - 5.6(Debian)
只有一张图片,源码也没有任何可以利用的信息
gobuster dir -u http://192.168.56.117 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
只有joomla的目录暴露出来
指定txt,sql,zip,bak进行扫描
gobuster dir -u http://192.168.56.117 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x txt,sql,zip,bak
除了joomla之外,还扫描出一个note.txt
发现是joomla cms的登录框,尝试弱口令,登陆不进去,而且joomla的版本还是最新的2023
对joomla目录进行一个目录爆破
gobuster dir -u http://192.168.56.117/joomla -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x txt,sql,zip,bak
发现有/administrator的目录,其它的目录和文件都没有信息可以利用
管理员的后台登陆地址,当然,一般弱密码还是登录不进去
发现admin留给开发者们的信息,说需要使用http3去访问https://quic.nagini.hogwarts这个给域名,所有开发人员定期访问服务器以检查最新公告。
将域名quic.nagini.hogwarts添加到host文件中,指向192.168.56.117这个ip
使用可以访问http3的进行访问这个域名
quiche的安装
git clone https://github.com/cloudflare/quiche
cd quiche
apt install cargo
apt install cmake
cargo build --examples(执行这条命令可能会报错,如果报错的话执行后三条命令后在重新执行这条命令,成功执行的话后两条命令不需要执行)apt purge rustccurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh(执行这条命令会让选择选项,选择1)source $HOME/.cargo/envcargo test(测试安装是否成功)
访问域名
cd /quiche/target/debug/examples./http3-client https://quic.nagini.hogwarts
admin提示在本周之后就会去删除这个文件/internalResourceFeTcher.php,还有服务器上面有一些配置文件,这些配置文件是所有人都可以读取的
那么joomal的配置文件:configuration.php
从信息收集,得到了服务器上面应该有/internalResourceFeTcher.php,并且服务器上面有一些bak的配置文件的备份,任何人都可以访问
提示说这是一个内网的资源获取页面,看到这里,觉得是ssrf漏洞
尝试使用file协议进行访问/etc/passwd
发现可以读取
访问80端口
http://127.0.0.1:80
发现返回了80端口的图片,和使用浏览器访问的80端口一样
那么使用gophor协议按是否可以读取一些信息
gopher协议:
可以和后端的很多的基于tcp的服务进行交互,可以去发送针对后端服务操作指令
可以使用gopher确定开放了那哪些端口
gopher://127.0.0.1:22
返回了22端口的信息
那么证明可以使用gopher可以对后端的基于tcp的应用发起请求,
访问80端口,发现左上角一直在进行访问,如果页面一闪而过并且没有回显,那么就说明内网这个端口没有开放
joomal的配置文件:configuration.php
发现真的存在joomal的配置信息的备份
查看配置信息
发现开放了mqsql的服务,并且账号是goblin,数据库是joomla,密码是空的
而且还看到joomla cms的路径
那么也可以使用file协议在/internalResourceFeTcher.php页面访问这个配置文件
file:///var/www/html/joomla/configuration.php
既然有MySQL服务,那么使用gopher判断是否开放了3306端口
发现右上角一直跳动,那么后端是开放了3306端口的,只不过没有对外开放
既然可以使用gopher协议还有开放了MySQL的3306端口,那么利用gopher对mysql服务发送一些指令,读取数据库的信息,使用到一款工具Gopherus-master来进行生成向后端mysql发送指令的payload
工具地址:https://github.com/tarunkant/Gopherus
Gopherus-master需要python2运行
先查看数据库内的表
需要重复提交多次(可能数据库的内容没有回显回来)
以查看源码的方式查看,可以更好的查看返回的信息
发现有joomla_users的表
将所有的字段都返回了回来,发现email的前面是username,后面是password,以这个特征寻找用户和密码
发现有账号和密码,但是密码是加密的,可以选择去进行解密,但是既然可以操作数据库,那么直接将site_admin的密码更换成123(md5加密)
将123加密成MD5值
生成payload
提交
反复提交几次之后,尝试使用site_admin/123进行登录joomla的后台
成功登录
和wordpress的获取初始shell相识,寻找joomla的模板,进行修改
寻找模板
选择一个模板,修改模板文件,这修改第二个模板的error.php文件
直接将error.php文件内容更换成kali自带的php反弹shell的内容
修改反弹的ip和端口
找到error.php的路径(记得是小写的)
看到在加载
获得初始shell
/bin/bash -i 提高交互性
查找信息
发现home目录下有两个用户,切换到snape用户,发现下面有一个隐藏的.creds.txt,查看一下,发现有base64编码的信息
解密一下
类似账号密码
尝试使用该信息去ssh登录snape用户
成功获得snape的shell
拿到第一个flag
在home/hermoine下发现第二个flag,发现只有hermoine可以查看
但是发现当前目录下bin文件夹
发现有具有suid权限的su_cp的文件,并且是一个可执行程序,查看help,发现类似于cp命令,并且其他用户可以执行
那么思路就是将自己kali的公钥传输到目标中,使用su_cp命令,将公钥复制到hermoine的.ssh文件夹下,这样子kali就可以凭借公钥直接登录hermoine账号
生成kali的密钥对
ssh-keygen(其它选项默认即可)
使用scp将公钥传输到snape账号的主目录下
scp id_rsa.pub [email protected]:~/
使用su_cp将公钥拷贝到hermoine的.ssh目录下(给公钥640权限,并且改名为authorized_keys)
/home/hermoine/bin/su_cp authorized_key /home/hermoine/.ssh
kali直接登录
获得hermoine的shell
sudo没有权限
但是在hermoine的主目录下有.mozilla的隐藏文件
.mozilla是linux使用firefox浏览器所生成的文件,里面有使用firefox浏览器下的拓展、安装等信息,还有记住的某些web系统的账号密码
使用scp将.mozilla传输到kali,使用一款针对firefox浏览器账号密码还原的工具firefox_decrypt
工具地址:https://github.com/unode/firefox_decrypt
scp -rp [email protected]:~/.mozilla /tmp
python3 firefox_decrypt.py /tmp/.mozilla/firefox
发现有保存账号密码
使用该账号密码尝试ssh登录
成功登录到root用户,并且拿到第三个flag
参考资料:
https://www.aqniukt.com/goods/show/2434?targetId=16289&preview=0