LV. 21
GP 170

【場外小教室】告訴你駭客如何入侵網站偷走你ㄉ個資

樓主 摘喵喵 kanade86514
746 -

駭客為何要入侵網站?


  現在的網際網路有很大一部分是由網頁(網站)構成的,譬如我們現在所使用的巴哈就是一個網站,一般電腦作業系統預設安裝完都會提供一個預設網頁瀏覽器,使用者只要用滑鼠點開網址文字或是鍵盤打幾個字輸入網址,馬上就能使用網站豐富的功能,像是 Facebook 交友傳訊息、在巴哈打嘴砲、線上修圖工具一秒產星爆圖,不用額外安裝任何東西或是進行複雜的操作步驟。

  雖然網站可以提供非常豐富的功能給使用者,但也非常容易搞砸所有事情,越容易搞砸事情的地方就更容易吸引到駭客的注意,理所當然網站也就成了現代駭客主要攻擊的目標之一。

  古早以前駭客入侵大多是為了好玩、證明自己的實力,現在則是為了各種利益、政治利益、金錢利益。現代社會高度資訊化,金錢交易都在線上完成,交易過程中勢必會牽涉到信用卡卡號的資訊,所以以前常見的駭客入侵目的之一就是為了竊取信用卡卡號進行盜刷,近幾年來又多了去中心化數位貨幣的發展,勒索病毒、埋入挖礦惡意程式也成了駭客入侵的主要目的之一。而以對岸網軍來說,獲取政府內部資料、台灣人民的個資可能就會是他們入侵的主要目的之一。


駭客如何獲取個資?


  個資的保存多半儲存在所謂的資料庫之中,而在眾多駭客技術中,有一種技術相對容易入門且能直接接觸到資料庫中的資料,其技術名就是大家時常耳聞的 SQL Injection。SQL 是一種語言,用來與資料庫溝通,告訴資料庫我們想要獲取的資料是哪些。

  這邊以一個簡單網頁作範例,輸入查詢的關鍵字,程式會到資料庫中查詢含此關鍵字的使用者名稱。譬如我查詢「cho」找到「chocolatebox」。


  讓我們嘗試輸入單引號「'」的字元試試看,會發現出現一堆奇怪的訊息,這是因為「'」字元在 SQL 中具有特殊意義,用兩個單引號包夾起來的內容代表純粹的文字,而現在因為程式設計上有缺陷,導致我們使用者所輸入的「'」成了 SQL 語言的一部份。


  配合經驗觀察一陣子很容易能推測出這個網頁上執行的 SQL 語言大概長這樣子:
SELECT username FROM user WHERE username LIKE 'cho';

  所以我們可以偽造 SQL 語言片段迫使程式幫我們列出所有使用者。


  甚至若資料庫含有一些其他隱私資料,譬如:密碼,我們也能利用 SQL 的聯集查詢輕易取出,如下圖可以得知「chocolatebox」密碼為「xiao0a」、「faple」密碼為「100kg」。


  不過這種漏洞若想取得大量資料,勢必要對網頁伺服器發出大量請求,將會留下大量的記錄痕跡,對有惡意的駭客而言具有相當大的風險會被發現。


