napping-1.0.1-vulnhub靶场
环境信息
靶机:192.168.124.147
攻击机:192.168.124.129
打靶过程
nmap 扫描端口及服务
发现开放 22,80 端口
目录扫描
访问 /config.php 是一个空白页
访问 80 端口是一个登录页面,发现可以注册
注册一个 test 用户并登录,提示让输入一个链接地址,管理员将审核
输入“https://baidu.com”并点击提交,发现出现了 a 标签链接可点击
点击后打开一个新的标签页就是输入的链接地址
这里使用 a 标签,并且 target=_blank,没有使用 rel="noopener/noreferrer" 属性,这样跳转很容易受到 tap nabbing 钓鱼攻击;同时使用 window.open 方法也存在该漏洞。
tap nabbing 钓鱼攻击
创建两个页面 a.html,b.html
a.html 为正常页面,b.html 为恶意页面
攻击机在该目录下开启 http 服务,并监听 7777 端口
在页面中输入恶意页面地址并提交
等待一会儿后,果然管理员上钩了,监听返回了数据包,包含了账号密码:daniel/C%40ughtm3napping123
其中的 %40 是 url 编码,解码为 @ 符号
ssh 登录
最终账号密码为 daniel/C@ughtm3napping123
ssh 登录该用户
查找用户组可执行的程序
发现该用户也在 administrators 用户组下
那么查找一下 administrators 组可以运行的程序
find / -group administrators 2>/dev/null
#如果在 Linux 执行 find 命令时弹出大量内容到终端,可以追加 2>/dev/null 在命令末尾,表示:把错误输出到 “黑洞”
Linux系统预留可三个文件描述符:0、1、2,意义如下:
0——标准输入(stdin)
1——标准输出(stdout)即输入到终端
2——标准错误(stderr)
发现定时执行程序
发现该 query.py 脚本是一个检查网站状态的脚本,并且在对 site_status.txt 进行写入操作
查看 site_status.txt 文件,发现每两分钟写入一次,说明 query.py 每两分钟执行一次
反弹 shell
既然 administrators 组用户对该脚本有写权限,我就可以在脚本里加入执行反弹 shell
先生产一个 python 脚本的 shell
稍加改动后,加入 query.py 脚本中:
稍等 2 分钟后,成功反弹 shell
当然,这里也可以在外面创建一个 shell.sh 脚本,在 query.py 中添加执行 shell.sh 脚本的命令也可反弹
在用户家目录下查看,发现似乎离得到 flag 还差一点
vim 提权
使用命令 sudo -l
,发现可以以 sudo 权限执行 vim
查询发现 vim 命令可提权
那么直接提权
sudo vim -c ':!/bin/bash'
成功获取 flag
总结
1.tap nabbing 钓鱼:这里使用 a 标签,并且 target=_blank,没有使用 rel="noopener/noreferrer" 属性,这样跳转很容易受到 tap nabbing 钓鱼攻击;同时使用 window.open 方法也存在该漏洞。
2.用户组权限:find / -group administrators 2>/dev/null 查看administrators用户组可执行的程序
3.vim 提权:vim 被允许以 root 权限运行,可维持该权限