PHP - RCE abusing object creation: new $_GET["a"]($_GET["b"])
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
이 문서는 https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/의 요약입니다.
new $_GET["a"]($_GET["a"])
와 같은 새로운 임의 객체의 생성은 원격 코드 실행(RCE)으로 이어질 수 있으며, 이는 writeup에 자세히 설명되어 있습니다. 이 문서는 RCE를 달성하기 위한 다양한 전략을 강조합니다.
new $a($b)
구문은 객체를 인스턴스화하는 데 사용되며, 여기서 **$a
**는 클래스 이름을 나타내고 **$b
**는 생성자에 전달되는 첫 번째 인수입니다. 이러한 변수는 GET/POST와 같은 사용자 입력에서 문자열 또는 배열로, 또는 JSON에서 다른 유형으로 나타날 수 있습니다.
아래의 코드 스니펫을 고려하십시오:
이 경우, $a
를 App
또는 App2
로 설정하고 $b
를 시스템 명령어(예: uname -a
)로 설정하면 해당 명령어가 실행됩니다.
자동 로딩 함수는 그러한 클래스에 직접 접근할 수 없는 경우 악용될 수 있습니다. 이러한 함수는 필요할 때 파일에서 클래스를 자동으로 로드하며, spl_autoload_register
또는 __autoload
를 사용하여 정의됩니다:
PHP 버전에 따라 자동 로딩의 동작이 달라지며, 다양한 RCE 가능성을 제공합니다.
사용자 정의 클래스나 자동 로더가 부족한 경우, 내장 PHP 클래스가 RCE에 충분할 수 있습니다. 이러한 클래스의 수는 PHP 버전과 확장에 따라 100에서 200 사이입니다. get_declared_classes()
를 사용하여 나열할 수 있습니다.
관심 있는 생성자는 반사 API를 통해 식별할 수 있으며, 다음 예제와 링크 https://3v4l.org/2JEGF에서 확인할 수 있습니다.
특정 메서드를 통한 RCE에는 다음이 포함됩니다:
SplFileObject
클래스는 생성자를 통해 SSRF를 가능하게 하여, 모든 URL에 연결할 수 있습니다:
SSRF는 Phar 프로토콜을 사용하는 PHP 8.0 이전 버전에서 역직렬화 공격으로 이어질 수 있습니다.
PDO 클래스 생성자는 DSN 문자열을 통해 데이터베이스에 연결할 수 있게 하여, 파일 생성 또는 기타 상호작용을 가능하게 합니다:
PHP 5.3.22 및 5.4.12 버전까지는 SoapClient
및 SimpleXMLElement
생성자를 통해 XXE 공격에 취약했습니다. 이는 libxml2의 버전에 따라 달라집니다.
프로젝트의 의존성 분석에서 Imagick가 새로운 객체를 인스턴스화하여 명령 실행에 활용될 수 있음을 발견했습니다. 이는 취약점을 악용할 기회를 제공합니다.
파일 시스템의 지정된 경로에 콘텐츠를 쓸 수 있는 VID 파서 기능이 확인되었습니다. 이는 웹에서 접근 가능한 디렉토리에 PHP 쉘을 배치하여 원격 코드 실행(RCE)을 달성할 수 있습니다.
PHP는 업로드된 파일을 /tmp/phpXXXXXX
에 임시로 저장하는 것으로 알려져 있습니다. msl 프로토콜을 사용하는 Imagick의 VID 파서는 파일 경로에서 와일드카드를 처리할 수 있어 임시 파일을 선택한 위치로 전송할 수 있습니다. 이 방법은 파일 시스템 내에서 임의의 파일 작성을 달성하는 추가적인 접근 방식을 제공합니다.
원본 작성물에 설명된 방법은 삭제 전에 서버 충돌을 유발하는 파일을 업로드하는 것입니다. 임시 파일의 이름을 무작위로 시도함으로써 Imagick가 임의의 PHP 코드를 실행할 수 있게 됩니다. 그러나 이 기술은 구버전의 ImageMagick에서만 효과적인 것으로 나타났습니다.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)