
CVE-2018-7600 익스플로잇의 Rust 구현으로, 취약한 Drupal 7 설치본(<= 7.57)을 대상으로 합니다.
CVE-2018-7600 취약점에 노출된 Drupal 7 설치(<= 7.57)를 대상으로 하는 Rust 구현체입니다. 이 CLI는 다음 PoC 흐름을 재현합니다: user/password 경로를 통해 캐시된 렌더 가능한 폼을 오염시키고 form_build_id를 추출한 다음, file/ajax 엔드포인트를 통해 캐시된 페이로드를 트리거하여 PHP 함수 호출을 통한 원격 코드 실행을 달성합니다.
CVE-2018-7600은 Drupal 7(그리고 다른 맥락에서 Drupal 8)에 영향을 미치는 원격 코드 실행 취약점입니다. Drupal 7에서 이 문제는 특정 렌더 가능한 배열이 캐시된 후 나중에 렌더링될 때 충분하지 않은 살균 처리에서 비롯됩니다. 공격자는 캐시되는 엔드포인트에 특수하게 조작된 렌더 메타데이터를 주입함으로써, 캐시된 데이터가 나중에 렌더링되거나 요청될 때 임의의 PHP 함수가 실행되도록 할 수 있습니다.
#post_render 콜백이 임의의 PHP 함수(예: passthru)인 렌더 가능한 배열을 삽입합니다.?q=user/password로 POST하여 Drupal이 오염된 폼을 캐시하도록 합니다.form_build_id를 받으면, PoC는 POST 본문에 form_build_id를 포함하여 /file/ajax/name/#value/<form_build_id>를 호출함으로써 페이로드를 트리거합니다. Drupal이 캐시된 요소를 렌더링할 때 #post_render 콜백이 공격자가 제어하는 마크업으로 실행되어 명령 실행을 가능하게 합니다.이 Rust CLI는 대상 Drupal 7 사이트 요청 매개변수에 대해 2단계 시퀀스(오염 후 트리거)를 구성 및 수행하고, HTML 응답에서 form_build_id를 파싱한 다음, file/ajax 엔드포인트를 트리거하여 공격자가 지정한 함수를 실행합니다.
클라이언트는 인증서 검증을 비활성화하므로(원래 PoC가 verify=False를 전달한 것을 그대로 따르기 위해) 이 도구는 자체 서명되거나 유효하지 않은 TLS 인증서를 사용하는 대상에서도 작동합니다. 유효한 인증서를 요구하려면 소스에서 이 동작을 변경할 수 있습니다.
기본 사용법(기본 명령은 whoami, 기본 함수는 passthru):
cargo run -- -u http://target.com/
사용자 지정 명령 및 함수 실행:
cargo run -- -u http://target.com/ -c "whoami" -f "passthru"
HTTP/S 프록시 사용(형식: http://127.0.0.1:8080/):
cargo run -- -u http://target.com/ -p http://127.0.0.1:8080/
CLI 옵션 요약:
-u, target: 대상 Drupal 사이트의 URL(예: http://target.com/).-c, --command: 대상에서 실행할 명령(기본값: whoami).-f, --function: 공격 벡터로 사용할 PHP 함수(기본값: passthru).-p, --proxy: 요청을 라우팅할 선택적 프록시 URL.전체 흐름 예시:
user/password 폼을 오염시키고 #post_render 콜백과 명령이 포함된 #markup을 삽입합니다.form#user-pass 내부의 form_build_id를 찾습니다.form_build_id와 함께 ?q=file/ajax/name/#value/<form_build_id>로 POST하여 렌더링을 트리거하고 명령을 실행합니다.이 도구는 교육 및 승인된 침투 테스트 목적으로만 사용됩니다. 책임감 있게 사용하고, 소유하거나 명시적 허가를 받은 시스템에서만 사용하십시오.