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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SecureCodingDojo — Secure Coding Dojo는 안전한 코딩 지식을 전달하기 위한 플랫폼입니다. | Kitploit
도구/GitHubGitHub/owasp/securecodingdojo
Vulnerability AnalysisCode AnalysisWeb SecurityCTFPenetration TestingDevSecOpsAuthenticationLearning & EducationLabs & Practice
GitHubowasp/securecodingdojo

SecureCodingDojo

Secure Coding Dojo는 안전한 코딩 지식을 전달하기 위한 플랫폼입니다.

저장소 보기
6071598개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

Secure Coding Dojo 소개

Secure Coding Dojo는 안전한 코딩 교육을 제공하기 위한 플랫폼입니다. 자체적으로 취약한 훈련용 애플리케이션(Insecure.Inc 웹사이트)이 포함되어 있지만, 훈련 포털은 다른 훈련용 애플리케이션과 함께 사용할 수도 있습니다. 이 플랫폼의 강점은 확장성과 널리 사용되는 개발 협업 플랫폼인 Slack과의 통합입니다. 훈련 포털은 클라우드에 쉽게 구축할 수 있으며, AWS Elastic Beanstalk 설정 지침은 아래에서 확인할 수 있습니다.

Dojo 배포 및 설치에 대한 자세한 내용은 wiki도 확인하세요.

데모

훈련 포털과 Insecure.Inc 애플리케이션을 살펴보려면 데모를 다운로드하세요.

/screenshots 디렉토리도 확인해 보세요. Alt text

사용해 보기

다음 단계를 거치면 Dojo의 기본 구성을 얻을 수 있습니다. 고급 구성 및 통합에 대해서는 wiki를 확인하세요.

  • 최신 버전의 Docker를 설치합니다.

  • 저장소를 Git clone 합니다.

  • 저장소 루트 디렉토리로 이동합니다.

  • dojo 파일의 마운트 지점으로 사용할 환경 변수 DATA_DIR을 구성합니다. *nix/mac에서는 .bash_profile을 다음과 같이 수정합니다.

    export DATA_DIR="/YOUR_DATA_DIR"

  • Mac에서는 Docker > Preferences > File Sharing에서 이 디렉토리에 대한 Docker 접근을 허용해야 합니다.

  • 터미널을 다시 시작합니다.

  • 다음 명령으로 실행합니다.

    docker-compose up

왜 또 다른 보안 교육 사이트인가?

애플리케이션 보안 개념을 가르치는 오픈 소스 교육 사이트가 없었던 것은 아니지만, 기존 사이트들의 대상 사용자는 주로 침투 테스터와 윤리적 해커였습니다. Secure Coding Dojo는 주로 개발자를 위한 교육 제공 플랫폼으로 설계되었으며, 그 이유는 다음과 같습니다.

  • Slack과 통합하여 인증을 처리합니다.
  • 참가자들을 개발 팀별로 그룹화할 수 있습니다.
  • 팀이 진행 상황을 추적하고 서로 경쟁할 수 있습니다.
  • 각 레슨은 공격/방어 쌍으로 구성됩니다. 개발자는 공격을 수행하여 소프트웨어 취약점을 관찰하고, 챌린지를 해결한 후 관련 소프트웨어 방어(코드 블록)에 대해 배웁니다.
  • 사전 정의된 레슨은 MITRE의 가장 위험한 소프트웨어 오류(일명 SANS 25)를 기반으로 하므로 공격 기술보다는 소프트웨어 오류에 초점을 맞춥니다.
  • 사전 정의된 해킹 챌린지는 입문자를 위해 만들어졌으며 개발자들의 참여를 유지시킵니다.
    • 다른 교육 사이트나 CTF에서는 챌린지에 퍼즐 요소가 있어 침투 테스터에게는 훌륭하지만 일부 개발자는 흥미를 잃을 수 있습니다. Secure Coding Dojo에서는 취약점을 시연하는 데 초점을 맞춥니다.
    • 개발자가 문제를 악용하는 과정에서 막히지 않도록 도움이 되는 팁이 있습니다.

SecureCodingDojo와 규정 준수 요구 사항

완전한 규정 준수를 보장하지는 않지만, 이 교육은 PCI 6.5.a와 같은 규정 준수 요구 사항을 충족하는 데 사용될 수 있습니다. SANS 25 / OWASP Top 10 / PCI 6.5 매핑에 대한 자세한 내용은 Insecure.Inc 교육 과정 문서를 참조하세요.

개발 사전 요구 사항

훈련 포털

  • VS Code 설치
  • node/npm(v10으로 개발됨)
  • 선택 사항: MySQL 서버 + MySQL Workbench(MySQL 5.7로 개발됨)

Insecure.Inc

  • Java EE로 개발됨
  • Eclipse Java EE 최신 버전(Neon으로 개발됨) + Java 1.8 + tomcat 8(Insecure.Inc 교육 앱용)

