🇰🇷 한글 설명
Monero Project의 Laravel 기반 포럼 소프트웨어 /get/image/ 엔드포인트가 검증되지 않은 사용자 입력을 file_get_contents()에 직접 전달하여 발생하는 PHP 객체 주입 취약점입니다. 공격자는 조작된 스트림 필터 체인으로 MIME 타입 검사를 우회해 config/app.php에서 APP_KEY를 추출하고 암호화된 쿠키를 위조하여 원격 코드 실행을 달성할 수 있습니다.
💡 쉬운 설명
웹사이트의 이미지 로드 기능이 사용자 입력을 검증하지 않아 공격자가 서버의 비밀 파일을 읽을 수 있는 취약점입니다. 이를 악용하면 서버를 완전히 제어하는 것이 가능합니다.
🇺🇸 원문 (English)
A PHP objection injection vulnerability exists in the Monero Project’s Laravel-based forum software due to unsafe handling of untrusted input in the /get/image/ endpoint. The application passes a user-supplied link parameter directly to file_get_contents() without validation. MIME type checks using PHP’s finfo can be bypassed via crafted stream filter chains that prepend spoofed headers, allowing access to internal Laravel configuration files. An attacker can extract the APP_KEY from config/app.php, forge encrypted cookies, and trigger unsafe unserialize() calls, leading to reliable remote code execution.
📍 영향받는 시스템
Monero Project Laravel Forum Software (특정 버전 미지정)
⚔️ 공격 벡터
/get/image/?link= 파라미터에 php://filter 스트림 체인을 사용한 임의 파일 접근 시도
🛡️ 대응 방법
사용자 입력에 대한 엄격한 화이트리스트 검증 구현, file_get_contents() 대신 안전한 HTTP 클라이언트 라이브러리 사용, unsafe unserialize() 호출 제거
🔧 검증 코드
명령어 결과가 'VULNERABLE'이면 취약점 존재, 'PATCHED'이거나 오류가 나면 보호된 상태입니다.
curl -s 'http://target/get/image/?link=php://filter/convert.base64-encode/resource=/app/config/app.php' 2>/dev/null | grep -q 'APP_KEY' && echo 'VULNERABLE' || echo 'PATCHED'