RealVNC VNC Server是一款远程终端控制软件 RealVNC VNC Server采用的RFB(远程帧缓冲区)协议允许客户端与服务端协商合适的认证方法,协议的实现上存在设计错误,远程攻击者可以绕过认证无需口令实现对服务器的访问。 具体操作细节如下: 1) 服务端发送其版本\"RFB 003.008\n\" 2) 客户端回复其版本\"RFB 003.008\n\" 3) 服务端发送1个字节,等于所提供安全类型的编号 3a) 服务端发送字节数组说明所提供的安全类型 4) 客户端回复1个字节,从3a的数组中选择安全类型 5) 如果需要的话执行握手,然后是服务端的\"0000\" RealVNC 4.1.1或之前版本在实现RFB 003.008协议时没有检查判断在上面第4步中客户端所发送的字节是否为服务器在3a步中所提供的,因此认证就从服务端转移到了客户端。攻击者可以强制客户端请求\"Type 1 - None\"为安全类型,无需口令字段便可以访问服务器。 以下是典型的报文dump: Server -> Client: 52 46 42 20 30 30 33 2e 30 30 38 0a <- Server version Client -> Server: 52 46 42 20 30 30 33 2e 30 30 38 0a <- Client version Server -> Client: 01 02 <- One field follows... and that field is 02 (DES Challenge) Client -> Server: 01 <- Ahh, the lovely 1 byte exploit! Beautiful, isn\'\'t it? Server -> Client: 00 00 00 00 <-- Authenticated!
RealVNC VNC Server是一款远程终端控制软件 RealVNC VNC Server采用的RFB(远程帧缓冲区)协议允许客户端与服务端协商合适的认证方法,协议的实现上存在设计错误,远程攻击者可以绕过认证无需口令实现对服务器的访问。 具体操作细节如下: 1) 服务端发送其版本\"RFB 003.008\n\" 2) 客户端回复其版本\"RFB 003.008\n\" 3) 服务端发送1个字节,等于所提供安全类型的编号 3a) 服务端发送字节数组说明所提供的安全类型 4) 客户端回复1个字节,从3a的数组中选择安全类型 5) 如果需要的话执行握手,然后是服务端的\"0000\" RealVNC 4.1.1或之前版本在实现RFB 003.008协议时没有检查判断在上面第4步中客户端所发送的字节是否为服务器在3a步中所提供的,因此认证就从服务端转移到了客户端。攻击者可以强制客户端请求\"Type 1 - None\"为安全类型,无需口令字段便可以访问服务器。 以下是典型的报文dump: Server -> Client: 52 46 42 20 30 30 33 2e 30 30 38 0a <- Server version Client -> Server: 52 46 42 20 30 30 33 2e 30 30 38 0a <- Client version Server -> Client: 01 02 <- One field follows... and that field is 02 (DES Challenge) Client -> Server: 01 <- Ahh, the lovely 1 byte exploit! Beautiful, isn\'\'t it? Server -> Client: 00 00 00 00 <-- Authenticated!