
트위터 취약 스니펫
취약점 | 프로그래밍 언어 | 취약한 코드 스니펫 실행 | 설치 | 업데이트
YesWeHack은 안전한 docker 환경에서 코드 분석을 연습할 수 있도록 다양한 취약점이 포함된 코드 스니펫을 제공합니다. 취약한 코드 스니펫은 모든 숙련도 수준에 적합합니다.
~ Twitter @yeswehack에서 매주 금요일 새로운 취약한 코드 스니펫을 공개합니다! 🗒
특별한 것을 보고 싶거나 취약한 코드 스니펫에 대한 아이디어가 있다면, 언제든지 아이디어를 설명하는 "New Issue"를 만들어 주세요. 어리석은 아이디어는 없습니다.
⚠️ 주의
이 코드는 취약하며 코드 분석 학습용으로 제작되었으므로 반드시 안전한 환경에서 실행하세요! 기본적으로 모든 취약한 코드 스니펫에는 코드를 호스트 시스템에서 격리하여 안전하게 실행할 수 있는 docker 설정이 포함되어 있습니다 (자세한 내용은 "취약한 코드 스니펫 실행" 섹션을 참조하세요).
Twitter에 게시된 모든 취약한 코드 스니펫 모음 📂
또한 포함됨
각 취약한 코드 스니펫(Vsnippet) 폴더에는 docker-compose.yml 파일이 있습니다. 격리된 docker 환경에서 Vsnippet을 시작하려면 다음 명령을 실행하면 됩니다:
docker compose up --build
또는
docker-compose up --build
git clone https://github.com/yeswehack/vulnerable-code-snippets.git
최신 취약한 코드 스니펫을 받으려면 다음을 실행하세요:
git pull
~ H4v3 y0u f0und th3 E4st3r 3gg y3t? 🐇🪺
질문, 도움이 필요하거나 코드에서 문제를 발견한 경우 Twitter로 연락해 주세요: @yeswehack 📬
| ID | 취약점 | 설명 |
|---|
| 📜#1 | SQLi & XSS | 백슬래시 필터 충돌 |
| 📜#2 | 잘못된 파일 접근 및 XSS | 잘못된 문자 및 정규식 검증 |
| 📜#3 | 로그 위조 주입, 경로 탐색 및 코드 주입 | 취약한 필터와 부적절한 include() 처리 |
| 📜#4 | XSS | 잘못된 사용자 입력 필터 |
| 📜#5 | SSRF 및 손상된 인증 | 신뢰된 사용자 입력 및 헤더의 클라이언트 IP |
| 📜#6 | SSTI | 혼합된 입력 형식 |
| 📜#7 | SQLi | 문 내에서 잘못된 변수 사용 |
| 📜#8 | CSRF | CSRF 토큰 미포함 |
| 📜#9 | 오픈 리다이렉트 | 잘못된 정규식 핸들러 |
| 📜#10 | DOM XSS | 백엔드 필터가 클라이언트 측 JavaScript와 충돌 |
| 📜#11 | CORS | 잘못 구성된 Access-Control-Allow 헤더 |
| 📜#12 | CSRF/클릭재킹 | 안전하지 않은 삭제 프로세스가 있는 GET 요청 CSRF / 클릭재킹 - HTML 메타 태그에 설정된 X-Frame-Options |
| 📜#13 | 경로 탐색/무제한 파일 업로드 | 취약한 경로 탐색 및 파일 업로드 보호로 인해 코드 주입 발생 |
| 📜#14 | DOS | "for 루프"의 잘못된 연산자 처리 |
| 📜#15 | 잊어버린 비밀번호에 대한 취약한 비밀번호 복구 메커니즘 | 비밀번호 복구를 위한 취약한 해시 |
| 📜#16 | IDOR | 안전하지 않은 if 문으로 인한 부적절한 접근 제어 |
| 📜#17 | 안전하지 않은 역직렬화 | pickle 함수 loads() 내부에서 신뢰된 사용자 입력 실행 |
| 📜#18 | 경로 탐색 | 파일명에 대한 부적절한 사용자 검증 |
| 📜#19 | 오픈 리다이렉트 | 사용자 제어 입력 "location.hash"의 잘못된 처리 |
| 📜#20 | SQL 인젝션 | replace() 함수의 잘못된 사용, 문자는 한 번만 대체됨 |
| 📜#21 | PostMessage DOM XSS | 출처 검증이 없어 PostMessage DOM XSS로 이어짐 |
| 📜#22 | XSS/오픈 리다이렉트 | 필터 보호가 취약점을 악용하는 데 사용될 수 있는 모든 특수 문자를 필터링하지 않음 |
| 📜#23 | 버퍼 오버플로 | 버퍼 크기를 확인하지 않고 gets() 함수로 사용자의 STDIN 입력을 받음 |
| 📜#24 | SQL 인젝션 | PHP 함수 addslashes()의 잘못된 사용 |
| 📜#25 | XSS - CSP 우회 | 사용자 입력 검증 부재 및 nonce의 안전하지 않은 처리 |
| 📜#26 | 경로 탐색 | PHP 함수 "preg_replace()"가 제공하는 필터는 처음 10자만 필터링하도록 제한됨 |
| 📜#27 | 웹 캐시 포이즈닝 | HTTP 헤더 Referer가 필터링 없이 캐시된 응답 본문에 반영됨 |
| 📜#28 | 비즈니스 로직 취약점 | 공격자는 음수 금액을 출금하여 계정의 전체 잔액을 늘릴 수 있음 |
| 📜#29 | IDOR | 공격자는 강제 브라우징(Forced browsing) 공격을 수행하여 다른 사용자의 민감한 데이터에 접근할 수 있음 |
| 📜#30 | 안전하지 않은 역직렬화 | 사용자가 제어할 수 있는 위험한 함수(exec)를 사용하여 RCE 발생 |
| 📜#31 | LFI | 적절한 문자 이스케이프 또는 필터 검증이 없음. include() 함수는 파일 확장자와 관계없이 주어진 파일의 모든 PHP 코드를 실행하여 코드 주입 발생 |
| 📜#32 | 포맷 인젝션! | 클라이언트가 제공한 값이 포함된 문자열을 포맷하여 포맷 인젝션 발생 |
| 📜#33 | SQL 인젝션 (2차) | 마지막 쿼리를 제외한 모든 SQL 쿼리는 준비된 문(Prepared Statement)을 사용합니다. 이 문은 사용자가 한 번 제어했던 값을 데이터베이스에서 추출하여 SQL 쿼리에 추가하므로 2차 SQL 인젝션이 발생합니다 |
| 📜#34 | 정규식 서비스 거부 (ReDoS) | 사용자 제어 입력을 필터링하는 데 사용되는 잘못 구성된 정규식 패턴 |
| 📜#35 | XSS | GET 매개변수의 신뢰된 사용자 입력 |
| 📜#36 | 무제한 파일 업로드 | 업로드된 파일의 확장자 검증 부족 및 파일 콘텐츠 검증 누락 |
| 📜#37 | SSRF | 프록시 헤더 X-Forwarded-Host와 cURL의 안전하지 않은 처리로 완전한 SSRF 발생 |
| 📜#38 | 코드 인젝션 | 사용자가 선택한 파일에 사용자 정의 콘텐츠를 작성할 수 있으며, 이 파일은 취약한 시스템에서 실행됨 |
| 📜#39 | LFI | LFI 악용을 통해 pearcmd 도구를 실행하여 원격 코드 실행이 가능해짐 |
| 📜#40 | 무제한 파일 업로드 | Apache 프록시 구성으로 인해 php3 확장자를 사용하여 PHP 코드를 실행할 수 있음. |
| 📜#41 | 명령 주입 | escapeshellcmd의 잘못된 사용으로 명령 주입 취약점 발생 |
| 📜#42 | 명령 주입 | 사용자 입력 검증이 수행되지 않아 명령 주입 취약점 발생 |
| 📜#43 | SSTI | 템플릿 엔진의 잘못된 사용으로 SSTI가 발생하고 결과적으로 RCE로 이어짐 |