Pentest 2023: Vazamento de informações pelo método OPTIONS

Description

Problema


Foi possível identificar na API https://pentest.carol.ai/api/v1/* que o método HTTP OPTIONS retorna diversas informações sobre o funcionamento da API, incluindo parâmetros HTTP e rotas, facilitando muito a enumeração para os atacantes. Esse tipo de comportamento pode ser mitigado por meio do bloqueio do método HTTP no API Gateway ou desabilitando o método OPTIONS no Servidor Web utilizado, Jersey.
A seguinte evidência demonstra uma requisição sendo enviada para o endpoint "/api/v1/users" com o método HTTP OPTIONS, que faz com que o servidor web retorne diversas informações como rotas, parâmetros, método HTTP e caminho da requisição.

Documento Pentest


https://drive.google.com/file/d/1kcDewpYZ8VffMgTXKi7VLQZ5JIdRRL9a/view?usp=sharing

Activity

Automation for Jira 10 April 2024, 21:10 Jira Internal Users

Esta issue foi automaticamente movida para REGRESSION, pois o PR foi mergeado na branch QA no Github.

Automation for Jira 10 April 2024, 21:10 Jira Internal Users

Esta issue foi automaticamente movida para REGRESSION, pois o PR foi mergeado na branch QA no Github.

Automation for Jira 9 April 2024, 12:36 Jira Internal Users

Esta issue foi automaticamente movida para TESTED & MERGED, pois o PR foi mergeado na branch Develop no Github. PR aprovado por lucasnoetzold,douglascoimbra.

Automation for Jira 4 April 2024, 13:59 Jira Internal Users

Github usuário douglascoimbra aprovou um PR e foi adicionado como Shared Assignee nesta issue.

fix: https://totvsiddia.atlassian.net/browse/CAPL-5565#icft=CAPL-5565 - added filter to prevent OPTIONS method

Automation for Jira 4 April 2024, 13:54 Jira Internal Users

Esta issue foi automaticamente movimentada para QA REVIEW, pois o PR foi aprovado no Github.

Automation for Jira 4 April 2024, 13:34 Jira Internal Users

Card revalidado e esta OK (retornando valor 200). Pendente code review. Adicionando ele no `NEXT DEVELOP`

Mensagem enviada pelo Slack - plataforma-carol-internal - Douglas Coimbra Lopes

Douglas Coimbra Lopes 4 April 2024, 13:27 Jira Internal Users

RETESTED AND IT IS NOW RETURNING 200 RESPONSE

image-20240404-132555.png

image-20240404-133338.png
Automation for Jira 3 April 2024, 20:18 Jira Internal Users

Esta issue foi automaticamente movimentada para REVIEW, pois o PR (não DRAFT e não WIP) foi criado no Github.

fix: https://totvsiddia.atlassian.net/browse/CAPL-5565#icft=CAPL-5565 - added filter to prevent OPTIONS method

Automation for Jira 3 April 2024, 19:18 Jira Internal Users

@MARCOS STUMPF ,
@Reinaldo Oliveira Machado Junior , @Gabriel DAmore Marciano , @Lucas Noetzold

Flag foi removida, pois você acabou de alterar o status desta issue.

Automation for Jira 1 April 2024, 18:59 Jira Internal Users

Esta issue foi automaticamente movimentada para QA REVIEW, pois o PR foi aprovado no Github.

Automation for Jira 27 March 2024, 13:47 Jira Internal Users

Card validado pelo time de QA. Pendente apenas o Code Review

Mensagem enviada pelo Slack - plataforma-carol-internal - Douglas Coimbra Lopes

Douglas Coimbra Lopes 27 March 2024, 12:01 Jira Internal Users
image-20240327-120055.png
Automation for Jira 25 March 2024, 19:37 Jira Internal Users

@MARCOS STUMPF ,
@Jonathan Willian Moraes , @Gabriel DAmore Marciano , @Lucas Noetzold

This issue was planned to be delivered until 2024-04-15. You can check that by consulting the issue in the Due Date field.

Dates already planned for this issue: 2024-04-15

If External Issue Link field is filled, customer was also informed on JIRA TOTVS.

Robson Thanael Poffo 18 March 2024, 12:56 Jira Internal Users

@Gabriel DAmore Marciano , eu consegui reproduzir o item reportado no teste pentest através do seguinte comando:

1

curl -X 'OPTIONS' 'https://poffo.carol.ai/api/v1/users'

Retorna:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
    <doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 2.34 2021-04-16 19:50:40"/>
    <grammars/>
    <resources base="https://poffo.carol.ai/">
        <resource path="api/v1/users">
            <method id="createUser" name="POST">
                <request>
                    <representation mediaType="application/json"/>
                </request>
                <response>
                    <representation mediaType="application/json"/>
                </response>
            </method>
            <method id="getUsers" name="GET">
                <request>
                    <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="offset" style="query" type="xs:int" default="0"/>
                    <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="pageSize" style="query" type="xs:int" default="10"/>
                    <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="sortBy" style="query" type="xs:string"/>
                    <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="sortOrder" style="query" type="xs:string" default="ASC"/>
                </request>
                <response>
                    <representation mediaType="application/json"/>
                </response>
            </method>
            <resource path="/invites/{mdmId}">
                <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="mdmId" style="template" type="xs:string"/>
                <method id="deleteInvite" name="DELETE">
                    <request>
                        <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="inviteType" style="query" type="xs:string" default="mdmAdminInvite"/>
                    </request>
                    <response>
                        <representation mediaType="application/json"/>
                    </response>
                </method>
            </resource>
            <resource path="/invites/token/{inviteToken}">
                <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="inviteToken" style="template" type="xs:string"/>
                <method id="deleteInviteByToken" name="DELETE">
                    <request>
                        <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="inviteType" style="query" type="xs:string" default="mdmAdminInvite"/>
                    </request>
                    <response>
                        <representation mediaType="application/json"/>
                    </response>
                </method>
                .....
Gabriel DAmore Marciano 28 February 2024, 21:01 Jira Internal Users

Flag added

Waiting decision here