目录
写在开头
本篇博客根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。本靶机的难度也不高,但还是有很多值得思考的地方,尤其是对php代码的理解。本文的打靶过程涉及到关于cms漏洞利用、敏感信息搜索、john破解密码哈希、sudoers文件提权 等。打完这个靶机还有一个启发:信息搜集如果能更加完整,会省很多兜圈子的操作。完整打靶思路详见:
「红队笔记」靶机精讲:Kioptrix1.2 - LotusCMS公开漏洞利用,配置文件敏感信息枚举,mysql数据库信息搜集,使用john暴力破解md5哈希_哔哩哔哩_bilibili
本文针对的靶机源于vulnhub,详情见:
Kioptrix: Level 1.2 (#3) ~ VulnHub

下载链接见:
http://www.kioptrix.com/dlvm/KVM3.rar
本靶机的目标是拿到root权限,并查看/root目录下的flag。下载成功后用vmware打开,将网络链接设置为NAT模式。靶机打开之后如下:

第一步:主机发现和端口扫描
常规思路,不细讲了。有关主机发现和端口扫描的命令详见我的这篇博客中关于nmap的部分:渗透测试:主机发现和端口扫描的思路方法总结(nmap+ping命令+nc.traditional+伪设备连接)
bash
nmap -sn 10.10.10.0/24
nmap --min-rate 10000 -p- 10.10.10.136
nmap -sT -sV -O -sC -p22,80 10.10.10.136
nmap -sU --min-rate 10000 -p- 10.10.10.136
nmap --script=vuln -p22,80 10.10.10.136
扫出来靶机的ip是10.10.10.136,也是仅仅开放了22和80端口,入口点应该就是Web了。再使用默认脚本扫描,并探测开放服务和操作系统版本如下:

漏洞扫描也有一些收获,貌似有一些SQL注入的漏洞,还有目录枚举,可能会有一些敏感信息。至于暴露出来的Dos、CSRF等漏洞我们相对不太关注

第二步:Web渗透与CMS漏洞利用
打开浏览器访问靶机ip,可看到如下界面:

注意url中有page参数,可以尝试文件包含,我试了一下发现没啥收获。这个页面大概就是说开发者搭建了一个新的名为gallery的CMS,同时对这个CMS的安全性很自信。具体信息可以看Blog模块,我们看了看Blog中的信息,其实也看不出什么对渗透有用的信息。点击最后一个Login模块,跳转花费了一些时间,最后看到了如下的登录界面:

这个界面应该就是CMS后台的登录界面了。同时我们可以从标签的title和下部的banner中看到这个界面的cms名为LotusCMS,既然是正经的cms,我们可以先去searchspoit搜索一下这个CMS有啥漏洞:

其中第一个18565是msf框架下的利用,我们暂时忽略,第二个16982下载下来发现主要是关于CSRF和XSS的漏洞,构造起来比较麻烦,因此我们尝试再去互联网搜索搜索LotusCMS exploit,发现在github中存在LotusCMS的漏洞利用脚本:

其中漏洞利用的脚本是lotusRCE.sh,链接为:LotusCMS-Exploit/lotusRCE.sh at master · Hood3dRob1n/LotusCMS-Exploit · GitHub

把这个代码下载到kali中,vim查看:

可以看到大致的用法就是这个脚本后接lotusCMS的路径,因此我们运行:
bash
./lotusRCE.sh http://10.10.10.136/

提示确实存在代码注入的位置,还问我们要用哪个IP进行利用,那应该就是反弹shell的ip,我们在kali中开启nc监听1234端口,然后在这个漏洞利用脚本中输入kali的ip和端口即可:


漏洞脚本又让我们选择连接模式,我们直接选择常见的NetCat -e即可,输入1,再回车
可以看到nc监听的终端已经收到了shell:

第三步:敏感信息搜索
已经拿到了初始shell,尝试提权。先用python映射一个端口增加交互性:
bash
python -c "import pty;pty.spawn('/bin/bash')"

sudo -l查看当前权限,结果要求输入密码,咱不知道密码是啥。

查看/etc/passwd试试:

可以看到除了root之外,还有两个用户loneferret和dreg是有bash的,应该是关键的账户。尝试读取/etc/shadow发现权限不够。那我们就尝试搜索看看有啥敏感文件吧,手下看看当前目录有啥东西:

有几个文件夹的名字会吸引我们关注。包括缓存cache,内核core,数据data,已经最初在浏览器访问靶机ip中显示开发者开发的cms名称gallery。一番查找最后发现了一个数据库的登录密码,在gallery目录下的gconfig.php:


mysql的root账号密码为fuckeyou,这个密码还挺骂人的。那我们就尝试登录mysql吧
bash
mysql -u root -p
fuckeyou
登录成功,查找有什么数据库:

显然我们最关注的是gallery这个数据库,选中它再看看里面有啥表:

里面有两张表是我们关注的,关于账户的accounts和关于用户的users,先查看dev_accounts:

成功搞到了两个密码的hash,由/etc/passwd可以判断者就是那两个有bash的账户,密码加密应该是md5,我们把这个密码的hash复制下来存为一个文件,文件名就叫hash好了:

然后用john破解这俩md5,一般靶机中的md5的常用字典是rockyou.txt
bash
john hash --format=Raw-MD5 --wordlist=/usr/share/wordlists/rockyou.txt

这里插叙一下,重复用john破解相同的密码哈希是无法显示结果的,而john会将破解结果存在john.pot中,路径如下:

可以查看这个john.pot来查看历史破解结果,总之我们得到了dreg用户的密码是Mast3r,loneferret 用户的密码是starwars(注意md5值的对应关系),可以尝试ssh登录了。
另外还可以查看gallarific_users这张表,也发现了一个用户和密码。经过尝试,这个密码(n0t7t1k4) 正是Login后天的admin登录密码。

这个密码也很有用,不过鉴于此时我们已经拿到了ssh的两个登录账号,不妨先试试ssh登录。
第四步:SSH登录与提权
尝试用户dreg,密码Mast3r登录:

提示没有匹配的host key,老问题了,添加参数-oHostKeyAlgorithms=ssh-rsa,ssh-dss即可,第一次出现这个问题是在红队打靶:LampSecurity:CTF4打靶思路详解(vulnhub)_Bossfrank的博客-CSDN博客
bash
ssh dreg@10.10.10.136 -oHostKeyAlgorithms=ssh-rsa,ssh-dss

登录成功了!sudo -l查看权限试试:

这个账号没有运行sudo的权限,然后查找了一番定时任务和当前目录的信息,也没有啥收获,干脆看看另外一个账号loneferret登录:
bash
ssh loneferret@10.10.10.136 -oHostKeyAlgorithms=ssh-rsa,ssh-dss
starwars
也登录成功了:

查看loneferret用户的权限,如下:

发现我们可以免密运行两个程序,先试试su:

很遗憾,提示我们loneferret用户不允许以root执行su,那再试试sudo运行ht吧:
bash
sudo /usr/local/bin/ht

再度失败了,提示是终端tmux的问题,那么我们再添加一下终端的环境变量:
bash
export TERM=xterm-color
再次sudo运行ht试试 :

可以发现这是个编辑器,既然我们可以sudo启动这个编辑器,那么这个编辑器应该是具有root权限的,我们可以用这个ht编辑器修改系统的配置实现提权,最简单的思路便是修改/etc/sudoers这个文件,我们先尝试打开这个文件,按F3,输入/etc/sudoers即可编辑:

我们尝试在最后一行追加loneferret ALL=(ALL)NOPASSWD:ALL,应该就可以修改当前用户为最高权限了:

然后按F10退出,再次运行sudo -l查看权限,可以看到已经有ALL权限了:

那么我们sudo启动一个bash即可提权:
bash
sudo /bin/bash

然后我们查看/root目录,发现有一个Congrats.txt:

至此打靶完成。
总结与思考
靶机并不是很难,但还是有很多细节的点需要思考。思路的核心还是发现CMS的类型以及漏洞,在searchspoit搜索并未发现特别好的漏洞利用脚本的时候,不妨去github再进行搜索,关键点还是利用这个LotusCMS的漏洞获取反弹shell,然后就是一些敏感信息搜索的工作。在进行提权时,发现ht编辑器具有root权限,立刻就应该想到可以用这个编辑器编辑一些系统配置,从而实现提权,不一定非要像我这样在/etc/sudoers中追加loneferret ALL=(ALL)NOPASSWD:ALL,也可以通过直接修改/etc/passwd中root的密码等方法。最后还是总结一下打靶过程:
1.主机发现和端口扫描
2.Web渗透,发现LotusCMS,最终通过github搜索获得漏洞利用脚本,运行后获得反弹shell。
3.敏感信息搜索:发现数据库root的密码,成功登录数据库,查找到了ssh登录账号的密码hash,用john破解后获得密码。
4.ssh登录与提权:SSH登录后发现loneferret用户具有sudo /usr/local/bin/ht的权限,利用ht编辑器修改系统配置文件即可提权。
到此这个靶机就讲解完毕了。靶机不难,总结不易,也有很多自己的思考,希望读者能够点赞关注多多支持!如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!