內含POC | 又一個漏洞可以遠程控制你的電腦!

Transmission BitTorrent應用程序最近被爆出了一個重大漏洞(CVE-2018-5702),該漏洞允許遠程執行惡意代碼並控制使用BitTorrent用戶的計算機。

來自Google的安全團隊——Project Zero發現了這個漏洞,其研究人員之一的Tavis Ormandy在初始報告發布後的40天內公布了POC。

Tavis Ormandy

通常情況下,Project Zero團隊會在向受影響的供應商提供報告90天之後或者在供應商發布補丁之後披露漏洞。

然而,這一次,因為Transmission開發人員一直沒有使用Project Zero團隊所提供的現成補丁。Project Zero的研究人員在提交漏洞報告40天之後,就披露了這個漏洞。

Ormandy在一份公開報告中寫道:

我發現Transmission開發人員沒有修復這個漏洞或者發布補丁,我對此感到沮喪,因此我建議這件事公開,以便大家可以使用這個補丁。我懷疑他們不會對此作出回應,但是我們還是拭目以待吧。

POC被公開

Ormandy發布的PoC,利用了Transmission的特定功能,讓攻擊者可以利用Web瀏覽器去控制那些下載BitTorrent應用程序的用戶。

Ormandy證實了他在Windows和Linux(Fedora和Ubuntu)上對Chrome和火狐的攻擊,並堅信其他瀏覽器和平台也容易受到攻擊。

Transmission BitTorrent應用程序適用於伺服器 - 客戶端架構,用戶必須在其系統上安裝後台服務程序,才能在本地瀏覽器上訪問Web界面。

客戶端使用JSON RPC請求與監聽埠9091的Web伺服器進行交互。後台服務程序默認只接受來自本地的請求,但通常將NAS設備設置為接受遠程客戶端。

Ormandy發現,使用一種名為「DNS重新綁定」的攻擊技術,可以在用戶電腦中安裝好的後台服務程序上執行命令。

攻擊解析

這個漏洞存在於安裝在本地主機上的服務可以被操縱來與第三方網站交互的事實。

示例RPC會話如下所示:

$ curl -sI http://localhost:9091/transmission/rpc

HTTP/1.1 409 Conflict

Server: Transmission

X-Transmission-Session-Id: JL641xTn2h53UsN6bVa0kJjRBLA6oX1Ayl06AJwuhHvSgE6H

Date: Wed, 29 Nov 2017 21:37:41 GMT

$ curl -H X-Transmission-Session-Id: JL641xTn2h53UsN6bVa0kJjRBLA6oX1Ayl06AJwuhHvSgE6H -d {"method":"session-set","arguments":{"download-dir":"/home/user"}} -si http://localhost:9091/transmission/rpc

HTTP/1.1 200 OK

Server: Transmission

Content-Type: application/json; charset=UTF-8

Date: Wed, 29 Nov 2017 21:38:57 GMT

Content-Length: 36

{"arguments":{},"result":"success"}

與所有這樣的HTTP RPC方案一樣,任何網站都可以向監聽本地的守護進程發送請求:XMLHttpRequest(),但理論上會被忽略,因為客戶端必須證明他們可以讀取和設置特定的header:X-Transmission-Session-Id。

不幸的是,因為一種名為「DNS重新綁定」 的攻擊,這樣的設計並不能起作用。任何網站可以簡單地創建一個他們授權通信的DNS,然後將其解析為本地主機。

攻擊者利用這個漏洞(CVE-2018-5702),創建一個他們授權通信的DNS,然後將其解析為易受攻擊的計算機的本地主機名。以下是攻擊的工作原理:

  1. 用戶訪問attacker.com,其中包含一個<iframe>標籤中攻擊者控制的子域。
  2. 攻擊者配置他們的DNS伺服器,以非常低的TTL(Time To Live)交替響應127.0.0.1和123.123.123.123(攻擊者控制的地址)。
  3. 當瀏覽器解析為123.123.123.123時,它會提供等待DNS entry過期的HTML網頁,或者通過查找來強制高速緩存終止,那麼它有權讀取和設置headers。

我通過一個域名用來測試DNS重新綁定:rbndr.us,你可以使用下面的鏈接來生成主機名。

rbndr.us dns rebinding servicelock.cmpxchg8b.com

在這裡,我想要交替切換使用127.0.0.1和199.241.29.227,所以我使用了7f000001.c7f11de3.rbndr.us

$ host 7f000001.c7f11de3.rbndr.us

7f000001.c7f11de3.rbndr.us has address 127.0.0.1

$ host 7f000001.c7f11de3.rbndr.us

7f000001.c7f11de3.rbndr.us has address 199.241.29.227

$ host 7f000001.c7f11de3.rbndr.us

7f000001.c7f11de3.rbndr.us has address 127.0.0.1

在這裡你可以看到,我想要的兩個地址將以非常低的TTL進行隨機解析(請注意,因為緩存的原因,可能需要一段時間才能切換)。

我只用等待緩存的響應時間過期,然後將POST請求發送到伺服器就可以了。

開發很簡單,你可以設置script-torrent-done-enabled和運行任何命令,或設置download-dir到/home/user/,然後上傳種子.bashrc。

這是我的demo:

lock.cmpxchg8b.com/Asoq

這個Pull Request(請求代碼合併)通過要求白名單主機發送一個不安全的請求來緩解這種攻擊。

攻擊截圖:

在攻擊開始之前,下載目錄設置正確:

界面:

運行:

攻擊成功:

結果是:

看看POC嗎?

可在微信公眾號「行長疊報」後台輸入:好久不見,讓POC更有溫度。

更多精彩請關注「行長疊報」:

佛系工具:如果我應該被知道,那就會被知道mp.weixin.qq.com圖標QQ圖片未加密,可被黑客替換成支付寶付款碼!mp.weixin.qq.com圖標揭秘馬化騰看沒看你的微信聊天!內附解決方案mp.weixin.qq.com圖標10種訪問被屏蔽網站的方法mp.weixin.qq.com圖標又學會了一種黑別人電腦的方法--如何在登錄界面獲取shellmp.weixin.qq.com圖標

*IDEA值得分享 | 轉載註明出處

weixin.qq.com/r/00jcxCr (二維碼自動識別)


推薦閱讀:

「FLAG」 等公司在美國的內部級別和薪資待遇是什麼樣的?
工信部規定移動終端出廠將不得帶有Google標識和應用是真的么?如果是真的,會是出於什麼樣的考慮?
據說李開復在谷歌的時候谷歌有大量用戶流失,是真的嗎?李開復對谷歌產生過什麼負面的影響嗎?
如何評價mix2、iphone x、note8手感好?

TAG:信息安全 | 谷歌Google | BT下载BitTorrent |