像我這種人,或許是真的累積了一些經驗,也或許是運氣好,我發現,有時候直覺還真的蠻準的。
昨天有個客戶,因為有效能的問題,大批人馬被抓去開會,我則是臨時被抓去的,出發前都還搞不清楚要去做什麼。到了那裡,聽了一下所有人對問題的描述,我大概有抓到頭緒了。只不過,因為我只是小小配角,也不好隨便發言,所以只抓了一個適當的時機,提出一個我想問的小問題。得到的回答,聽得出漏洞,但我也不好趕盡殺絕,畢竟我也寫過程式,我想他們應該聽得出我實際想要講的東西才對。沒想到,事後我才知道,我提出的那個問題,其實前一週原廠工程師進行分析的時候,也有提出類似的建議。
(( 其實聽到這個心裡還蠻得意的呢,我事先並不知道已經有找原廠提過建議了,我只是憑直覺看到我有疑問的部份而已... ))
當天還有一個狀況,是 database 裡面多了三個莫名其妙的 table,沒有人承認是他建的。看了一下 table 的內容,是硬碟的 C槽下的檔案內容。這很像 sql injection 啊~~ 我講得很小聲,但客戶找來的程式開發廠商還是聽到了,他們也當場回應說先前就有遇到過這問題,程式已經改過了,現在已經都改好了,所以不會是這個問題。不過,我心裡還是充滿疑惑就是了。
回到公司後,針對那三個 table,我們有同事一口咬定一定是那個廠商自己建了但是忘記了,或者是那個廠商裝了什麼軟體,然後是軟體去建的。但是,我總還是覺得很像 sql injection啊。後來我還連到客戶的網站上去,隨便找了幾個可以輸入資料的地方 try try 看,原本還蠻希望我可以試出什麼來,這樣就有證據了,可是試不出來,於是放棄,想說明天有空再來試好了。
第二天進公司,就聽說有幾個同事整晚待在客戶那,帶著資安防護廠商的顧問,在客戶那裡查問題查了整晚。其中一個同事早上進公司後,我問了一下狀況,沒想到,的的確確就是 sql injection 啊!!! 而且,問題就是出在那三個怪 table 啊!!! 他們最後找到的有問題的那支程式,剛好是我前一天沒玩到的。
沒想到,沒想到。這證明了我的直覺還是蠻準確的,如果我能依據我的直覺繼續研究下去,說不定更早就能發現問題。只不過我累了,想回家了,所以就收拾東西下班了。:p
有時候真的要對自己有信心才對啊~~~ 只不過,如果讓自己的直覺能夠在最短的時間內變成是有說服力的東西,這應該是我還有待加強的地方啊。
--------------------------------------------------------------------------------------------
附註說明:
sql injection 是一種利用網頁程式上的漏洞所進行的駭客攻擊行為。有些網頁若是寫得不夠完善,容易讓人經由正常的管道來進行一些動作,像是查詢一些機密資料,甚至是修改資料、刪除資料,嚴重的話,如果真的該限制的都沒限制,還可能可以進行一些破壞性的指令,像是 format 之類的。google 隨便查一下,可以查到很多相關的資訊。
寫過程式的人應該都知道,丟到後端的 sql statement 一般來講都是用字串組起來的。sql injection 其實就是鑽程式的漏洞,這些被輸入的字串若沒有被判斷輸入的正確性,則很容易被人填入一些奇奇怪怪的東西,來取得一些他不該取得的資訊。當然,database 端的權限設定和控管也很重要,適當的權限控管也能夠讓系統在這種型態的攻擊下,可以讓傷害減到最小。不過,這已經是很技術面的東西了,就不在這裡多做討論囉。