城堡總是從內部攻破的。再強大的系統,也得通過人來控制。如果將入侵直接從人這個環節發起,那麼再堅固的防線,也都成為擺設。
下面分享乙個例子,利用應用倉庫,滲透到開發人員的系統中。
他們大致原理都差不多。今天講解的是 nodejs 應用倉庫 —— npm 的安全試探。
如果 nodejs 只能單機執行,那就和 wscript 差不多了。好在 npm 平台的出現,讓整個社群互動起來。
最容易想到的,就是 npm 賬號被盜。一旦密碼被洩露,攻擊者就可以發布專案的新版本。正常使用者一旦更新,就安裝上了惡意指令碼程式。
不過,要獲取平台賬號談何容易。而且活躍度高的專案被篡改,很快就會被發現。
改人家的東西肯定不靠譜,那就只能用自己的。但自己憑空建立的專案是毫無人氣的,因此得設法引誘部分使用者過來。
攻擊者可以取乙個和活躍專案差不多的名字。例如人氣很高的 uglify-js,可以山寨乙個叫 uglifyjs 的李鬼。一旦使用者拼錯了單詞,就安裝上了冒牌的專案。
為了不讓使用者發現,可以直接轉殖原版專案,讓使用者能和正常版本完全一樣的使用,很難發現其中的破綻。然後在某些隱蔽的模組裡做些手腳,一旦使用者執行了指令碼,其中的惡魔就釋放出來了!
相比傳統的惡意程式,nodejs 這種興起不久、並且高度靈活的語言,防禦程式會少的多。
如果使用者發現裝錯了專案,還沒執行就解除安裝了,是否就無法入侵了?
事實上,npm 提供了無比強大的功能,甚至可以在安裝時就能執行額外的命令。
在scripts
欄位裡,可以定義各個階段的命令擴充套件。
例如postinstall
,即可在倉庫包安裝完成後執行。
這樣,只要使用者敲入 npm install *** 時手一抖,系統就可能被入侵了。
這聽起來似乎有些天方夜譚。不過經測試,乙個活躍專案的山寨版,每天也有幾十到上百的安裝量(誤裝量~)。雖然數量很少,還不到原版的乙個零頭,但都是潛在的高質量使用者。
其中大多都是開發人員,一旦系統被控制,即可滲透到企業內網裡。
一旦開發人員的系統被控制,產生的後果遠比想象中的嚴重。除了各種資訊被洩露外,還會有更恐怖的事。
以 uglify-js 為例,如果開發人員安裝了釣魚版本,那麼會出現什麼後果?
由於它本身就是乙個類似編譯器的壓縮工具,把測試完畢的源**,轉成不可讀的黑盒程式 —— 這很有可能就是上線前的最後一步。如果這個環節被黑客操控,那麼即使已通過審核的原始碼,也難逃魔掌了。
也許,釣魚工具會在壓縮後的指令碼裡插入一段隱蔽的 xss,開發者不仔細檢視很難發現。一旦指令碼被發布,線上成千上萬的使用者就遭殃了。
攻擊者不費一兵一卒,直接從最源頭攻下這個堡壘。
當然,不僅僅可以感染 web,其他客戶端的更有可能。一些很少關注的開源庫,或者標頭檔案**,都可能是惡意**的藏身之處。
畢竟手誤的使用者是有限的。為了能擴大感染量,不排除攻擊者會主動推廣自己的釣魚專案。
當然,這種推廣不會太明顯,旁人甚至根本完全感覺不到其中正真的意圖。
除了 npm 外,其他一些無需審核的應用倉庫,都有可能出現釣魚專案的風險。
因此平時安裝時,得格外小心。忘記了名字的專案,必須查證後再安裝。
同時對於一些來路不明的專案,也謹慎嘗試。畢竟,安裝乙個專案和直接開啟乙個應用程式其實是一樣的!
nodejs 本地應用部署
作為前端的我們,在服務端部署乙個應用,也是我們應該掌握的一項技術,目前比較流行的伺服器有apache,iis等,關於這兩個伺服器的部署,這裡就不介紹了,今天想介紹的是nodejs部署我們的乙個應用。首先,這個方法是windows電腦上的,也是新學習,做一下記錄。擁有windows電腦之後,你還必須在...
docker部署nodejs應用
docker三個核心概念如下 映象 images 乙個唯讀的模板,可以理解為應用程式的執行環境,包含了程式執行所依賴的環境和基本配置。相當於上圖中的每個小箱子裡面裝的東西。倉庫 repository 乙個用於存放映象檔案的倉庫。可以看做和gitlab一樣。容器 container 乙個執行應用程式的...
Nodejs 構建web應用
本篇的內容比較多.1 首先是從基本的nodejs服務方面講述前後端統一語言在web應用中的作用 2 然後講了web中基本的知識,從請求方法到路由 從查詢字串到cookie和session以及快取 從表單資料到上傳檔案 以及安全認證。雖然不是很詳細,但總體上有個引領的效果。3 後面著重介紹了路由的概念...