Mattos Hacking Blog 

Ferramenta HTTPX para agilizar seu RECON 

O HTTPX é uma biblioteca em Python que pode ser extremamente útil para a fase de reconhecimento (RECON) em testes de segurança e atividades de pesquisa em segurança da informação. O HTTPX oferece um cliente HTTP assíncrono e síncrono com suporte a conexões HTTP/1.1, HTTP/2 e também a verificação de status de certificados SSL/TLS.

Aqui está um guia básico sobre como utilizar o HTTPX para agilizar o seu processo de RECON:

1. Instalação

Primeiro, você precisa instalar o HTTPX. Você pode fazer isso usando o pip:

bash

pip install httpx


2. Realizando Requisições Simples

Para começar, você pode usar HTTPX para fazer requisições HTTP simples. Isso pode ajudar a identificar endpoints, status de servidores e outras informações.

Exemplo de Requisição Simples:


python


import httpx


url = 'http://example.com'


# Requisição síncrona

response = httpx.get(url)

print(response.status_code)

print(response.text)


# Requisição assíncrona

async def fetch(url):

    async with httpx.AsyncClient() as client:

        response = await client.get(url)

        print(response.status_code)

        print(response.text)


# Para rodar a função assíncrona

import asyncio

asyncio.run(fetch(url))


3. Coletando Cabeçalhos e Outras Informações

Durante o RECON, coletar cabeçalhos HTTP e outras informações pode ser crucial. HTTPX facilita a extração desses dados.

Exemplo de Extração de Cabeçalhos:


python


import httpx


url = 'http://example.com'

response = httpx.get(url)


print("Cabeçalhos:")

for header, value in response.headers.items():

    print(f"{header}: {value}")


4. Realizando Requests em Paralelo

Para agilizar o processo de RECON, você pode precisar fazer múltiplas requisições ao mesmo tempo. HTTPX oferece suporte a operações assíncronas para isso.

Exemplo de Requisições Paralelas:

python


import httpx

import asyncio


async def fetch(url):

    async with httpx.AsyncClient() as client:

        response = await client.get(url)

        return response


async def main(urls):

    tasks = [fetch(url) for url in urls]

    responses = await asyncio.gather(*tasks)

    for response in responses:

        print(response.url, response.status_code)


urls = ['http://example.com', 'http://example.org']

asyncio.run(main(urls))


5. Verificando Status de Certificados SSL/TLS

HTTPX permite verificar o status dos certificados SSL/TLS das páginas, o que pode ser importante para identificar problemas de segurança.

Exemplo de Verificação de SSL:


python

import httpx


url = 'https://example.com'


try:

    response = httpx.get(url, verify=True)

    print("SSL/TLS está funcionando.")

except httpx.SSLError:

    print("Erro de SSL/TLS.")


6. Manipulação de Tempo de Espera e Tentativas

Configurar tempos de espera e tentativas pode ajudar a evitar bloqueios e lidar com servidores lentos.

Exemplo de Configuração de Tempo de Espera:


python


import httpx


url = 'http://example.com'


# Configurando timeout

timeout = httpx.Timeout(10.0, connect=5.0)

client = httpx.Client(timeout=timeout)


response = client.get(url)

print(response.status_code)


7. Trabalhando com Proxies

Se precisar fazer requisições através de proxies, HTTPX suporta isso também.

Exemplo de Configuração de Proxy:


python


import httpx


proxies = {

    'http://': 'http://proxy.example.com:8080',

    'https://': 'http://proxy.example.com:8080',

}


client = httpx.Client(proxies=proxies)

response = client.get('http://example.com')

print(response.status_code)


Conclusão

Utilizar HTTPX pode acelerar significativamente seu RECON, proporcionando uma maneira eficiente de fazer requisições HTTP, coletar dados e realizar verificações. Experimente as diferentes funcionalidades e adapte o uso da biblioteca às suas necessidades específicas de pesquisa e segurança.