我们知道,跨站请求伪造(CSRF)漏洞带有极大的危害性,CSRF能够利用Web 应用程序对于经认证的连接的信任来干坏事。虽然该漏洞早在1988就被提出了,所以它是一个老问题了,但是之前对该攻击的报道,大都集中在对在线帐户的危害方面,所以直至今日,许多人对利用CSRF攻击本地网设备甚至localhost上的服务这一点仍然一无所知。实际上,在运行Web服务器的本地网上的任何设备都易受CSRF的攻击,本文将以Motorola/Netopia设备为例加以详细说明。
Motorola/Netopia 2210 DSL调制调解器是由AT&T公司于2007年推出的一款产品。 研究发现,这个设备特别容易受到跨站请求伪造攻击的影响,所以我们就用它来演示如何通过CSRF攻击本地网设备。跨站请求伪造漏洞不仅仅只有Motorola/Netopia DSL调制调解器才有,其他DSL调制调解器也难逃厄运。默认时,大部分DSL调制调解器都没有要求对配置菜单的访问进行身份验证。之所以这样,是因为一个错误的假设,即只有受信任的设备才会出现在本地网络上。很不幸,这种假设是错误的,因为用户以及他们的浏览器都在本地网络上,但是他们并非总是可信的。人们在web上冲浪时,会有大量的内容展现在他们面前,但是好像从未注意到他们的浏览器正在不断发送的各种请求,问题就在这里,这些请求可能是用户想要发出的,但是也可能是攻击者挟持用户的浏览器发出的。
一、调制调解器的跨站请求伪造漏洞
我们之所以利用Motorola/Netopia DSL调制调解器进行演示,不仅因为它采用了一个假想的信任关系,并且允许请求转换等特性。当本地网上的用户浏览http://192.168.1.254时,他就会看到DSL的配置主页。在默认的情况下,这根本不需要身份验证——对攻击者来说,这太惬意了。
图1 进入DSL的配置主页 |
注意,DSL的配置主页右方有一个名为“Remote Access”的菜单选项,我们点击该选项时,将进入下一画面:
图2 启用远程管理功能 |
如您所见,默认情况下远程管理功能是禁用的,然而,好在仍然有一个缺省用户名、空密码以及一些其他选项,这些足以启用永久性远程管理功能。那还犹豫什么:我们直接单击“Enable”按钮,这会向该设备发送一个POST,这个POST看上去是这样的:
POST /Forms/remoteRES_1 HTTP/1.0 timeoutDisable=0&Enable=Enable |
这个POST将在该DSL调制调解器的远程管理功能,将密码设为blehblah,同时启用永久性远程访问功能。看到了吧,这都是不要求身份验证惹得祸,否则,我们很难做到这些。 因此如果某人精心策划了一个自动提交的JavaScript表单,那么人们就能够利用它来提交各种值,并启用它们自己的密码。所以,这会使的事情变得更糟。看起来这个DSL调制调解器不仅允许我们转换各种请求,还能接受各种值。所以,您可以将前面的POST请求转换成一个GET请求,并得到同样的效果。这意味着,只要设法让用户向下列URL发送一个请求,我们就能能够搞定这个调制解调器:
http://192.168.1.254/Forms/remoteRES_1?NSS_RemotePassword=blehblah& |
如您所见,对用户来说,情况更加不妙了。只要用户点击了该链接,就会发出一个伪造的请求,从而启用远程管理功能,并将密码设为攻击者选择的字符串。呵呵,实际上,我们还可以通过多种不同的方式来达此目的,最简单的一个就是使用HTML的img标签,并将图像大小设为1x1像素,这样,当找不到图像时,就不会出现小红x了。
|
如果使用这个DSL调制调解器的人访问了包含上述图像标签的页面,那么攻击者就能够远程管理该DSL调制调解器,并为其设置密码。事实上,攻击者所能做的还远不止这些。 他们可以通过向该DSL调制调解器提交其它的请求来控制该DSL调制调解器的各项功能。并且,这些事情做起来简单得令人难以置信,所以就不具体介绍了。
二、安全漏洞的影响
请记住,攻击者已经能够远程管理您的路由设备。所以,即使您在网络内部具有一个私人的IP地址,攻击者仍然能够访问您的日志。在直接攻击目标之前,需要识别目标的内部IP地址,并向这些目标发送相应的配置,但是这并非难事。基本上,本地网上的机器都能够得手。
有些静态信息对于攻击者而言是已知的,如用户名为admin,端口号为2420。只要扫描一下端口号就可以暴露出已被攻陷的机器。此外,攻击者还可以在页面上放置两个img标签,一个用来设置远程管理功能,另一个用来记录访问该页面的用户的的 IP 地址。这样可以帮助他们缩小潜在的受害者的搜索范围。
现在,人们能够在多种不同的热门地点来放置他们自己的内容,当然社交网络首当其冲。 例如,这个安全漏洞意味着你的DSL调制调解器可能只是因为浏览MySpace就被攻陷——真是太可怕了! 不久前,人们还讨论如何将社交网络变成一个攻击平台,本漏洞正好可以用于此目的。这个攻击只需要一个请求:即一个HTTP GET。在不许以HTTP GET请求的形式发送请求的情况下,发动这种攻击可能有些困难。虽然我对其原因还不是很确定,但是我打赌摩托罗拉公司目前还不知道他们的小Web服务器所允许这一点——当然,这只是猜测。
三、亡羊补牢
正如您获悉(或者还不知道的)那样,现在是修改Linksys无线设备的默认配置的时候了。CSRF漏洞的利用是基于已知的静态数据的。给DSL调制调解器设置一个口令并修改该设备的默认IP地址是一个良好的开端。设置密码时,务必选择一个强壮的密码。当然,并非决不能在DSL调制调解器上启用远程管理功能,但是当您启用远程管理功能您知道将会发生什么事情吗?您的证书通过web到达您的路由设备时,并没有采取任何加密保护。如果您好奇心重,不妨亲自配置一个Linux防火墙,并只让你的DSL的IP穿透该设备,并且在该设备上完成对DSL的配置。
我们要汲取教训,本地网或者本机上一切默认设置、密码、可预测的位置等等都要加以修改。这样,将来出现其它漏洞时,您就能更好地保护自己。
四、小结
我们知道,跨站请求伪造(CSRF)漏洞带有极大的危害性,CSRF能够利用Web 应用程序对于经认证的连接的信任来干坏事。本文详细介绍了攻击者是如何利用CSRF攻击本地网设备的,同时介绍了该漏洞的影响,最后我们为读者介绍了其防御方法。