Skip to content

Latest commit

 

History

History
228 lines (159 loc) · 8.49 KB

File metadata and controls

228 lines (159 loc) · 8.49 KB

웹 해킹 입문자의 실력 향상을 위한 웹 해킹 문제풀이 플랫폼

K-Shield Jr. 12기 취약점 분석 트랙 프로젝트

프로젝트 소개

슬라이드1 슬라이드4 슬라이드5

구성원

images/김서현.jpg images/박현규.jpg images/장민기.jpg
김서현 박현규 장민기

프로젝트 기간

  • 2024.06.01 ~ 2024.07.05

프로젝트 일정

마감 날짜 내용
2024.06.01 프로젝트 시작
2024.06.02 python, django, chatGPT API 사용법 공부
2024.06.03 git project 설치 해오기
2024.06.07 TODO - 프로젝트 계획서 제출 마감
TODO - WBS 제출 마감
2024.06.10 역할 분배 및 개발 계획 구체화
2024.06.12 웹 / API 기본 구현 완료
2024.06.15 각자 추가 개발
2024.06.18 landing page, navigator, footer, auth 구현 완료
2024.06.20 각자 추가 개발
2024.06.24 문제 출제 방향성 픽스 + 문제 구상
2024.06.27 각자 담당 문제 출제
2024.06.30 문제 추가 출제 및 테스트
2024.07.01 문제 추가 출제 및 테스트
2024.07.03 발표 준비 및 최종 개발 완료
2024.07.05 발표 및 종료

세팅 방법

1. 프로젝트 폴더 생성 및 이동

본인은 'k-shield_project'라는 폴더를 생성하고 이동했음

mkdir <project 폴더명>
cd <project 폴더명>

2. 가상환경 생성 및 활성화

python -m venv venv

# window
source venv/Scripts/activate
# etc
source venv/bin/activate

3. git clone 및 VSCode 실행

git 설치가 되어있지 않다면 설치 후 진행

git init
git clone https://github.com/kshjessica/kshield-12-vulnerability-project.git
cd project
code .

4. 환경설정 및 마이그레이션

# 환경설정
pip install -r requirements.txt  # 1) requirements 설치
_.env.exmaple 파일을 복사해서 .env 파일 생성_  # 2) 환경 변수 파일 생성
_.env 파일에 환경변수에 맞게 값 추가(값은 관련 카톡방 톡게시글 참고)_  # 3) 환경 변수 정의

# 마이그레이션
python manage.py makemigrations
python manage.py migrate # 1) 우선 시도
python manage.py migrate --run-syncdb # 2) DB 반영이 안되는 경우, 해당 명령어로 재시도

5. 관리자 계정 생성

관리자 계정 생성 시, 이메일과 비밀번호를 입력하라고 나옴(본인이 편한거로 설정)

python manage.py createsuperuser

6. 더미 데이터 반영

python manage.py loaddata solve/fixtures/attacking-practice-data.json
python manage.py loaddata solve/fixtures/secure-coding-data.json
python manage.py loaddata solve/fixtures/short-answer-data.json

7. 서버 실행 및 확인

python manage.py runserver

서버 실행 후

  1. admin 페이지 접속
  2. 관리자 계정으로 로그인
  3. coding_questions에 dummy data 생성
  4. solve 페이지 접속 및 dummy data 확인

점검

  • 폴더 구조 directory-structure
  • VSCode 구조 vscode-structure

프로젝트 진행

시작 전 반드시 해야할 것

1. git pull

반드시 반드시 반드시 습관처럼 할 것!!!

git pull origin main

2. 브랜치 생성(새로운 작업물을 시작할 때)

merge(병합)은 함께 진행합시다! 브랜치명은 '<본인 아이디>/기능'형식으로 생성

git checkout -b <브랜치명>

작업 후

자세한 방법은 차차 설명하며 적응해 나가도록 합시다!

1. push

git add . / git add "<파일명>"
git commit -m "<commit message>"
git push origin main
  • commit 규칙(convention)

    commit message 작성 시, 타입은 아래 영어로, 내용은 한국어로 작성!
    예시) feat: 로그인 기능 추가

    타입 설명
    feat 새로운 기능 추가
    fix 버그 수정
    remove 기능 또는 파일 삭제
    docs 문서 수정
    chore 그 외 자잘한 수정(rename, 주석 추가 등)

2. pull request(PR)

github 페이지에서 템플릿에 맞게 진행

  • 작성 방법
    • 제목: 변경 사항 내용
    • 내용: 템플릿에 맞게 진행
    • 레이블: 'enhancement' 혹은 관련된 레이블
    • assignees: 본인
    • Reviewers: 팀원들
  • 리뷰가 완료된 후에 merge 진행

3. 브랜치 삭제 및 main으로 이동

git branch -d <브랜치명>
git checkout main
git pull origin main

Vulnerable Web Application

Purpose / 목적

This project is designed for educational purposes to demonstrate common web vulnerabilities such as SQL Injection, Cross-Site Scripting (XSS), and Cross-Site Request Forgery (CSRF). It is intended for use in a controlled, ethical environment only.

이 프로젝트는 SQL 인젝션, 크로스 사이트 스크립팅(XSS), 크로스 사이트 요청 위조(CSRF)와 같은 일반적인 웹 취약점을 시연하기 위한 교육용입니다. 이 프로젝트는 통제되고 윤리적인 환경에서만 사용해야 합니다.

Disclaimer / 면책 조항

WARNING: This code is for educational purposes only. Unauthorized use of this code on any live or production systems is illegal and unethical. Always seek explicit permission before conducting any security testing.

경고: 이 코드는 교육 목적으로만 사용됩니다. 이 코드를 라이브 또는 운영 시스템에 무단으로 사용하는 것은 불법이며 비윤리적입니다. 보안 테스트를 수행하기 전에 항상 명시적인 허가를 받으십시오.

Features / 기능

  • SQL Injection: Demonstrates how SQL queries can be manipulated through user input.

  • Cross-Site Scripting (XSS): Shows how scripts can be injected and executed in the context of another user.

  • Cross-Site Request Forgery (CSRF): Illustrates how unauthorized commands can be transmitted from a user that the website trusts.

  • SQL 인젝션: 사용자 입력을 통해 SQL 쿼리가 어떻게 조작될 수 있는지를 시연합니다.

  • 크로스 사이트 스크립팅 (XSS): 스크립트가 다른 사용자의 컨텍스트에서 어떻게 주입되고 실행될 수 있는지를 보여줍니다.

  • 크로스 사이트 요청 위조 (CSRF): 신뢰하는 웹사이트에서 사용자의 인증된 상태로 어떻게 무단 명령이 전송될 수 있는지를 설명합니다.

Usage / 사용법

image

How to Protect Against These Vulnerabilities / 이러한 취약점 방지 방법

  • SQL Injection: Use prepared statements and parameterized queries.

  • XSS: Properly encode or escape user input before rendering it in the browser.

  • CSRF: Implement CSRF tokens to verify the origin of requests.

  • SQL 인젝션: 준비된 문장과 파라미터화된 쿼리를 사용하십시오.

  • XSS: 사용자 입력을 브라우저에 렌더링하기 전에 적절히 인코딩하거나 이스케이프 처리하십시오.

  • CSRF: 요청의 출처를 검증하기 위해 CSRF 토큰을 구현하십시오.