駭客樂於直接控制伺服器


  比起前面那種容易留下明顯痕跡的手段,駭客更期望能找到完整控制伺服器的方法,這樣就可以掩去自己的足跡,通常我們會統稱這類方法為取得 shell 或 getshell,因為 shell 代表的是一些提供使用者控制作業系統方法的服務軟體。

  其中一種很簡單、常見的方式就是「任意檔案上傳漏洞」,很多網站都會提供使用者上傳文件、大頭貼圖片,尤其是在論壇網站上幾乎是必備功能,假如工程師沒有妥善檢查上傳檔案的檔名,駭客可以上傳一些特殊副檔名的檔案,例如:「.php」、「.jsp」,其中像 php 副檔名對伺服器而言代表著這個檔案的內容是可以被執行的 PHP 程式碼,當駭客在檔案內容放入一些惡意的 PHP 程式碼,伺服器會毫不懷疑地執行它,當然也是可以透過 PHP 執行系統指令,駭客就能控制整個伺服器主機。

  讓我們看看下面一個範例,該網頁提供一個上傳大頭貼的功能,我們先正常上傳一個檔名為「doge.png」的圖片。


  網頁回覆我們一個連結,點開連結能看到圖片,表示圖片已經順利儲存在對方伺服器上了。


  仔細看可以發現連結上的檔案名稱是我們提供的「doge.png」,當一個駭客看到這時,就會忍不住想嘗試是否能上傳副檔名為 php 的檔案。

  首先準備一個「hacker.php」,檔案內容如下圖,是一段可以執行系統指令的 PHP 程式碼。


  將這個「hacker.php」上傳,發現伺服器正常回覆一個連結,而且是我們剛剛準備的 hacker.php。


  透過這個惡意的 PHP 程式,駭客就能在伺服器上執行任何指令,如:dir。


  除了上傳漏洞以外,還有一種漏洞也是眾多駭客的最愛,名為「Code Injection」。Code Injection 的成因多半是因為工程師為了靈活性等因素,使用了俗稱 eval 的函數,該函數的用途是將字串作為程式碼解析並執行,提供了非常便利能動態產生程式碼的方法,但當傳入 eval 的字串參數是使用者可以控制並且沒有任何過濾時,就可以被駭客用來執行惡意程式碼。

  再來一個範例網頁,輸入名字,網頁會印出訊息跟你打聲招呼。


  試試看在 name 參數上輸入雙引號「"」字元,會發現程式又出現奇怪的訊息,其中有個關鍵字「eval()'d code」,這表示該網頁是使用 eval 函數產生程式碼,因為我們輸入的雙引號字元混淆了程式碼的語法,導致語法錯誤從而出現下圖中的錯誤訊息。


  而 eval 是把字串當 PHP 程式碼執行,想當然能利用它執行系統指令,如下圖執行了 dir。


  除了上述方法外,駭客還有千百種方法可以入侵,即便網站足夠單純到沒漏洞,還是有實體入侵、社交工程等手段,尤其社交工程特別難防禦,其攻擊的目標是人,軟體漏洞可以修復,但人的弱點不可能被修補完,因為人心太過複雜。


如何阻止駭客偷走我的個資?


  坦白地說,基本上想要阻止是不可能,我們每個人生活上使用的網站服務如此之多,每個網站背後各有各自對應的企業,每間企業除了該網站以外也會提供其他許許多多的服務,若將這些關係連結起來後會發現是一張相當大的網子,而對駭客而言,他只要找到一個破洞就可以取得你的資料,所以憑你自身一個人無法阻止駭客。

  身處在高度資訊化社會的我們,只能改變自己的觀念,以往的觀念是只要純粹保護好自己的個資即可,現在則是「在個資一定會外洩的情況下,我們如何保護自己」。比方說大家可能偶爾會接到詐騙電話,尤其是一些時常進行網購的朋友,這些詐騙集團其實可能對你的個人資訊瞭若指掌,不論是你的生日還是住址,至於這些個資的來源,我想大家也是心照不宣,所以我們需要培養的觀念是,假定對方和政府一樣 100% 握有我的資料,該如何判斷出對方是詐騙集團、如何避免自己被對方博得信任遭到欺騙。當然這個觀念並非是要你捨棄保護個資的觀念,而是要在這基礎上去替自己拓展新觀念,才能盡可能地保護到自己。


※以上內容僅作為知識交流用途,請各位遵守各網站使用規範,勿違反妨害電腦使用罪以免惹禍上身。
746
-
未登入的勇者,要加入討論嗎?
板務人員:

7518 筆精華,前天 更新
一個月內新增 17
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】