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.
Artigo também em: https://www.linkedin.com/in/pedro-henrique-de-mattos-neto-ab413a144