
CVE-2024-6387에 대한 개념 증명 익스플로잇으로, 취약한 OpenSSH 서버를 대상으로 힙 조작과 경쟁 조건을 통해 원격 코드 실행을 달성합니다
이 저장소는 취약한 OpenSSH 버전을 실행하는 SSH 서버에서 CVE-2024-6387 취약점을 익스플로잇하기 위한 개념 증명(POC)을 포함합니다.
POC(Proof of Concept, 개념 증명)는 보안 취약점의 익스플로잇을 통제되고 재현 가능한 방식으로 시연하는 프로그램 또는 스크립트입니다. 주요 목적은 취약점이 존재하며 이를 악용하여 악성 코드를 실행하거나 영향을 받는 시스템에서 승인되지 않은 작업을 수행할 수 있음을 보여주는 것입니다.
이 저장소의 POC는 SSH 서버의 CVE-2024-6387 취약점을 악용하도록 설계되었습니다. 아래는 코드의 각 부분이 어떻게 작동하는지에 대한 간략한 설명입니다:
CVE-2024-6387.py: 이 파일에는 POC의 주요 코드가 포함되어 있습니다. 여기서는 SSH 서버와의 연결 설정, 서버 힙 조작을 위한 특정 패킷 전송, 응답 시간 측정, 서버의 경쟁 조건 익스플로잇을 위한 함수들이 정의됩니다.
setup_connection(ip, port): 원격 서버와 TCP/IP 연결을 설정합니다.
send_packet(sock, packet_type, data): 원격 서버에 패킷을 전송합니다.
perform_ssh_handshake(sock): 전체 SSH 핸드셰이크를 수행합니다.
: 취약점을 악용하기 위해 특정 패킷으로 서버 힙을 준비합니다.
: 서버의 최종 응답 시간을 측정합니다.
: SSH 서버에서 경쟁 조건 익스플로잇을 시도합니다.
: 여러 glibc 베이스 주소를 시도하며 전체 익스플로잇을 수행합니다.
prepare_heap(sock)time_final_packet(sock, parsing_time)attempt_race_condition(sock, parsing_time, glibc_base)perform_exploit(ip, port)설정: exploit.py 파일에서 ip 및 port 변수를 수정하여 익스플로잇할 SSH 서버를 지정하세요.
실행: CVE-2024-6387.py 스크립트를 실행하세요. 익스플로잇에 성공하면 취약점이 성공적으로 악용되었음을 알리는 메시지를 받게 됩니다.
이 POC가 CVE-2024-6387 취약점과 함께 작동하도록 하려면 다음 수정 또는 고려 사항을 적용해야 합니다:
셸코드 업데이트: 셸코드 플레이스홀더 shellcode = b"\x90\x90\x90\x90"를 영향을 받는 서버에서 원하는 작업을 수행하는 실제 셸코드로 교체하세요.
CVE-2024-6387에 맞춤: prepare_heap 및 create_public_key_packet 함수에서 전송되는 데이터 구조와 패킷이 CVE-2024-6387에 설명된 취약점을 구체적으로 악용하도록 설계되었는지 확인하세요.
이 저장소는 교육 및 연구 목적으로 제공됩니다. 승인 없이 취약점을 익스플로잇하는 것은 불법일 수 있으며, 승인되지 않은 환경에서는 엄격히 금지됩니다. 작성자는 이 코드의 오용에 대해 책임을 지지 않습니다.