eEye公司对于UPNP的缓冲区溢出漏洞的测试情况如下:在测试UPNP服务的时候发现以不同的速率发送错误构造的广告时会引起目标主机上的内存访问异常。这些异常大多是由于指针被改写的原因。其中的一个测试例子是:
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=10
LOCATION: :PORT/.xml
NT: urn:schemas-upnp-org:device:InternetGatewayDevice:1

NTS: ssdp:alive
SERVER: EEYE/2001 UPnP/1.0 product/1.1
USN: uuid:EEYE
当Location RUL的protocol、port和uri域的数据 不断增大,并以10000毫秒的间隔发送时,就可以开始看到访问异常的报警。在这种情况下,EAX和ECX寄存器将包含从被改写的内存数据中得到的地址,并且svchost.exe将在一条mov指令中访问一个无效的内存地址。访问异常错误报警的原因是目的地址是一个被改写的指针。在测试中发现存在多处利用。其中有堆栈溢出和堆溢出,它们都是可利用的。SSDP服务在多路广播和广播上。因此,有可能仅仅利用一个匿名的UDP SSDP攻击会话就可以获得整个网络上XP机器的系统访问权。
UPNP由多个协议组成,SimpleService Discovery Protocol是其中之一。当一个UPNP使能的设备是安装在网络上的时候,无论它是计算机、网络设备,或者甚至是一个家用的部件,这些设备都会发送一个广告消息来通知它自己的存在。在缺省的XP配置中,没有像从“网络服务”安装UPNP设备那样支持增加设备控制。虽然微软增加了一个缺省的“InternetGatewayDevice”支持,但是如果一个程序要配置为sniffer整个网络,可以看到在加载XP时XP在搜索这个设备。增加这种支持是为了引导网络硬件厂家生产使能了UPnP的网络设备。通过发送恶意伪造的包含SSDP广告的UDP数据包,攻击者可以强制XP/ME客户端连回到一个指定的IP地址,并传递一个特殊构造的HTTP/HTTPS请求。
例子数据包:
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1
LOCATION: URL
NT: urn: schemas-upnp-org:device:InternetGatewayDevice:1
NTS: ssdp:alive
SERVER: EEYE/2001 UPnP/1.0 PASSITON/1.1
USN: uuid:EEYE
上面的数据包应该发送到XP/ME系统的1900端口。
当XP系统接收到这个请求的时候,它将翻译LOCATION后面的URL,然后没有经过任何检查,它就把这个URL传递给Windows Internet Service API中的函数。这个字符串被分解并创建一个新的会话。
例如:LOCATION:http//xptest.example.com:19/himom.html
恶意的攻击者可以指定一个远程的chargen服务,使得XP客户端连接到该服务并进入一个read/malloc循环。这种攻击会使得系统进入一个不稳定的状态,CPU的利用率达到100%,内存也被一直分配到全部消耗完。
另外一个更大的问题是,它还可以演变成为分布式拒绝服务攻击,因为SSDP支持组播和广播。这样一个UDP数据包就可以导致目标网络上的所有XP机器都向着一个指定的URL进行攻击。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-31484-3.html
我来个去
国家不希望出钱