红队打靶:Narak靶机思路讲解(vulnhub)

靶机地址: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

打完这个靶机感觉还是挺有收获的,有很多新的知识点。靶机不难,总结不易,也有很多自己的思考,希望读者能够点赞关注多多支持!学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!

至此打靶完成,以上是我个人实操经验,如有做得不对的地方请多多指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值