Pular para conteúdo

Eventos

Consultar eventos

Obter eventos de segurança de Firewall, WAF e Rate Limit

GET /v1/firewall/event/{dominio}?offset={offset}&limit={limit}&start_date={timestamp}&end_date={timestamp}
$ curl -i "https://api.gocache.com.br/v1/firewall/event/seudominio.com.br?offset=0&limit=50&start_date=1546308000&end_date=1546394400" \
-H 'GoCache-Token:seu_token'
<?php

$ch = curl_init("https://api.gocache.com.br/v1/firewall/event/seudominio.com.br?offset=0&limit=50&start_date=1546308000&end_date=1546394400");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array("GoCache-Token: seu_token"));

$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);
?>

Parâmetros

Campo Opcional Tipo Descrição
offset Number Posição inicial da lista de eventos
limit Number Quantidade máxima de eventos a serem obtidos em uma mesma chamada de API
cursor String Cursor utilizado para retornar novas páginas de busca.
Também está presente no valor de retorno (se for NULL, significa que não existem mais resultados)
start_date Number Horário inicial dos eventos (em formato unix timestamp)
end_date Number Horário final dos eventos (em formato unix timestamp)
type String Filtrar eventos pelo tipo de evento
Valores permitidos: "waf", "firewall", "ratelimit"
action String Filtrar eventos pela Ação do evento
Valores permitidos: "block", "challenge", "simulate"
id String Filtrar por um evento específico pelo ID do mesmo
country_code String Filtrar eventos por país de acesso (notação ISO-ALPHA-2)
client String Filtrar eventos pelo IP de acesso
host String Filtrar eventos pelo nome do subdomínio acessado

Exemplo de sucesso

HTTP/1.1 200 OK
{
  "response": {
    "total": 2,
    "cursor": "AABBCCDDEEFF00112233445566778899==",
    "events": [
      {
        "host": "www.seudominio.com.br",
        "domain": "seudominio.com.br",
        "action": "challenge",
        "client": "1.2.3.4",
        "id": "aabbccddeeff112233445566778899",
        "timestamp": 1546308000,
        "country_code": "BR",
        "type": "waf"
      },
      {
        "host": "cdn.seudominio.com.br",
        "domain": "seudominio.com.br",
        "action": "block",
        "client": "4.3.2.1",
        "id": "aabbccddeeff112233445566778800",
        "timestamp": 1546358000,
        "country_code": "US",
        "type": "firewall"
      }
    ]
  }
}
<?php

if( $statusCode == 200 ) {

    echo("Sucesso!\n");

    $obj = json_decode($response);

    echo("Total de eventos: " . ($obj->response->total) . "\n");
}
?>

Quantidade de eventos

Quantidade de eventos de uma certa busca

GET /v1/firewall/event/{dominio}?count=1
$ curl -i https://api.gocache.com.br/v1/firewall/event/seudominio.com.br?count=1&start_date=1546308000&end_date=1546394400 \
-H 'GoCache-Token:seu_token'
<?php

$ch = curl_init("https://api.gocache.com.br/v2/firewall/event/seudominio.com.br?count=1&start_date=1546308000&end_date=1546394400");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array("GoCache-Token: seu_token"));

$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);
?>

Parâmetros

Campo Opcional Tipo Descrição
start_date Number Horário inicial dos eventos (em formato unix timestamp)
end_date Number Horário final dos eventos (em formato unix timestamp)
type String Filtrar eventos pelo tipo de evento
Valores permitidos: "waf", "firewall", "ratelimit"
action String Filtrar eventos pela Ação do evento
Valores permitidos: "block", "challenge", "simulate"
id String Filtrar por um evento específico pelo ID do mesmo
country_code String Filtrar eventos por país de acesso (notação ISO-ALPHA-2)
client String Filtrar eventos pelo IP de acesso
host String Filtrar eventos pelo nome do subdomínio acessado

Exemplo de sucesso

HTTP/1.1 200 OK
{
  "response": {
    "total": 2,
  }
}
<?php

if( $statusCode == 200 ) {

    echo("Sucesso!\n");

    $obj = json_decode($response);

    echo("Total de eventos: " . ($obj->response->total) . "\n");
}
?>

Consultar evento específico

Com o objetivo de se criar mais consciência do que vem acontecendo em relação aos eventos de segurança, e com isso poder fortificar a aplicação para lidar com esses ataques, é interessante ter-se mais detalhes sobre essas tentativas de exploração.

GET https://api.gocache.com.br/v1/firewall/event/{dominio}/{id_evento}?timestamp={timestamp_do_evento}
curl -i "https://api.gocache.com.br/v1/firewall/event/seudominio.com.br/5e3396c0afbca534e2400?timestamp=1631061712" \
-H 'GoCache-Token:seu_token'
<?php

$ch = curl_init("https://api.gocache.com.br/v1/firewall/event/seudominio.com.br/55e3396c0afbca534e2400?timestamp=1631061712" );

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array("GoCache-Token:seu_token"));

$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);
?>

Parâmetros

Campo Opcional Tipo Descrição
id_evento String ID do evento
timestamp Number Horário de ocorrência (em formato timestamp)
{  
    "response": {  
        "event": {  
            "host": "seudominio.com.br",  
            "alerts": [{  
                    "msg": "SQL Injection attempt",  
                    "id": 41008  
                },{  
                    "msg": "SQL Injection attempt",  
                    "id": 41013  
                },{  
                    "msg": "MSSQL code injection",  
                    "id": 41017  
                },{  
                    "msg": "Concatenated SQL injection / SQLLFI",  
                    "id": 41035  
                }],  
            "id": "5e3396c0afbca534e24005",  
            "method": "GET",  
            "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:93.0)",  
            "domain": "seudominio.com.br",  
            "country_name": "Brazil",  
            "uri_args": {  
                "s": " UNION ALL SELECT 'INJ'||'ECT'||'XXX',2,3-- -"  
            },  
            "referer": "https://seudominio.com.br/",  
            "uri": "/",  
            "action": "challenge",  
            "client": "179.247.XXX.XXX",  
            "timestamp": 1631061712,  
            "country_code": "BR",  
            "type": "waf"  
        }  
    }  
}
<?php

if( $statusCode == 200 ) {

        echo("Sucesso!\n");

        $obj = json_decode($response);

    print_r($obj);

}
?>