本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/dailybugle
通过学习相关知识点:通过 SQLi 渗透Joomla CMS 帐户,练习哈希破解操作并利用 yum 进行提权。
部署目标机
部署机器(重新部署靶机将导致目标ip发生变化),访问目标站点。
获取用户权限
使用nmap进行端口扫描
nmap -Pn -sC -sV 10.10.74.183
由扫描结果得知:目标站点使用的CMS应该是Joomla CMS,并且还开启了mysql服务。
使用gobuster进行目录扫描
gobuster dir -u http://10.10.74.183/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --no-error
查看网站robots文件
访问网站的管理页面( http://10.10.74.183/administrator/ ),成功进入到网站管理系统的登录页面。
使用joomscan针对目标站点进行扫描,joomscan是一个专门用于扫描Joomla CMS的工具。
joomscan -u http://10.10.74.183 #此处ip为目标ip
#也可以通过浏览器在线快速获取Joomla CMS的版本信息:直接访问10.10.74.183/language/en-GB/en-GB.xml即可。
可知目标所使用的Joomla CMS版本为:Joomla 3.7.0
在漏洞库中搜索该CMS 版本,发现存在SQL注入漏洞,此漏洞详情可以参考:https://blog.sucuri.net/2017/05/sql-injection-vulnerability-joomla-3-7.html
在此我们不使用exploit-db所提供的exp,转而使用另外一个Python形式的exp方案:https://github.com/XiphosResearch/exploits/tree/master/Joomblah
具体的脚本地址为:https://github.com/XiphosResearch/exploits/blob/master/Joomblah/joomblah.py
wget https://raw.githubusercontent.com/XiphosResearch/exploits/master/Joomblah/joomblah.py
sudo python2 joomblah.py http://10.10.74.183
#此处ip为目标ip
成功获取到用户名和密码信息:jonah、$2y$10$0veO/JSFh4389Lluc4Xya.dfy2MF.bZhz0jVMw.V.d3p12kBtZutm
查询上述hash值的加密方式( https://hashcat.net/wiki/doku.php?id=example_hashes )并使用john工具进行hash破解(需要提前将hash值保存为txt文件)
john --wordlist=/usr/share/wordlists/rockyou.txt jonahhash.txt --format=bcrypt
破解得到的hash密码明文为:spiderman123
jonah:spiderman123
登录目标站点的CMS管理后台( http://target_ip/administrator/ ),进入templates即模板界面,找到模板beez3并在index.php中写入反向shell脚本内容,参考以下链接(记得修改ip和端口):https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
在本地机上建立一个Netcat监听器,然后访问已修改的CMS模版主页面(http://ip/templates/beez3/index.php ),即可成功在本地机终端获得一个shell界面。
获取到目标网站的shell之后:查看身份权限,切换至/home目录查看用户信息,前往网站目录(cd /var/www/html
)检查配置文件。
我们在网站目录下的configuration.php文件中发现一个凭据:nv5uz9r3ZEDzVjNu
继续使用当前shell界面,尝试通过刚才获取的凭据来切换用户身份
成功切换为jjameson用户,查看到的user.txt的内容为:27a260fe3cba712cfdedb1c86d80442e
提权-获取root权限
基于上一小节的shell界面(身份为jjameson),输入命令sudo -l
检查用户 jjameson 的 sudo 权限。
由上述结果可知:用户 jjameson可以以 sudo 身份运行 yum命令
在 https://gtfobins.github.io/ 网站查找yum在sudo身份下的提权方式。
为了方便操作,我们可以通过ssh连接到jjameson用户(登录凭证和前面的相同),然后再复制以上提权命令到ssh界面直接执行,即可得到root shell。
输入命令进入/root目录并查看root.txt内容。
root.txt内容为:eec3d53292b1821868266858d7fa6f79