天天看點

【網站安全】網站被挂木馬與777權限的奧妙

<b>一、當使用者通路一個網頁</b>

  這個時候,你的伺服器内部發生了什麼,請參考下圖。其中任何一個環節有漏洞,都會出問題。注意,本圖檔隻代表個人了解,并非真實流程。

【網站安全】網站被挂木馬與777權限的奧妙

<b>二、檔案的權限隻有三種</b>

  查詢一下linux的标準文檔,就知道。檔案分為,讀、寫、執行三種權限。

r read 可以打開并讀取内容。

w write 可以修改内容,增加内容,甚至删除内容。

x execute 可以當做可執行程式,或者shell腳本執行。

特别注意,對于目錄來說,x表示可以浏覽他裡頭都有什麼檔案。

<b>三、檔案權限針對的是三類使用者。</b>

  owner 檔案所有者,或者說是建立了這個檔案的人。

group 檔案所在的組,一個組可以包含很多個owner,但不一定包含目前檔案這個owner。

other 其他人,也就是除了目前這個owner,除了目前這個group外的所有人。

<b>四、實際是什麼樣子的。</b>

  linux中所有檔案都需要記錄這3種權限和3種人群。3x3=9,再加上一個标記表示“這是不是一個目錄”,一共10個标記。如圖所示,

【網站安全】網站被挂木馬與777權限的奧妙

這12行表示12個檔案,都是一個叫sin的人建立都,而且sin的分組是staff。

<b>五、詳細解釋一下。</b>

  我們從前到後逐一說一遍。寫着子母(drwx)的,表示有這個權限。寫着橫線(-)的,表示沒有這個權限。

drwxrwxrwx

1: 這是不是一個檔案夾。d表示是,-表示否。(如果寫的是l,可以了解為他是快捷方式)

2:owner是否可以讀取這個檔案的内容。r表示是,-表示否。

3:owner是否可以改寫這個檔案的内容。w表示是,-表示否。

4: owner是否可以執行這個檔案。x表示是,-表示否

5:group是否可以讀取這個檔案的内容。r表示是,-表示否。

6: group是否可以改寫這個檔案的内容。w表示是,-表示否。

7: group是否可以執行這個檔案。x表示是,-表示否。

8: other是否可以讀取這個檔案的内容。r表示是,-表示否。

9:other是否可以改寫這個檔案的内容。w表示是,-表示否。

10:other是否可以執行這個檔案。x表示是,-表示否。

<b>六、怎麼用數字友善的表示檔案權限。</b>

  因為10個位置中,第1個不是權限,我們就隻看後邊9個位置。

如何把這個權限轉化成數字呢?rwxrw-r--

owner group other

符号 r w x r w - r - -

二進制 1 1 1 1 1 0 1 0 0

相加之和 7 6 4

111 = 2^2 + 2^1 + 2^0 = 7

110 = 2^2 + 2^1 =6

100 = 2^2 = 4

是以rwxrw-r--就變成了:764

<b>七、常用的權限數字</b>

  常用更改檔案權限的指令,xxx代表檔案名

600 隻有owner有讀和寫的權限

644 owner有讀和寫的權限,group隻有讀的權限

700 隻有ower有讀和寫以及執行的權限

666 owner,group,other都有讀和寫的權限

777 owner,group,other都有讀和寫以及執行的權限

<b>八、終于講到正題了</b>

  講了這麼說,你應該明白777的意思就是,任何人可以幹任何事。那等于什麼權限都沒設啊!linux再安全也架不住自己人刻意制造漏洞吧。這完全等同于把鋼鐵俠屁股上的材料換成了窗戶紙。

linux的安全原則是最小權限原則,能不給的權限就不要給。而很多懶惰或者新手的程式員往往為了省事使用最大權限。

有的人問,網站需要上傳圖檔,需要w很正常,否則圖檔放哪呢。那我想問,你家的房子,是不是可以随便挪動?冰箱能挪動,承重牆能挪的動嗎?請注意,客廳,卧室,廁所,廚房的空間都是rw的,但是承重牆隻能是r的,不能随便w。

同理,網站核心代碼是不可寫的,隻能可讀。

學會了權限的基本支援,怎麼運用呢?(隻能說大概意思,具體應該怎麼部署,還是找專業都運維同學問吧,我好久沒碰web了。)

假設我把核心代碼放在/var/www/,我把圖檔放在/var/pic/。前者目錄rw,裡頭所有檔案r。後者本身w,裡頭所有檔案r

webserver隻能解析/var/www/裡的檔案,不能執行/var/pic/裡的。這樣不至于讓人家把木馬程式放到/var/pic/裡執行。

由于每個網站使用的語言都不一樣,無法做一個統一說明,隻能舉幾個例子。假如你的網站使用php語言,植入的木馬基本也都是php語言寫的指令。

可以分别試試這兩個指令,因為php木馬常用eval和create_function來做壞事(說/var/www/路徑不存在的同學,面壁思過10分鐘)。

grep "eval(" /var/www/* -r

grep "create_function(" /var/www/* -r 

請注意,并不是沒有用777權限,就萬無一失了,web的漏洞多如牛毛,無孔不入,本文章隻是抛磚引玉。