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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
purpleteam-s2-containers — 2단계 컨테이너 | Kitploit
도구/GitLabGitLab/purpleteam-labs/purpleteam-s2-containers
Vulnerability ScannersContainer SecurityDynamic Analysis (Sandboxing)Web SecurityPenetration TestingCloud SecurityDevSecOpsLearning & EducationArchived
GitLabpurpleteam-labs/purpleteam-s2-containers

purpleteam-s2-containers

2단계 컨테이너

저장소 보기
1105년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

purpleteam 로고

purpleteam 2단계 컨테이너


purpleteam의 2단계 컨테이너




이 컨테이너들은 purpleteam CLI에 제공된 Build User config(작업) 입력, 특히 사용자가 정의한 testSession 수에 따라 동적으로 시작됩니다.

다음 구성은 purpleteam 백엔드를 local 환경에서 실행하려는 경우에 관련됩니다. cloud 환경에서는 이 모든 작업이 자동으로 처리됩니다.

이 저장소를 클론하세요.

환경 변수 정의

app-slave (Zap)

테스트를 위해 app-slave 디렉토리에서 직접 .env 파일을 사용합니다.

ZAP_API_KEY

ZAP_API_KEY 환경 변수에 값을 할당했는지 확인하세요.

ZAP_API_KEY는 원하는 값으로 설정할 수 있습니다. app-slave에 정의하는 것뿐만 아니라 app-scanner 프로젝트 구성에도 추가해야 합니다. app-scanner 프로젝트는 Stage Two 컨테이너에서 실행 중인 Zap에 인증하기 위해 Zap API 키가 구성되어야 합니다. app-scanner 프로젝트의 경우 다음과 같이 설정해야 합니다:
{ "slave": { "apiKey": <zap-api-key-here> } }

HOST_ZAP_LOG4J_PROPERTIES_PATH and ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET

Zap 디버그 로그가 필요할 때는 LOG4J 디버그 구성을 위한 환경 변수도 추가해야 합니다.

.env 파일

.env 파일을 사용하기로 선택했다면, 이러한 모든 환경 변수를 추가하는 것은 다음과 같을 것입니다:

root@kitploit:~
ZAP_API_KEY=<zap-api-key-here>
HOST_ZAP_LOG4J_PROPERTIES_PATH=<absolute-path-to/purpleteam-s2-containers/app-slave/log4j.properties>
ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET=/home/zap/.ZAP/log4j.properties

디버깅

app-slave (Zap)

디버그 로깅

위에서 설명한 환경 변수를 설정했다면:

local 환경에서 실행되는 app-slave (Zap) 컨테이너의 디버그 로깅을 켜려면 volumes 배열과 HOST_ZAP_LOG4J_PROPERTIES_PATH 환경 변수가 포함된 source 키가 있는 요소의 주석을 해제하세요.

실제 로그를 보는 방법은 아래에서 확인하세요.

Zap과 상호작용

