1,介绍
说到路由器安全,CSRF(跨站请求伪造)漏洞一直是个老生常谈但又容易被忽视的问题。今天要聊的,是一个具体到不能再具体的案例——D-link DIR-600路由器(硬件版本BX,固件版本2.16)上的CSRF漏洞。这个漏洞其实早就被公开了,但很多人只知其然,不知其所以然。这里就把整个利用过程掰开揉碎讲清楚:攻击者如何通过CSRF漏洞,不声不响地实现远程管理访问,甚至完全控制这台路由器。
2,CSRF漏洞说明
CSRF漏洞的核心在于:某些请求既没有CSRF token,也不需要密码授权。这意味着攻击者可以伪造一个已登录用户的请求,让用户自己在不知情的情况下执行攻击者想干的事。放在D-link管理面板这个场景里,漏洞能玩出什么花样?
- 添加一个新的管理账号——相当于给路由器塞了个“后门钥匙”;
- 启用路由器的远程管理——让攻击者从外网就能登录;
- ping特定的机器——这个操作只需要登录路由器就能实现,但需要知道路由器的WAN IP地址。
这三条加在一起,基本等于把路由器的控制权拱手让人。下面逐个拆解攻击步骤。
3,PART1:给路由器增加一个新的管理帐号
实现这个操作需要两个请求配合完成。先看第一个请求:
REQUEST1:
接着看第二个请求:
REQUEST2:
这里有两个关键细节:第一,REQUEST1和REQUEST2中默认的路由局域网IP是192.168.0.1,管理账号是admin。第二,REQUEST1的XML请求里,密码字段填的是==OoXxGgYy==——这是一个特殊标记,表示“不修改原admin账号的密码”。所以,这两个请求合在一起,实际效果是:新增了一个叫admin2的管理账号(密码是pass2),同时把远程管理端口2228给打开了。
PART2:ping特定的主机
第三个请求更简单,直接看代码:
REQUEST3:
把代码中的X.Y.Z.W替换成你想要ping的目标IP地址,就能让路由器向那个地址发起ICMP请求。这个操作本身没什么危害,但结合前面的添加账号和开启远程管理,攻击者可以先用ping确认目标IP是否在线,再通过新账号远程登录,做到“悄无声息又步步为营”。
