핵심 요약
- 비트코인 탈취를 주제로 한 CTF 대회에서 파이썬 표준 라이브러리만으로 원격 명령 실행을 성공시킨 PoC 코드가 공개되었습니다.
- PHP 8.4.26의 메모리 고갈과 세션 상태 버그를 이용해 힙 주소와 코드 주소를 탈취한 뒤 최종적으로 시스템 명령을 실행하는 방식입니다.
- 반복 루프나 재시도 없이 최대 20번의 HTTP 요청만으로 로컬 도커 환경에서 즉시 재현 가능한 익스플로잇 체인으로 구성되어 있습니다.
요약 해커이자 보안 연구자인 KillaBoi가 최근 'Steal My Bitcoin' 해킹 대회(CTF)의 공격 체인을 재현한 익스플로잇 개념 증명(PoC) 코드를 깃허브에 공개했습니다. 파이썬 표준 라이브러리만을 이용해 단일 파일로 작성된 이 코드는, 별도의 외부 패키지나 복잡한 재시도 과정 없이 단 20회 이내의 HTTP 요청만으로 서버 원격 코드 실행(RCE) 및 플래그 획득까지 완벽하게 이어지는 과정을 보여줍니다.
공격의 핵심 메커니즘은 PHP의 멀티파트 업로드 파싱 취약점입니다. 세션 업로드 진행률(upload-progress)을 처리하는 과정에서 정교하게 조작된 소규모 멀티파트 요청을 보내면, PHP 내부에서 실제 전송 바이트 크기보다 훨씬 많은 메모리를 소비하게 만들어 OOM(메모리 부족)을 유발합니다. 이로 인해 작업자(worker) 프로세스 내부에 정리되지 않은 찌꺼기 상태(stale state)가 남게 되며, 후속 요청을 통해 세션 쿠키로 힙(Heap) 주소와 PHP 코드 실행 주소를 차례로 유출(leak)시킵니다.
이렇게 확보한 두 주소를 이용해 마지막 요청에서 위조된 해시테이블(forged HashTable) 구조체를 힙에 배치하고, PHP 내부의 정리 루틴이 이를 처리하도록 유도하여 시스템 명령 실행 핸들러인 zif_system을 트리거합니다. 결과적으로 열려 있는 연결을 통해 비트코인 지갑 프라이빗 키나 플래그를 탈취하는 방식입니다. 작성자는 해당 PoC가 특정 알파인(Alpine) 기반 PHP 8.4.26 CLI 서버 환경 오프셋에 최적화되어 있음을 밝히며, 로컬에서 직접 검증해볼 수 있는 도커 환경 구성 파일도 함께 공유했습니다.
Sponsored · 광고