Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2019-19576 — 이는 class.upload.php <= 2.0.3에서 임의 파일 업로드 및 원격 코드 실행을 유발하는 필터 우회 익스플로잇입니다. | Kitploit
도구/GitHubGitHub/jra89/cve-2019-19576
Payload GenerationVulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration Testing
GitHubjra89/cve-2019-19576

CVE-2019-19576

이는 class.upload.php <= 2.0.3에서 임의 파일 업로드 및 원격 코드 실행을 유발하는 필터 우회 익스플로잇입니다.

저장소 보기
1236년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

class.upload.php <= 2.0.3 임의 파일 업로드

  • 저자 - Jinny Ramsmark
  • 영향받는 공급업체 - Verot.net
  • 영향받는 제품 - class.upload.php <= 2.0.3
  • 새로 설치된 Ubuntu 19.10, PHP7.3, Apache/2.4.38에서 테스트
  • 특히 Debian/Ubuntu는 사용 가능한 PHP 핸들러에 php, phar, phtml 확장자를 추가하기 때문에 취약한 것으로 밝혀졌습니다. 이 경우 class.upload.php는 phar 확장자를 블랙리스트에 포함하지 않았습니다.

설명

이는 필터 우회 익스플로잇으로, 임의 파일 업로드 및 원격 코드 실행으로 이어집니다. class.upload.php 스크립트는 '위험한 파일 및 콘텐츠'를 필터링하고 이를 txt 파일 확장자로 이름을 변경합니다. 또한 업로드된 이미지에 대해 다양한 변환을 수행하는데, 일반적으로 파일 확장자 필터를 우회할 수 있더라도 주입된 페이로드를 파괴합니다.

파일 확장자 필터는 블랙리스트이므로, 새로운 확장자가 도입되거나(이 경우 phar) 누락된 경우 PHP 파일을 업로드할 수 있습니다. 그러나 콘텐츠는 여전히 유효한 이미지여야 하며 imagecreatefromjpeg 및 유사한 함수를 거쳐야 합니다. 이를 위해 inject.php 스크립트를 작성했습니다. 이 스크립트는 본질적으로 다양한 이미지를 무차별 대입하여 class.upload.php에서 수행되는 프로세스에 의해 페이로드가 파괴되지 않는 지점을 찾습니다. 이는 효과적으로 임의 파일 업로드와 매우 은밀한 코드 실행을 제공합니다. 업로드된 이미지는 여전히 유효한 이미지이며 페이지에 표시되기 때문입니다.

타임라인 (기본 90일 기한)

  • 2019-12-03 - 개발자와 K2에 보고
  • 2019-12-03 - K2가 응답
  • 2019-12-04 - Verot이 수정 사항으로 응답
  • 2019-12-04 - K2가 자체 수정 사항을 준비하여 응답
  • 2019-12-04 - Verot이 해당 수정 사항(v2.0.4)을 릴리스
  • 2019-12-05 - 두 당사자가 응답하고 정보 공개에 동의

이 PoC에 포함된 파일

  • composer.json
  • upload.php
  • inject.php

사용법

upload.php 스크립트는 verot.net의 GitHub에 있는 예제 코드입니다. 이 취약점을 그들의 자체 예제 코드를 사용하여 시연하는 것이 가장 좋다고 생각했습니다.

  • 터미널에서 "php inject.php"를 실행하면 파일에 간단한 페이로드가 포함된 샘플 이미지가 생성됩니다.
  • 스크립트가 완료되면 "image.jpg.phar"라는 파일이 생성됩니다.
  • upload.php 파일로 이동하여 image.jpg.phar를 업로드하면 프로세스가 진행되며 셸을 얻을 수 있습니다.

예시

root@kitploit:~
user@ayu:/var/www/html# php inject.php 
-=Imagejpeg injector 1.7=-
[+] Fetching image (100 X 100) from http://lorempixel.com/100/100/
[+] Jumping to end byte
[+] Searching for valid injection point
[!] Temp solution, if you get a 'recoverable parse error' here, it means it probably failed
[+] It seems like it worked!
[+] Result file: image.jpg.phar
root@kitploit:~
user@ayu:/var/www/html# curl -v -o - http://localhost/images/image_resized.phar?c=uname%20-a | grep -aPo "(Linux.*GNU)"
Linux ayu 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 UTC 2019 x86_64 x86_64 x86_64 GNU

제안된 해결 방안

  • 파일 확장자를 블랙리스트 처리하지 마세요.
  • 대신 기본적으로 허용된 확장자의 화이트리스트를 사용하세요.
  • 또는 업로드된 파일에 확장자를 전혀 사용하지 말고 원래 이름을 다른 곳에 저장하세요.

참조

  • https://github.com/verot/class.upload.php/blob/2.0.3/src/class.upload.php#L3068

Joomla K2 확장에서의 예시 공격

패치되지 않은 class.upload.php 버전으로 인해 JoomlaWorks K2 <= 2.10.1에서 원격 코드 실행으로 이어지는 임의 파일 업로드

웹사이트

  • https://getk2.org/

샘플 이미지

일반 사용자는 inject.php로 생성된 이미지를 업로드하며, 여기에는 간단한 페이로드가 포함되어 있습니다. 이 이미지는 class.upload.php의 확장자 필터를 우회하고 라이브러리에서 수행하는 이미지 처리에 의해 파괴되지 않습니다. 일반 이미지처럼 렌더링되어 더 은밀합니다.



파일이 업로드되고 백도어로 접근하여 명령을 실행할 수 있습니다.

도구 다운로드