Steal My Bitcoin CTF 공략 PoC 공개, 힙 릭과 코드 릭 두 번으로 zif_system 호출
- KillaBoi가 Steal My Bitcoin CTF 공략 전 과정을 재현한 단일 파일 PoC를 GitHub에 공개, Python 3.11 표준 라이브러리만 쓰고 외부 의존성은 없음
- 힙 릭 단계에서 249,042바이트 producer와 6,672바이트 요청 8개로 OOM을 내 256바이트 쿠키를 받아 Zend chunk 베이스를, 코드 릭 단계에서 251,557바이트와 92,388바이트 요청으로 16바이트 쿠키를 받아 zval_ptr_dtor 주소를 알아냄
- 두 주소를 확보한 뒤 368,812바이트 POST에 위조 HashTable을 심어 정리 루틴이 zif_system을 호출하게 만들고, 전체 요청은 재시도 없이 20개 이하로 끝남
- 오프셋은 Alpine PHP 8.4.26 내장 CLI 서버 4워커 기준이라 같은 버전 문자열을 쓰는 Debian php:8.4.26-fpm에서는 코드 릭 단계에서 실행이 중단됨
- 작성자는 원 스레드(585점, 댓글 458개)에 이 PoC를 직접 링크하며 Sol에 뭉개지지 않은 더 나은 버전을 만들어 달라고 요청
Hacker News 의견들
원 작성자가 원래 Steal My Bitcoin 스레드에 이미 직접 링크했더라. 585점에 댓글 458개짜리 글이었음.
밖에서 구경하는 입장에선 꽤 재밌었음. 매직 익스플로잇으로 금방 뚫는다고 큰소리치던 l33t 해커들, 그중엔 '전문가'도 있었는데 결국 못 뚫더라.
그렇게 큰소리친 전문가는 Trail of Bits CEO 한 명뿐이었고, 전직 NSA TAO 출신이라 굳이 증명할 것도 없는 사람임. 실제로 그렇게 어려운 익스플로잇도 아니었어. 나도 LLM 도움 받아 3시간쯤에 nginx+mediawiki php2shell RCE 짰음.
애초에 서버 셋업이 현실적이지도 않았고 익스플로잇도 안 됐음.
반대로 PoC를 보면 LLM이 몇 시간 만에 풀어버렸잖아. 그럼 큰소리친 전문가들 말이 맞았다고 봐야지.
이건 그냥 훈훈한 이벤트였음. 앞으로 나오는 CVE에도 재단 같은 데서 이런 걸 열어주면 좋겠더라.
근데 만든 사람은 '평범한 셋업'이라고 했지만 실제로는 PHP 내장 개발 서버에 nginx를 프록시로 붙인 구성임. 그 서버 문서 첫 줄이 공개 네트워크에 쓰지 말라고 경고하는 판이라 아무도 그렇게 안 씀. 서버가 계속 죽어있던 것도 그래서임.
그럼 그게 DoS 때문이었냐, 아니면 침투가 쉬워졌냐? 취약점 시연 자체엔 영향 없어 보이는데.
어제는 누가 PHP도 없는 완전 정적 사이트라고 하던데, 얘기가 계속 바뀌네.
HITCON CTF엔 현실적인 php2shell 챌린지가 있는데 아직 0솔브인 걸로 암.
관련으로 지갑 키가 서버에 없었다는 얘기가 나왔음. 원 스레드에서 의심하던 것과 달리 악의는 아니었을 수도 있고.
챌린지가 실제로 PHP 돌게 수정되고 나서 2-3시간 만에 뚫렸음.
이게 증명한 건 취약점이 그렇게 쉽진 않다는 거임. 패치 안 하고 며칠 둔 서버들이 다 봇넷에 들어간 건 아닐 수도.
난 반대 결론임. 처음엔 비표준 셋업이라 19시간 걸렸지만 이제 PoC만 조금 고치면 바로 털림. 악성 행위자는 이미 흔한 셋업 대부분을 터는 툴을 갖고 있을 걸.
나는 열나서 PHP 쓰는 내 사이트 두 개를 48시간 방치했는데 안 털렸음. 운이 좋았던 거겠지, 여기서 뭘 추론하면 안 됨.
2시간 만에 털렸고 그마저 기존 PoC로는 안 되는 셋업이었음. 아직도 부정하는 사람이 있다는 게 신기함.
php2shell이 nginx+fpm에서도 되냐? 로컬에서 재현이 안 되던데.
이론상 됨. 다만 흔한 nginx 셋업이나 요청을 클라이언트에 고정하지 않는 분산 구조면 아주 어려움. 이 PoC는 패치 당일 공개된 경로를 mod_php 없이 쓴 것뿐임.
나는 GLM 5.3으로 돌렸는데 메모리 오버플로까진 찾았음. 새벽 3시라 졸려서 중단했는데 /goal 주고 밤새 돌릴 걸 그랬어.
Kimi K3.1 Pro로 풀었음. 근데 대회 약관이 리소스 고갈을 금지해서 거기서 멈췄어. PoC 보여주니까 Kimi도 '수상 체인은 요청별 메모리 고갈을 썼으니 규칙 위반 같다'고 하더라.