tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
중요한 주의사항:
**dl
**은 PHP 확장을 로드하는 데 사용되는 PHP 함수입니다. 이 함수가 비활성화되지 않았다면 disable_functions
를 우회하고 임의의 명령을 실행하는 데 악용될 수 있습니다.
그러나 몇 가지 엄격한 제한이 있습니다:
dl
함수는 환경에 존재해야 하며 비활성화되지 않아야 합니다- PHP 확장은 서버가 사용하는 동일한 주요 버전(PHP API 버전)으로 컴파일되어야 합니다(이 정보는 phpinfo의 출력에서 확인할 수 있습니다)
- PHP 확장은
extension_dir
지시어에 의해 정의된 디렉토리에 위치해야 합니다(이 정보는 phpinfo의 출력에서 확인할 수 있습니다). 서버를 악용하려는 공격자가 이 디렉토리에 대한 쓰기 권한을 가질 가능성은 매우 낮으므로, 이 요구 사항은 아마도 이 기술을 악용하는 것을 방지할 것입니다.
이 요구 사항을 충족하면, 계속해서 포스트를 읽으세요 https://antichat.com/threads/70763/ disable_functions
를 우회하는 방법을 배우기 위해. 다음은 요약입니다:
dl 함수는 스크립트 실행 중에 PHP 확장을 동적으로 로드하는 데 사용됩니다. PHP 확장은 일반적으로 C/C++로 작성되어 PHP의 기능을 향상시킵니다. 공격자는 dl
함수가 비활성화되지 않은 것을 발견하고 시스템 명령을 실행하기 위해 사용자 정의 PHP 확장을 만들기로 결정합니다.
공격자가 취한 단계:
- PHP 버전 식별:
- 공격자는 스크립트(
<?php echo 'PHP Version is '.PHP_VERSION; ?>
)를 사용하여 PHP 버전을 확인합니다.
- PHP 소스 획득:
- 로컬 PHP 설정:
- 특정 PHP 버전을 시스템에 추출하고 설치합니다.
- 확장 생성:
사용자 정의 확장을 컴파일하기 위한 주의사항:
- ZEND_MODULE_API_NO:
bypass.c
의ZEND_MODULE_API_NO
는 현재 Zend Extension Build와 일치해야 하며, 다음 명령으로 검색할 수 있습니다:
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
- PHP_FUNCTION 수정:
- 최근 PHP 버전(5, 7, 8)의 경우
PHP_FUNCTION(bypass_exec)
를 조정해야 할 수 있습니다. 제공된 코드 조각에서 이 수정을 자세히 설명합니다.
사용자 정의 확장 파일:
- bypass.c:
- 사용자 정의 확장의 핵심 기능을 구현합니다.
- php_bypass.h:
- 확장 속성을 정의하는 헤더 파일입니다.
- config.m4:
- 사용자 정의 확장을 위한 빌드 환경을 구성하는 데
phpize
에 의해 사용됩니다.
확장 빌드:
- 컴파일 명령:
phpize
,./configure
,make
를 사용하여 확장을 컴파일합니다.- 결과적으로 생성된
bypass.so
는 모듈 하위 디렉토리에 위치합니다.
- 정리:
- 컴파일 후
make clean
및phpize --clean
을 실행합니다.
피해자 호스트에 업로드 및 실행:
- 버전 호환성:
- 공격자와 피해자의 시스템 간에 PHP API 버전이 일치하는지 확인합니다.
- 확장 로드:
- 상대 경로 또는 프로세스를 자동화하는 스크립트를 사용하여
dl
함수를 활용하여 제한을 우회합니다.
- 스크립트 실행:
- 공격자는
bypass.so
와 PHP 스크립트를 피해자의 서버에 업로드합니다. - 스크립트는
dl_local
함수를 사용하여bypass.so
를 동적으로 로드한 다음cmd
쿼리 매개변수를 통해 전달된 명령으로bypass_exec
를 호출합니다.
명령 실행:
- 공격자는 이제 다음을 통해 명령을 실행할 수 있습니다:
http://www.example.com/script.php?cmd=<command>
이 상세한 절차는 시스템 명령을 실행하기 위해 PHP 확장을 생성하고 배포하는 과정을 설명하며, dl
함수를 악용하여 이러한 보안 침해를 방지하기 위해 이상적으로 비활성화되어야 합니다.
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.