NetGear路由器可通過命令注入獲取ROOT權(quán)限
國外某大牛研究發(fā)現(xiàn),NetGear路由器wndr3700v4的固件存在認(rèn)證漏洞。一旦Web界面認(rèn)證繞過了,后續(xù)可以做的事情就會(huì)很多。
NetGear的wndr3700v4固件中有一個(gè)可執(zhí)行腳本net-cgi,這個(gè)功能很像busy-box。所以里面有很多的地方可以研究,這里我們比較感興趣的是cmd_ping6()這個(gè)模塊。
這個(gè)功能利用char *host函數(shù)來工作的,主要的功能是通過機(jī)器名或者IPv6來進(jìn)行ping操作。這個(gè)是一個(gè)很常見的功能,不過這個(gè)固件里面,它使用了sprintf ()這個(gè)函數(shù),它將字符串復(fù)制到shell命令中去執(zhí)行了,這是一個(gè)最簡單的緩沖區(qū)溢出漏洞,最終他會(huì)將輸入內(nèi)容傳遞到system ()這個(gè)函數(shù)來執(zhí)行。
那如果這個(gè)用戶沒有使用IPv6怎么辦呢?沒關(guān)系,只要命令被system ()執(zhí)行了,管它ping命令是否成功執(zhí)行干毛?
回頭看一下,這個(gè)漏洞是如何產(chǎn)生的。
cmd_ping6()通過cgi_commit ()調(diào)用,cgi_commit ()通過sub_4052d0()調(diào)用。
頁面執(zhí)行的時(shí)候,是使用的ping6_traceroute6_hidden_info.htm這個(gè)頁面。
我們來試著執(zhí)行一些小命令測(cè)試一下:
雖然是一個(gè)小測(cè)試,但是效果是立竿見影的,就算是遠(yuǎn)端,你也可以輕易的知道命令是否執(zhí)行成功了。
對(duì)與這個(gè)漏洞,這名外國大牛利用Python寫出了一個(gè)EXP,這個(gè)EXP主要執(zhí)行了以下幾個(gè)功能:
1.通過指紋識(shí)別,驗(yàn)證是否存在漏洞。2.將該設(shè)備的Web認(rèn)證禁用。3.通過命令注入,設(shè)置iptables,開啟telnet,對(duì)外網(wǎng)開啟2323端口并監(jiān)聽。4.重新啟用Web認(rèn)證,恢復(fù)其原始狀態(tài)。
下載EXP
運(yùn)行該 EXP 需要安裝 Bowcaster。