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

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

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

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

도구 디렉토리

카테고리

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

CVE-2019-19634

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

저장소 보기
3686년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2019-19634 - class.upload.php <= 2.0.4 임의 파일 업로드

  • 작성자 - Jinny Ramsmark
  • 영향을 받는 공급업체 - Verot.net
  • 영향을 받는 제품 - class.upload.php <= 2.0.4
  • 새로 설치된 Ubuntu 14.04에서 PHP5 및 Apache로 테스트함
  • 특히 Debian/Ubuntu는 사용 가능한 PHP 핸들러에 pht 확장자도 추가하므로 취약한 것으로 확인되었습니다. 이 경우 class.upload.php는 pht 확장자를 블랙리스트에 포함하지 않았습니다.
  • 이 CVE는 CVE-2019-19576과 직접 관련이 있습니다.

설명

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

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

inject.php 스크립트는 곧 이 유형의 공격을 위한 보다 일반적인 도구로 다시 작성될 예정이지만, 현재는 이 유형의 CVE 릴리스에 개별 스크립트로 포함됩니다.

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

  • 2019-12-07 - 개발자와 JoomlaWorks의 K2에 보고됨 (영향을 받음)
  • 2019-12-07 - 개발자가 응답하고 패치를 릴리스함
  • 2019-12-08 - 개발자가 응답하고 정보 공개에 동의함

이 PoC에 포함된 파일

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

사용법

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

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

예제

root@kitploit:~
user@ayu:/var/www/html# php inject.php 
-=Imagejpeg injector 1.8=-
[+] 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.pht
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.5/src/class.upload.php#L3068
도구 다운로드