一.前言
本次的靶场实战是hack the box oopise,难度不是很大,首先还是要先进行连接,连接步骤可以参考我的上一篇博客hack the box archetype靶场-CSDN博客
二.扫描分析
输入以下代码
nmap -sV -F 10.129.58.142
-sV 代表扫描端口和开放的服务信息
-F 快速扫描,扫描常用的端口
可以看到靶场开放了22端口和80端口,以及所使用的中间件服务,输入这个ip到浏览器上
成功出现了一个网页,现在的步骤就是从网页开始突破
三.搜索漏洞
对于一个网页,常用的方法就是看有没有数据交互的点,以及网站结构页面,看了一下,并不存在数据交互的点,试一下搜索以下网站的页面结构,按F12查看一下网页的源代码,看有没有路径泄露。如果是在公网上的网站可以通过google语法很快的找到后台。
发现存在一个登录页面,输入地址到浏览器上。
遇到这样的没有验证码的后台,想到的第一中方法是暴力破解。先不要急着用字典去猜解密码,可以尝试用一下上一个靶机中获取到的密码M3g4c0rp123、MEGACORP_4dm1n!!账号可以尝试用一下 admin、administrator、root等这些高频使用账号。经过测试最终得到账号和密码分别为 admin和MEGACORP_4dm1n!!。登陆后会看到一个上传文件的页面,并且可以上传文件
四.反弹shell
将kali自带的shell文件复制到工作目录,并修改该文件里的IP地址为本机虚拟网卡的IP地址,并且记住端口号。要查看本机虚拟网卡的ip地址可以参考我的上一篇博客。
cp /usr/share/webshells/php/php-reverse-shell.php ~/Desktop/oopise
在本地新建一个监听端口
然后将刚刚自己写的文件上传到网站上,上传成功了
然后访问自己刚刚上传的文件http://10.129.58.142/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所记录的内容指向该设备文件。
此时就可提取桌面上的flag了
五.提权
刚进去的时候,提示当前的yonghu是www-data用户,现在需要进行提权,到网站的目录下查找一下,看有没有数据库的配置文件,并在配置文件中发现了一个账号和密码
切换到robert用户
再次输入id查看自己在哪个组
查看是否能够提权,在用户组robert中没发现特殊的文件。在bugtrackert用户组中发现了一个比较特殊的文件。
find / -type f -group robert 2>/dev/null
find / -type f -group bugtrackert 2>/dev/null
切换到usr/bin目录下,查看下权限,发现该文件有s权限并且该文件所有者是root,s权限代表其他用户在执行该文件时会以该文件的所有者的身份执行。在这里也就是以root的权限执行该文件。
strings bugtracker
strings和cat的功能类似,但是strings可以查看二进制文件,如果用cat查看二进制文件会出现乱码。
可以看到该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
来获取flag了,注意现在不用能cat命令来读取文件了,cat只会让你打开一个新的shell而已。