靶机地址:https://download.vulnhub.com/ha/narak.ova
注释:需使用虚拟机运行
难度:中+
下载完靶机之后使用虚拟机打开,并且需要与kali连接同一网段
一、主机发现
通过arp-scan的扫描可以发现目标主机的ip地址是 192.168.195.132
arp—scan -l -I eth2
二、端口扫描
通过扫描可以发现目标主机开放了22端口ssh服务、80端口http服务并且是Apache的等
nmap -sV -sC -p- 192.168.42.132 或者是 nmap -A 192.168.42.132
三、web渗透
通过端口扫描发现了目标主机开放了80端口http服务。接下来访问目标网址
直接点开就是一大堆图片,查看网页源代码也没太多信息,感觉也没有什么CMS可言,界面的最下方是about,但也没啥信息,最下面有一个按钮,写着do not click,意思说别点,难道会有什么可怕的东西?天生反骨得我偏要点!!!
点击这个末尾的Do Nt Click之后跳转到了一幅漫画
这漫画你就自己看吧我就不解释了,咱也不是来看漫画的发现url中有个images,估计是个目录我们试着访问/images/
就是个图片的目录,也没太多信息,说不定以后能在这个目录上传shell,现在也不好说。到这里web好像没有太多信息可以利用。
四、目录爆破
由于没有太多信息可以利用,因此我们进行一下目录爆破看看有啥收获这次我们使用gobuster,dir指定目录爆破,-w指定字典。或者使用dirb等这里只介绍两种方法
发现有一个server-status的文件跟webdav的文件,那我们浏览器访问一下这两个目录
server-status目录没有太多信息,那我们访问一下webdav文件
Webdav的文件需要账户密码,看来这就有可能是个突破口
五、目录枚举
现在我们的核心思路应该就是寻找websav目录的凭据了。还有哪里我们没有寻找呢?此处想到了vulnhub页面的提示,“枚举”是关键。在使用gobuser进行爆破时,我们仅仅爆破了目录,没有对文件进行爆破,说不定一些关键文件就藏在其中,因此我们再次进行爆破,使用-x参数添加一些后缀名,包含可能的文件,比如rar/zip/txt/php/sql/html等
gobuster dir -w/usr/share/dirbuster/wordlists/directory-list-2.3-medium,txt -x zip,rar,txt,sql,php,html -u http: //192.168.42.132
我感觉最大的收获就是发现了tips.txt文本文件(index.html就是初始页面),那么curl访问一下咯(也可以用浏览器)
提示我们通往narak的门的线索可以在creds.txt找到,那么问题来了,creds.txt在哪里?难道也是在web目录可以直接访问的吗?
哪有那么多低摘的果子,不可能这么简单,人家又不傻。如果是我的话,走到这里就进行不下去了。
六·、ftp渗透
此时思路受阻,我们知道需要寻找creds.txt,却不知道在哪里寻找。
我记得vulnhub的页面对于这个靶机的描述中有这样一句话: 燃烧的墙壁和恶魔无处不在,即使你最信任的工具也会在这次任务中背叛你。不要相信任何人。截至目前,我们用到了哪些工具呢?用nmap进行了主机发现和端口扫描,用gobuster进行了目录爆破。那会不会是我们被工具“背叛”了呢?莫非实际的结果并不是工具显示的那样?先说gobuster,我们进行web目录爆破可以用很多工具,其实没有本质区别,关键还是字典的问题,因此应该不是爆破工具的问题。莫非是nmap端口扫描的结果有误或者遗漏了什么?比如有可能遗漏了某些开放的UDP端口。(这段话是我看了红队笔记视频,自己再回想的时候想到的)
我们当初端口扫描的时候显示没有任何开放的UDP端口,这里重新扫描一下,也是同样的结果。我们干脆尝试探测常见的UDP端口是否开放吧,先尝试top10常用的UDP端口
确实,比如什么161,1434端口都是有可能开放的,但这些端口应该与我们要寻找creds.txt无关,再试试top20端口
nice,我们发现了tftp端口69,这是一个简单文件传输协议,用来在客户端和服务端进行文件传输,这个协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录
既然如此,那我们试试能不能用tftp协议,从靶机服务器把creds.txt下载下来,直接用tftp后接靶机地址即可连接靶机
不愧是简单文件传输协议,不能ls,好在我们已经知道我们的目标是获取creds.txt,那我们就尝试get一下了。
nice,下载下来了,我们输入quit退出tftp,然后查看这个creds.txt
貌似是个base64编码,我们解码一下
yamdoot:Swarg
成功拿到了凭据,这很可能是最初webdav目录的访问凭据!
七、webdav利用
回到webdav页面:输入用户名yamdoot,密码Swarg,可以进入到如下的页面
这个页面也没啥东西呀?此时就涉及到对webdav的了解了,webdav是一个基于HTTP1.1的通信新协议,允许客户端发布、锁定和管理 Web 上的资源,那么我们现在就是企图获取webdav的权限,据此拿到初始shell。
此时kali中有许多工具可以充当webdav的客户端,其中有一个工具davtest,可以测试通过webdav能上传哪些后缀文件以及其对应权限
可以看到上传的文件类型基本上都可以上传,再看一下执行权限
发现是可以执行php文件的,因此我们可以尝试上传php类型的反弹shell,将kali自带的shell文件拷过来使用。
cp /usr/share/webshells/php/php-reverse-shell.php .
编辑put php-reverse-shell.php文件
vi php-reverse-shell.php
需要把这里的ip改成自己kali的port端口需要自己设一个
然后再利用一个客户端。把shell上传,此处使用的webdav客户端是cadaver
回到浏览器,可以看到我们上传的shell,那个DavTestDir_是我们刚刚用testdav工具尝试上传的目录
此时我们开启nc监听4444端口,然后访问shell.php,即可触发反弹shell
八、寻找敏感文件初步提权
此时我们拿到了www-data的shell,通常我会sudo -l查看有什么可以利用的二进制文件,先用python3增强交互性后运行sudo -l结果显示需要密码。
下一步就是可以查看计划任务、备份文件、suid的文件、可写文件等,总之寻找有没有一些ssh登录的凭据或是可以利用的提权文件:最终通过查找可写的文件发现了一些端倪
find / -writable -type f -not -path "/proc/*" -not -path "/sys/*" -not -path "/var/*" 2>/dev/null
发现了一个可编辑的bash脚本hell.sh,还有一个users.password,除此之外还有一些update-motd.d下的文件,查看这个user.password。
看来就是webdav的登录凭据,应该不是我们要找的ssh凭据。那查看一下hell.sh文件
--[----->+<]>---.+++++.+.+++++++++++.--.+++[->+++<]>++.++++++.--[--->+<]>--.-----.++++.
可以看到一行奇怪的文字,觉得应该是brainfuck的编程语言
可是咱也不太懂这个语言,可以用beef工具进行解释,首先将brainfuck的字符存为一个文件hell.bf,然后用beef解释器翻译一下
解出来一串字符chitragupt
这很可能是ssh的一个密码,那么是哪个用户名呢?我们可以查看/etc/passwd,寻找哪些账户有shell环境
可以发现重点就是narak,yamdoot,inferno三个用户,依次尝试一下就可以发现chitragupt是用户inferno的ssh密码
九、motd利用提权
此时我们拿到了inferno的权限,先看看目录都有啥东东
意料之中拿到了第一个flag即user.txt。下面的目标就是拿到root权限了。Sudo -l也是此路不通
因此接下来有两种大致思路,其一,和刚才类似,继续寻找高权限的凭据,也就是root的ssh凭据,其二,利用一些root高权限的工具/可执行文件/脚本等实现提权。同样,一番搜索之后,最终发现了一些能够利用的具有可写权限的文件
重点关注motd相关的文件,我们进入/etc/update-motd.d/,然后查看相关文件的权限
MOTD(Message of the Day)是Linux系统登录时显示的一段信息,我们要重点关注00-header,这是linux在登录时会运行的显示欢迎信息的脚本,可以发现这个就脚本的所有者和所在组都是root,且此时inferno用户拥有对该文件的写权限,因此我们只要在这个文件中添加反弹shell的代码,当该脚本执行时即可触发反弹shell,我们先查看一下这个文档
然后我们通过vi工具编辑,或通过echo追加的方式,在其中添加反弹shell代码
然后在kali中nc监听2222端口
重新ssh登录inferno用户触发00-header脚本执行,从而触发反弹shell,又由于运行这个脚本时是具有root权限的(此处我有点疑惑),成功触发了反弹shell,且反弹的是root的shell,也就是提权成功了!
第二个flag就在root目录下的root.txt
打完这个靶机感觉还是挺有收获的,有很多新的知识点。靶机不难,总结不易,也有很多自己的思考,希望读者能够点赞关注多多支持!学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!
至此打靶完成,以上是我个人实操经验,如有做得不对的地方请多多指教