2023年5月,vpnmentor在其部落格公布兩個有趣的漏洞(cve-2018–10561、cve-2018–10562),可以結合起來攻破gpon家庭閘道器。歷經一年,這兩個漏洞已經引起了很高的關注,並已被一堆殭屍網路利用起來,比如mettle、muhstick、mirai、hajime、satori等等。
冥冥之中,我感覺這個裝置背後還有更多的漏洞,說不定會引起更大的波瀾。
於是,我花了很長的時間去研究它。一般來說,gpon光網路終端是由網際網路服務提供商(isp)分發給終端使用者,用來連線網際網路點。經過我的研究發現,至少有五家廠商的gpon家庭閘道器存在漏洞。你可以用網路裝置搜尋引擎發現大量潛在的攻擊目標:
你可能會問,為什麼會有五個廠商都存在問題?因為這些裝置使用類似的韌體。不同產品的韌體上的任何差異都是廠商自主修改造成的,但其韌體的核心基本不變。我分析了很多不同isp所使用的產品韌體,最終得出這一結論。舉個例子,讓我們看看來自不同韌體包的根資料夾的內容:
值得注意的是,gpon家庭閘道器的韌體通常無法在**商的**找到,其安全更新機制很不完善。
如果我們想找漏洞,通常需要對某個正在執行的服務進行除錯,所以,為了更好的進行漏洞挖掘,我從易趣上買乙個真正的家庭裝置,是由alcatel-lucent公司生產的,基於arm處理器(armv5tel編譯韌體)的i-240w-q gpon家庭閘道器:feroceon 88fr131 rev 1 (v5l)。
首先,對alcatel-lucent i-240w-q gpon家庭閘道器的埠掃瞄就顯示出一些有趣的地方。該裝置貌似會開啟telnet和ssh服務,可能是方便isp遠端管理除錯。可是,預設情況下這些埠似乎都會被遮蔽。用nmap掃瞄結果如下:
嗯?我決定瀏覽webmgr的二進位制檔案,嘗試尋找乙個後門**。webmgr是ggpon家庭閘道器韌體的一部分,負責裝置的web管理控制台。通過粗略的瀏覽,「weblogincheck」看起來有點問題:
因為weblogincheck涉及「ote」和「otd」命令,所以,除了處理身份驗證之外,我們還可以利用這些命令來啟用或禁用後門**。
通過傳送乙個簡單的http的get請求,我們就可以關閉telnet埠的遮蔽!!!
通過傳送以下命令,我們可以重新啟用遮蔽:
接下來,我們需要找出登入憑證,使得我們可以通過telnet登入。讓我們對「/bin/telnetd」檔案逆向看看:
ok!這裡面似乎有硬編碼登入憑證「root/admin」和「root/huigu309」,並提供了shell功能:
接著,我在ssh服務中也發現了硬編碼的root帳戶。
現在我們可以訪問路由器的控制台了,是時候找找某些不安全的c函式了。我們可以通過跟蹤使用者的http請求的處理流程來進行觀察。對於緩衝區溢位,我們都知道以下這個函式功能:
原本的功能是將字串複製到目標陣列中。但是,由於這個函式不會檢查緩衝區長度,就有可能會觸發快取區溢位。
在ida pro中,我們可以看到許多引數都存在問題:「ftpusername」、「ftppassword1」、「ftpdirname」、「clientusername」、「clientpassword」、「urlbody」、「webdir」。使用者通過http請求提交的輸入直接由strcpy函式複製,並不會安全檢查。
讓我們通過curl命令來觸發dos漏洞,強制gpon裝置重新啟動:
為了更好的利用這一漏洞,我們最好需要繞過身份驗證。
我對「webmgr」二進位制檔案進行了不同安全級別的檢查,希望找到最簡單的利用方法,寫乙個最完美的poc:
因此,我在gpon路由器上啟用了aslr防護。當然,這並不影響我們攻擊堆。如果我們可以找到儲存在堆上的位置,就可以通過修改「pc」暫存器修改跳轉到指定位置,觸發shellcode。嗯,似乎很有希望:
最後,我得到了以下poc,通過觸發堆中儲存的shellcode,成功繞過了aslr,開啟乙個「tftpd」服務:
利用如下:
在網際網路世界中,路由器是網路上最重要的裝置。而家庭路由器更是唯一將我們的私人網路與網際網路分開的邊界裝置。這個閃爍的小盒子可以防禦外部大量的滲透攻擊。為了維護這個邊界裝置,路由器的韌體和硬體都需要不斷公升級和改進。對於現在的攻擊者來說,過時的舊裝置是最好的攻擊方向。
根據cyber-itl研究人員的最新研究,大多數路由器都很不安全。不幸的是,alcatel-lucent i-240w-q gpon家庭閘道器也是如此。由於缺乏安全功能,再加上糟糕的**,使得攻擊者可完全控制裝置。
我們已經按照漏洞披露政策向產品的安全團隊報告了漏洞,他們已經發布了安全補丁。
突破wap閘道器限制
解決思路 在wap閘道器和檔案伺服器之間加一層 伺服器,閘道器請求過來只到 伺服器,而不會到真正訪問到你的資源你伺服器。伺服器按照客戶端的請求引數每次去檔案伺服器上拿取檔案。技術關鍵點 1 伺服器與檔案伺服器之間連線的建立 2 輸入流和輸出流,位元組偏移量的設定 伺服器 3 伺服器輸出檔案型別 實現...
c 遮蔽鍵盤
msdn學習中心有一段小例子。是用來記錄按鍵次數的。我把它稍微做了一些改動,就可以遮蔽鍵盤輸入了。不過只能遮蔽普通輸入,一些控制鍵如tab,上下左右等是不能遮蔽的 public class mykeypressclass textbox1.text backspacepressed backspac...
C 遮蔽系統熱鍵
一般來說會用到hook 鉤子 即獲取系統的按鍵或者滑鼠動作,然後在系統響應之前執行自定義動作,或者直接截斷這個訊息,這就是遮蔽系統熱鍵的原理了。首先要呼叫作業系統的dll檔案,先引入命名空間 using system.runtime.interopservices 呼叫作業系統動態鏈結庫的方法 dl...