테스트가 실행되는 동안 Zap과 상호작용(쿼리)할 수 있습니다. 과거에 app-scanner를 디버깅하면서 Zap의 상태를 확인하는 데 유용했습니다.

  1. appslave_zap_[n] 컨테이너가 실행 중인지 확인:
    root@kitploit:~
    docker stats
    
  2. appslave_zap_[n] 컨테이너가 바인딩된 호스트 포트를 확인:
    root@kitploit:~
    docker container ls
    
    이는 docker-compose.yml에 정의된 대로 8080-8091 사이의 포트일 수 있습니다.
    컨테이너 내부의 Zap이 수신하는 포트는 항상 8080입니다.
  3. 브라우저에서 FoxyProxy를 사용하여 localhost:[zap-host-port] 프록시를 설정하세요.
    FoxyProxyDetails_Zap-min
    선택사항: FoxyProxy에 다음 URL 패턴을 설정하세요: zap:8080/*
    FoxyProxyURLPattern_Zap-min
    URL 패턴을 사용하면 FoxyProxy를 켜둔 상태에서 "Use proxies based on their predefined patterns and priorities"를 선택할 수 있습니다. 그렇지 않으면 생성한 특정 프록시를 선택하면 됩니다.
  4. http://zap:8080/로 이동하세요.
    요청은 호스트 포트를 통해 프록시되고 FoxyProxy 구성에서 지정한 호스트 포트의 컨테이너 내 zap 프로세스가 응답합니다.

selenium-standalone

디버그 로깅

local 환경에서 실행되는 Selenium 컨테이너의 디버그 로깅을 켜려면 environment 배열과 chrome 및/또는 firefox에 대한 SE_OPTS=-debug 요소의 주석을 해제하세요.

실제 로그를 보는 방법은 아래에서 확인하세요.

Selenium 컨테이너에서 브라우저 보기

다음은 이 프로젝트에서 실행되는 Selenium 컨테이너 내부의 브라우저를 보기 위해 필요한 작업을 설명합니다.

docker-compose.yml 설정:

  • 컨테이너 이미지를 -debug 이미지로 교체하세요. -debug 이미지가 주석 처리되어 있을 수 있으므로, 일반 이미지를 주석 처리하고 끝에 -debug가 추가된 이미지의 주석을 해제하면 됩니다.
  • 5900 포트 범위의 주석을 해제하여 컨테이너 내부의 VNC 서버에 액세스할 수 있는지 확인하세요. 외부 포트로 범위를 지정하면(예: 5900-5901) 한 번에 둘 이상의 컨테이너에 VNC로 접속할 수 있습니다. 예제에서는 동시에 두 개의 세션을 열 수 있도록 허용했습니다. 두 개 이상 VNC로 접속해야 하는 경우 외부 포트 범위를 넓히기만 하면 됩니다.

VNC 클라이언트 설정:

  1. 컨테이너 내 VNC 서버에 연결하려면 VNC 클라이언트가 필요합니다. Linux Mint에서 Remmina Remote Desktop Client를 사용하여 성공했습니다. 소프트웨어 관리자를 통해 Remmina-plugin-vnc를 설치하세요.
  2. Remmina Remote Desktop Client를 실행하세요.
  3. 새 항목을 만드세요. 여러 Selenium 컨테이너에 동시에 VNC로 접속하려는 경우 각각을 다음과 같이 설정할 수 있습니다:
키값
이름seleniumstandalone_chrome_1
프로토콜VNC - Virtual Network Computing
기본 탭에서
서버127.0.0.1:5900
비밀번호secret
색상 깊이True color (24 bit) # 이것이 우리에게 작동한 유일한 것입니다.
품질Poor (fastest)
키값
이름seleniumstandalone_chrome_2
프로토콜VNC - Virtual Network Computing
기본 탭에서
서버127.0.0.1:5901
비밀번호secret
색상 깊이True color (24 bit) # 이것이 우리에게 작동한 유일한 것입니다.
품질Poor (fastest)

자세한 내용은 SeleniumHQ github에서 확인하세요.

Selenium 컨테이너 내에서 브라우저 보기

Selenium 컨테이너가 실행되면 (터미널에서 docker stats를 실행하면 이를 확인하는 데 편리합니다), docker container ls로 각 Selenium 컨테이너가 사용하는 외부 포트를 확인할 수 있습니다. Docker는 VNC 클라이언트 항목에 할당한 포트를 알지 못하므로, 특정 VNC 클라이언트 항목의 이름이 동일한 이름의 Selenium 컨테이너와 일치하지 않을 수 있습니다. 따라서 docker container ls로 포트 매핑을 확인하는 것이 좋습니다.

여러 테스트 세션이 있을 때 어떤 Selenium 컨테이너가 어떤 테스트 세션에 사용되는지 확인하려면 실행 중인 app-scanner 로그를 검토해야 할 수 있습니다. 또한 app-scanner가 로그 수준 debug로 구성되어 있어야 다음 로그 메시지 중 일부 또는 전부를 볼 수 있습니다:

[app.parallel] cucCli process with PID "28" has been spawned for test session with Id "lowPrivUser"

[app.parallel] cucCli process with PID "34" has been spawned for test session with Id "adminUser"

[pid-28,world] seleniumContainerName is: seleniumstandalone_chrome_1

[pid-34,world] seleniumContainerName is: seleniumstandalone_chrome_2

이 예제에서는 Build User config(작업)에 두 개의 테스트 세션이 구성되어 있습니다. 하나는 id가 lowPrivUser이고 다른 하나는 id가 adminUser입니다. 이 예제에서 lowPrivUser 테스트 세션은 PID 28인 프로세스를 가지고 있고, adminUser 테스트 세션은 PID 34인 프로세스를 가지고 있습니다.
그 다음 두 개의 로그 메시지에서 PID를 상호 연관시켜 보면 lowPrivUser 테스트 세션이 seleniumstandalone_chrome_1이라는 컨테이너를 실행 중이고 adminUser 테스트 세션이 seleniumstandalone_chrome_2라는 컨테이너를 실행 중인 것을 알 수 있습니다.
어떤 테스트 세션이 seleniumstandalone_chrome_[n] 컨테이너 중 어떤 것을 실행할지 보장되지 않으므로, 확실히 하려면 이 연관 기술을 사용하세요.

Selenium 컨테이너에 VNC로 접속하려면 Remmina가 실행 중인 상태에서 위에서 생성한 VNC 항목 중 하나 이상을 더블 클릭하면 브라우저가 상호작용하는 것을 볼 수 있습니다... app-scanner의 Cucumber 테스트 단계가 실제로 해당 지점에 도달했을 때만 가능합니다.
물론 테스트 속도를 늦추거나, 일시 중지하거나, 디버거로 단계별 실행할 수 있습니다. 이러한 세부 사항은 purpleteam wiki의 workflow 페이지에 있습니다.

컨테이너 로그 리디렉션 및 보기

로컬에서 원한다면 docker stats를 계속 실행하여 어떤 컨테이너가 실행 중인지, 언제 시작되고 중지되는지 확인할 수 있습니다. 또한 다음 명령에 사용할 컨테이너 이름도 제공합니다.

Stage Two 컨테이너 로그를 보려면 컨테이너의 stdout(및 stderr, Docker는 stdout과 stderr를 병합함)을 tail하세요:

root@kitploit:~
docker logs --follow [container-name]

로그를 파일로도 보내려면:

root@kitploit:~
docker logs --follow [container-name] |tee output.log$(date '+%Y-%m-%d_%T')

로그를 터미널로 보지 않고 파일로만 보내려면:

root@kitploit:~
docker logs --follow [container-name] > output.log$(date '+%Y-%m-%d_%T')
도구 다운로드