[⾝份验证绕过]CVE-2018-10933(漏洞复现)
预备知识:
  SSH认证流程:
  SSH的登录过程会分为5个阶段进⾏,⾸先是版本号协商阶段,服务器端监听22端⼝,客户端与服务端建⽴TCP连接,并且进⾏SSH版本协商,如果协商成功就进⼊密钥和算法协商阶段,否则就断开TCP连接。
  在密钥算法协商阶段,服务器⾸先将⾃⼰的公钥和会话ID发送给客户端,客户端将ID及会话密钥Key进⾏异或操作,⽤公钥将异或后的结果加密,发送给服务端。
  服务端进⾏反向操作,利⽤⾃⼰的密钥和客户端的公钥解密,得到Key值,接下来的传输都是以密钥的形式进⾏加解密。
  在⼝令或密钥认证阶段,⾸先是客户端利⽤⾃⼰的私钥和Key进⾏加密,然后传输到服务器端,服务器端利⽤⾃⼰的私钥和Key进⾏解密,判断解密后的⼝令,
  如果⼝令错误,发送失败报⽂和认证列表,客户端收到后重新选择认证,如果认证成功则进⼊交互界⾯,如果认证失败则⼀直循环,直到达到服务器端认证的次数上限,服务器端主动关闭本次TCP连接。
  libssh版本0.6及更⾼版本在服务端代码中具有⾝份验证绕过漏洞。
实验环境:
  libssh0.7.5
  Ubuntu 192.168.100.160/24
  python3
  docker & docker-compose
漏洞复现:
  创建source⽬录,复制libssh到source
  解压并进⼊⽬录
  tar xvJf libssh-0.7.
  cd libssh-0.7.5
  看到解压出来的⽂件
  编译并安装
  mkdir build && cd build
  cmake -DCMAKE_install_prefix=/usr -DCMAKE_BUILD_TYPE=Debug ..
  make
  修改src⽬录下的auth.c源⽂件。
  到ssh_userauth_password函数并将SSH2_MSG_USERAUTH_REQUEST替换为SSH2_MSG_USERAUTH_SUCCESS
  vim ../src/auth.c
  修改后 ./examples/samplessh就会成为验证该漏洞的PoC。
  到SSH_AUTH_STATE_NONE和SSH_PENDING_CALL_AUTH_OFFER_PUBKEY
  替换为SSH_AUTH_STATE_SUCCESS和SSH_PENDING_CALL_CONNECT
  修改两处登录状态源代码,./examples/samplessh就会成为验证该漏洞的PoC。
  保存退出输⼊make再次编译
  输⼊ ssh-keygen创建私钥和公钥
  ssh-keygen⽣成过程中会询问多个配置信息,全部点击回车,使⽤默认设置即可。
  启动服务并测试
  examples/ssh_server_fork -p 7777 127.0.0.1 -v -k /root/.ssh/id_rsa
  同时启动新终端窗⼝,使⽤SSH客户端连接服务端:
  进⼊build⽬录输⼊代码 ./examples/samplessh -p 7777 root@127.0.0.1 ,连接成功
  在服务器输出的调试信息中可以到包类型的分派处理程序(ssh_packet_process)
  根据服务端输出的调试信息,筛掉⽆⽤的⽇志信息,到ssh_pack_process,
  分析可以看出该漏洞的利⽤点就是发送SSH2_MSG_USERAUTH_SUCCESS请求,从⽽进⼊ssh_packet_userauth_success函数。  cd 进⼊ libssh-0.7.5/examples/
  在ssh_server_fork.c⽂件到ssh_server_callbacks_struct函数,发现服务端设Demo中进⾏了设置 
  在ssh_server_fork.c⽂件中到auth_password函数
  认证成功后的路径:
  ssh_message_auth_reply_success ->ssh_auth_reply_success:
  ssh_message_auth_reply_success ->ssh_auth_reply_success:
  从源代码可以看出,在正常情况下,在SSH登录成功后,libssh给Session设置了认证成功的状态。  结束服务端和客户端程序
  退出到source⽬录,并删除刚才解压的⽬录cve漏洞库
  rm -rf libssh-0.7.5
  通过程序发送SSH2_MSG_USERAUTH_SUCCESS消息,触发漏洞
  创建l 输⼊如下代码
  docker-compose up -d 启动环境
  创建python⽂件libssh_poc.py并输⼊代码
  输⼊命令利⽤poc
  python3 libssh_poc.py
  成功执⾏id命令

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。