개발 환경 설정 지침

훈련 포털

  • 자세한 내용은 wiki에서 확인하세요.

Insecure.Inc

  • 자세한 내용은 wiki에서 확인하세요.

빌드

훈련 포털

  • ./buildTrainingPortal.sh 스크립트를 실행합니다. 이 스크립트는 Docker 이미지와 AWS Elastic Beanstalk 패키지를 빌드합니다.

Insecure.Inc

  • 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 .war 파일로 내보낸 후 Tomcat 8 설치 폴더의 /webapps 폴더에 넣습니다.

Insecure.Inc 호스팅

wiki를 확인하세요.

훈련 포털 배포

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

Slack 설정 지침

인증을 위해 Slack 앱을 만들어야 합니다.

  • https://api.slack.com/ 로 이동합니다.
  • Start Building을 클릭하고 안내에 따라 개발 Slack 팀에 Slack 앱을 만듭니다.
  • 앱이 만들어지면 config.json을 구성하는 데 사용할 앱 자격 증명을 얻을 수 있습니다.
  • OAuth & Permissions에서 리디렉션 URL을 구성합니다. 예를 들어 localhost 설정의 경우 리디렉션 URL은 다음과 같습니다: http://localhost:8081/public/slack/callback

Google 설정 지침

Google 인증도 config.json에서 구성할 수 있습니다. Google 개발자 계정이 필요하며 Google API 콘솔(https://console.developers.google.com)에서 OAuth 자격 증명을 받아야 합니다.

같은 곳에서 도메인과 승인된 리디렉션 URI를 설정합니다. 예를 들어 localhost 설정의 경우 리디렉션 URL은 다음과 같습니다: http://localhost:8081/public/google/callback

로컬 인증 설정 지침

소규모 팀이나 사전 구성된 이미지의 경우 Slack 또는 Google 인증이 적합하지 않을 수 있습니다. 이 시나리오에서는 로컬 플랫 파일로 작동하는 인증을 구성할 수 있습니다.

자세한 내용은 wiki를 확인하세요.

  • localUsers.json.sample을 localUsers.json으로 복사합니다.
  • config.json에 localUsersPath를 지정하는 줄을 추가합니다.
  • 로컬 인증에는 계정 잠금, 비밀번호 만료 누락 등 몇 가지 주의 사항이 있습니다.

DB 설정 지침

DB를 구성하지 않으면 훈련 포털은 로컬 SQLite DB를 사용합니다.

MySQL을 설치하고 해당 DB에 대한 DB와 자격 증명을 만들 수도 있습니다. 나중에 필요하므로 사용자 이름과 비밀번호를 기록해 두세요.

암호화 키 시드와 환경 변수

암호화 키를 OS 환경 변수로 설정해야 합니다. *nix/mac에서는 .bash_profile을 다음과 같이 수정합니다.

root@kitploit:~
export ENC_KEY="put something random here"
export ENC_KEY_IV="put something random here"

다음은 참가자가 자신만의 챌린지 코드를 생성하는 것을 방지하기 위한 것입니다.

root@kitploit:~
export CHALLENGE_MASTER_SALT="put something random here"

Secure Coding Dojo 확장

기존 레슨의 모델을 따라 새 레슨을 추가할 수 있습니다.

챌린지

챌린지는 ./trainingportal/static/lessons에 정의되어 있습니다. definitions.json 파일은 해당 html 챌린지 설명, 플레이 링크 및 해당 코드 블록(코드 블록 ID 기준)을 가리킵니다. 이미 정의된 예제를 따라 새 챌린지를 만들 수 있습니다.

root@kitploit:~
.
+-- /trainingportal/static/lessons
|   +-- modules.json //레슨 모듈이 정의된 구성 파일
|   +-- /attack-grams //챌린지 설명에 포함된 공격의 시각적 표현
|   +-- /blackBelt //레슨 모듈
|       +--definitions.json //개별 레슨 정의
|       +--cwe494.md //레슨 설명이 포함된 html 또는 마크다운 파일
|       +--cwe494.sol.md //레슨에 대한 솔루션
|       ....
|       +--quiz.html 
|   +-- /secondDegreeBlackBelt

코드 블록

코드 블록은 ./trainingportal/static/codeBlocks에 정의되어 있습니다. 이 폴더는 정의 json과 각 챌린지에 대한 여러 html 파일로 구성된 유사한 구조를 가지고 있습니다.

root@kitploit:~
.
+-- /trainingportal/static/codeBlocks
|   +-- codeBlocksDefinitions.json //코드 블록이 정의된 구성 파일
|   +-- authenticationByDefault.html //코드 블록 설명 html
|   ...
|   +-- useStrongDataEncryption.html
도구 다운로드