伪装跨站请求来攻击本地网络设备
以下是OMG小编为大家收集整理的文章,希望对大家有所帮助。
我们知道,跨站请求伪造(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调制调解器进行演示,不仅因为它采用了一个假想的信任关系,并且允许请求转换等特性。当本地网上的用户浏览//192.168.1.254时,他就会看到DSL的配置主页。在默认的情况下,这根本不需要身份验证——对攻击者来说,这太惬意了。
注意,DSL的配置主页右方有一个名为“Remote Access”的菜单选项,我们点击该选项时,将进入下一画面:
图2 启用远程管理功能
如您所见,默认情况下远程管理功能是禁用的,然而,好在仍然有一个缺省用户名、空密码以及一些其他选项,这些足以启用永久性远程管理功能。那还犹豫什么:我们直接单击“Enable”按钮,这会向该设备发送一个POST,这个POST看上去是这样的:
POST /Forms/remoteRES_1 HTTP/1.0Host: 192.168.1.254NSS_RemotePassword=blehblah&NSS_EnableWANAdminAccessRES=on&timeoutDisable=0&Enable=Enable
这个POST将在该DSL调制调解器的远程管理功能,将密码设为blehblah,同时启用永久性远程访问功能。看到了吧,这都是不要求身份验证惹得祸,否则,我们很难做到这些。 因此如果某人精心策划了一个自动提交的JavaScript表单,那么人们就能够利用它来提交各种值,并启用它们自己的密码。所以,这会使的事情变得更糟。看起来这个DSL调制调解器不仅允许我们转换各种请求,还能接受各种值。所以,您可以将前面的POST请求转换成一个GET请求,并得到同样的效果。这意味着,只要设法让用户向下列URL发送一个请求,我们就能能够搞定这个调制解调器:
//192.168.1.254/Forms/remoteRES_1?NSS_RemotePassword=blehblah&NSS_EnableWANAdminAccessRES=on&timeoutDisable=0&Enable=Enable
如您所见,对用户来说,情况更加不妙了。只要用户点击了该链接,就会发出一个伪造的请求,从而启用远程管理功能,并将密码设为攻击者选择的字符串。呵呵,实际上,我们还可以通过多种不同的方式来达此目的,最简单的一个就是使用HTML的img标签,并将图像大小设为1x1像素,这样,当找不到图像时,就不会出现小红x了。
如果使用这个DSL调制调解器的人访问了包含上述图像标签的页面,那么攻击者就能够远程管理该DSL调制调解器,并为其设置密码。事实上,攻击者所能做的还远不止这些。 他们可以通过向该DSL调制调解器提交其它的请求来控制该DSL调制调解器的各项功能。并且,这些事情做起来简单得令人难以置信,所以就不具体介绍了。