首先想到的是命令执行,经过一番操作发现并不存在,看来系统都是升级了的。
扫描端口发现49152端口打开,详细扫描发现是Upnp服务
关于UPnP的NT与CALLBACK订阅模块有如下格式:
CALLBACK的值一般为回调地址的URL。NT取upnp:event表示订阅事件。
解压后进入CallStranger目录
安装工具python3setup.pyinstall
安装完之后接下来开始利用:
利用之前先看一下这个工具的部分代码:
对当前网络进行扫描和测试:python3CallStranger.py
找到了三个Upnp设备:华为路由器、客厅盒子、客厅极光TV
如下图,扫描利用完毕,标记为红色的是确定有漏洞的,标记为黄色的是疑似的。
接下来我们通过流量分析来看看具体干了哪些事情。
如下图,首先回调的设备需要一个自己的session
然后通过将获得的session值加入到token里再次put请求得到一组key值
每个回调值向回调值指定的主机发送107个SYN包。在107个SYN包之后,它尝试
连接下一个值。这意味着每25字节就有10760字节的TCPSYN流量。我们可以计算一下放大的倍数:10760/25=256,也就是说1个回调值放大256倍,如果采用多个回调值可进行无限放大。
如果返回412,说明回调值不可利用,不存在此漏洞,前面的扫描结果也说明了这一点。
总的来说,回调值如果被利用了后果还是挺严重的,如果没有必要,最好关闭UPnP端口。看来电视盒子定期也要更新系统啊,否则为什么定期弹窗让升级系统呢?在最新更新的UPnP协议规范中,可以看出开发者限制了订阅事件的源IP和目标IP都必须在内网中,这从一定程度上修复了该漏洞。
THE END