Nghiên cứu một số vấn đề bảo mật ứng dụng web - Pdf 32

Trờng đại học vinh
Khoa công nghệ thông tin

Trần văn quế

Nghiên cứu một số vấn đề bảo mật ứng dụng web

đồ án tốt nghiệp đại học
kỹ s công nghệ thông tin

Vinh - 2010


Đồ án tốt nghiệp
web

Nghiên cứu một số vấn đề bảo mật ứng dụng

Lời nói đầu
Trong công cuộc đổi mới không ngừng của khoa học kỹ thuật công nghệ,
nhiều lĩnh vực đã và đang phát triển vợt bậc đặc biệt là lĩnh vực công nghệ thông
tin. Mạng máy tính đợc hình thành từ nhu cầu muốn chia sẻ tài nguyên và dùng
chung nguồn dữ liệu. Nếu không có hệ thống mạng, dữ liệu phải đợc in ra giấy
thì ngời khác mới có thể hiệu chỉnh và sử dụng đợc hoặc chỉ có thể sao chép lên
thiết bị lu trữ khác do đó tốn nhiều thời gian và công sức.
Khi ngời làm việc ở môi trờng độc lập mà nối máy tính của mình với máy
tính của nhiều ngời khác, thì ta có thể sử dụng trên các máy tính khác và cả máy
in. Mạng máy tính đợc các tổ chức sử dụng chủ yếu để chia sẻ, dùng chung tài
nguyên và cho phép giao tiếp trực tuyến bao gồm gửi và nhận thông điệp hay th
điện tử, giao dịch, thơng mại điện tử, tìm kiếm thông tin trên mạng. Chính vì
những vai trò rất quan trọng của mạng máy tính với nhu cầu của cuộc sống con

mời mà tự ý ghé thăm máy tính của bạn.
Thực vậy, Internet có những kỹ thuật tuyệt vời cho phép mọi ngời truy nhập,
khai thác, chia sẻ thông tin. Nhng nó cũng là nguy cơ chính dẫn đến thông tin
của bạn bị h hỏng hoặc phá huỷ hoàn toàn.
Theo số liệu của CERT(Computer Emegency Response Team - Đội cấp cứu
máy tính), số lợng các vụ tấn công trên Internet đợc thông báo cho tổ chức này
là ít hơn 200 vào năm 1989, khoảng 400 vào năm 1991, 1400 vào năm 1993, và
2241 vào năm 1994. Những vụ tấn công này nhằm vào tất cả các máy tính có
mặt trên Internet, các máy tính của tất cả các công ty lớn nh AT&T, IBM, các
trờng đại học, các cơ quan nhà nớc, các tổ chức quân sự, nhà băng... Một số vụ
tấn công có quy mô khổng lồ (có tới 100.000 máy tính bị tấn công). Hơn nữa,
những con số này chỉ là phần nổi của tảng băng. Một phần rất lớn các vụ tấn
công không đợc thông báo, vì nhiều lý do, trong đó có thể kể đến nỗi lo bị mất
uy tín, hoặc đơn giản những ngời quản trị hệ thống không hề hay biết những
cuộc tấn công nhằm vào hệ thống của họ.

Sinh viên thực hiện:

Trần Văn Quế

3


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng
web
CHƯƠNG 1. GIớI THIệU ứNG DụNG WEB
1. Khái niệm ứng dụng Web (Web Application)
ứng dụng Web là một ứng dụng chủ/khách sử dụng giao thức HTTP để tơng tác
với ngời dùng hay hệ thống khác.

Trong đó:
- Trình khách( hay còn gọi là trình duyệt): IE, NN..
- Trình chủ: Apache, IIS
- Hệ quản trị cơ sở dữ liệu: SQL server, My SQL, DB2, Access
2. Mô tả hoạt động của một ứng dụng web
Đầu tiên trình duyệt sẽ gửi một yêu cầu đến trình chủ web thông qua các lệnh
cơ bản GET, POST của giao thức HTTP, trình chủ lúc này có thể cho thực thi
một chơng trình đợc xây dựng từ nhiều ngôn ngữ khác nhau hoặc trình chủ yêu
cầu bộ diễn dịch thực thi các trang ASP, PHP theo yêu cầu của trình khách.
Tuỳ theo các tác vụ của chơng trình đợc cài đặt mà nó xử lý, tính toán kết nối
đến cơ sở dữ liệu, lu thông tin do trình khách gửi đếnvà từ đó trả về cho trình
khách 1 luồng dữ liệu có định dạng theo giao thức HTTP nó gồm 2 phần:
- Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao
đổi giữa trình duyệt và Webserver.
- Body là phần nội dung dữ liệu mà server gửi về client, nó có thể là một
file HTML, một hình ảnh, một đoạn phim hay một trang tài liệu.
3. Các vấn đề về bảo mật Web
Mặc dù không thể phủ nhận những cải tiến nâng cao đáng kể hiện nay, nh vấn
đề bảo mật trong ứng dụng Web vẫn không ngừng tăng lên. Nguyên nhân có thể
xuất phát từ các đoạn mã không phù hợp. Nhiều điểm yếu nghiêm trọng hay các
lỗ hổng cho phép hacker xâm nhập thẳng và truy cập vào cơ sở dữ liệu tách lấy
Sinh viên thực hiện:

Trần Văn Quế

5


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng

6


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng
web
CHƯƠNG 2. GIớI THIệU SƠ LƯợC Về CáC Kỹ THUậT TấN CÔNG
ứNG DụNG WEB
1. CáC KHáI NIệM THUậT NGữ LIÊN QUAN
1.1. Hacker
Hacker là một thuật ngữ dùng để chuyên chỉ những kẻ phá hoại các hệ thống
mạngHacker thờng là những chuyên gia về máy tính. Hacker không tạo ra các
kẽ hở cho hệ thống, nhng hacker lại là những ngời am hiểu về hệ điều hành, hệ
quản trị cơ sở dữ liệu, các ngôn ngữ lập trìnhHọ sử dụng kiến thức của mình
trong việc tìm tòi và khai thác các lỗ hổng của hệ thống mạng. Một số hacker chỉ
dừng lại ở việc phát hiện và thông báo lỗi tìm đợc cho những nhà bảo mật hay
ngời phát triển chơng trình, họ đợc xem nh là WhiteHat (Hacker nón trắng). Một
số hacker dựa vào những lỗ hổng thực hiện việc khai thác trái phép nhằm mục
đích phá hoại hay mu lợi riêng, những ngời này bị xem nh là BlackHat( Hacker
nón đen).
Vì tính chất phổ biến của thuật ngữ hacker, nên trong phần trình bày, sẽ sử
dụng hacker thay cho kẻ tấn công.
1.2. HTTP Header
HTTP Header là phần đầu (header) của thông tin mà trình khách và trình chủ
gửi cho nhau. Những thông tin trình khách gửi cho trình chủ đợc gọi là HTTP
requests (yêu cầu) còn trình chủ gửi cho trình khách là HTTP responses (trả lời).
Thông thờng, một HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham số và
giá trị. Một số tham số có thể đợc dùng trong cả header yêu cầu và header trả lời,
một số khác thì chỉ đợc dùng riêng trong từng loại. Ví dụ:
Header yêu cầu:

Content-Length: 2291
Content-Type: text/html
Set-cookie:
ASPSESSIONIDQQGGGNCC=LKLDFFKCINFLDMFHCBCBMFLJ;
Path=/
Cache-control: private
<HTML>
<BODY>

o Dòng đầu là dòng trạng thái để cho biết phiên bản HTTP đợc dùng
(HTTP/1.1), mã trạng thái (200) và trạng thái (OK).
o Tiếp theo là các tham số.
o Tiếp theo là một dòng trống để báo hiệu kết thúc header, tiếp theo là
phần thân của HTTP response.

Sinh viên thực hiện:

Trần Văn Quế

8


Đồ án tốt nghiệp
web

Nghiên cứu một số vấn đề bảo mật ứng dụng

1.3. Session
HTTP là giao thức hớng đối tợng tổng quát, phi trạng thái, nghĩa là HTTP
không lu trữ trạng thái làm việc giữa trình duyệt với trình chủ. Sự thiếu sót này

9


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng
web
Cookies thờng có các thành phần sau :
+ Tên: do ngời lập trình web site chọn
+ Domain: là tên miền từ server mà cookie đợc tạo và gửi đi
+ Đờng dẫn: thông tin về đờng dẫn ở web site mà bạn đang xem
+ Ngày hết hạn: là thời điểm mà cookie hết hiệu lực .
+ Bảo mật: Nếu giá trị này đựơc thiết lập bên trong cookie, thông tin sẽ đựơc mã
hoá trong quá trình truyền giữa server và browser.
+ Các giá trị khác: là những dữ liệu đặc trng đợc web server lu trữ để nhận dạng
về sau các giá trị này ko chứa các khoảng trắng, dấu chấm, phẩy và bị giới hạn
trong khoảng 4k.
1.5. Proxy
Proxy cung cấp cho ngời sử dụng truy xuất Internet những nghi thức đặc biệt
hoặc một tập những nghi thức thực thi trên dual_homed host hoặc bassion host.
Những chơng trình client của ngời sử dụng sẽ qua trung gian proxy server thay
thế cho server thật sự mà ngời sử dụng cần giao tiếp.
Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay
không đáp ứng, nếu yêu cầu đợc đáp ứng, proxy server sẽ kết nối với server thật
thay cho client và tiếp tục chuyển tiếp những yêu cầu từ client đến server, cũng
nh trả lời của server đến client. Vì vậy proxy server giống cầu nối trung gian
giữa server và client.
2. GIớI THIệU SƠ LƯợC CáC Kỹ THUậT TấN CÔNG
Sau đây là các khái niệm sơ lợc các kĩ thuật tấn công ứng dụng Web đã đợc
phân loại dựa trên mức độ gây tác hại đối với ứng dụng.
2.1. Kiểm soát truy cập web (Web access control)

Do ngôn ngữ phía trình duyệt (JavaScript, VBScrip ) đ ợc thực thi trên
trình duyệt nên hacker có thể sửa đổi mã nguồn để có thể vô hiệu hóa sự
kiểm tra
Tràn bộ đệm (Buffer OverFlow)
Một khối lợng dữ liệu đợc gửi cho ứng dụng vợt quá lợng dữ liệu đợc cấp
phát khiến cho ứng dụng không thực thi đợc câu lệnh dự định kế tiếp mà
thay vào đó phải thực thi một đoạn mã bất kì do hacker đa vào hệ thống.
Nghiêm trọng hơn nếu ứng dụng đợc cấu hình để thực thi với quyền root
trên hệ thống.
Mã hóa URL (URL Encoding)
Lợi dụng chuẩn mã hóa những kí tự đặc biệt trên URL mà hacker sẽ mã
hóa tự động những kí tực bất hợp lệ - những kí tự bị kiểm tra bằng ngôn
ngữ kịch bản để vợt qua vòng kiểm soát này.
Kí tự Meta (Meta-characters)

Sinh viên thực hiện:

Trần Văn Quế

11


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng
web
Sử dụng những kí tự đặc biệt hacker có thể chèn thêm vào dữ liệu gửi
những kí tự trong chuỗi câu lệnh nh <script> trong kĩ thuật XSS, trong
SQL injectionđể thực thi câu lệnh.
Chèn câu truy vấn SQL (SQL Injection)
Trong lập trình với cơ sở dữ liệu, ngời lập trình đã sai sót trong vấn đề



Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng
web
luôn là mục tiêu của hacker. Ngoài ra những lời chú thích trong mã nguồn cũng
là nguồn thông tin hữu ích cho hacker.
Hacker sử dụng trả lời HTTP từ hệ thống để xác định một tập tin hay ứng
dụng có tồn tại hay không.
Ví dụ:
.HTTP 200: Tập tin tồn tại
.HTTP 404: Tập tin không tồn tại
2.5. Từ chối dịch vụ (Denial of service DoS)
Tấn công kiểu DoS là kiểu tấn công làm cho các dịch vụ mạng bị tê liệt,
không còn khả năng đáp ứng yêu cầu nữa. Loại tấn công này ảnh hởng đến nhiều
hệ thống, rất dễ thực hiện và lại rất khỏ bảo vệ hệ thống khỏi yêu cấu tấn công
DoS.

Sinh viên thực hiện:

Trần Văn Quế

13


Đồ án tốt nghiệp
web

CHƯƠNG 3.


Nghiên cứu một số vấn đề bảo mật ứng dụng
web
1.1.2 Một số biện pháp khắc phục
Để chống lại kiểu thay đổi nội dung chuỗi URL, ứng dụng có thể áp dụng
biện pháp sau:
ứng dụng sử dụng cơ chế bảng băm (hash table). Sau khi ngời dùng chứng
thực thành công với một username, ứng dụng sẽ sinh ra một khóa tơng
ứng. Khóa này sẽ lu trên server cùng với biến username trong đối tợng
bảng băm. Mỗi khi nguời dùng kết nối đến ứng dụng, khóa và username
này sẽ đợc gửi đi và đợc so sánh với khóa username trong bảng băm. Nếu
tơng ứng với bản ghi trong dữ liệu thì hợp lệ. Còn nếu không thì server
biết rằng ngời dùng đã thay đổi URL.
Ngoài ra, với những thông tin có giá trị, cần mã hóa thông tin này trớc khi
cho hiển thị trên trình duyệt để tránh hacker có thể sửa đổi tùy ý.
1.2. Thao tác trên biến ẩn form
1.2.1 Khái niệm
Thông tin có thể đợc chuyển đổi thông qua một biến ẩn form, gọi là Hidden
Form Field. Biến bẩn form không hiển thị trên màn hình trình duyệt nhng ngời
dùng có thể tìm thấy nội dung của nó trong view source, vì thế đây là một
điểm yếu để hacker lợi dụng bằng cách lu nội dung trang web xuống trình duyệt,
thay đổi nội dung trang và gửi đến trình chủ.
Ví dụ: Form gốc có nội dung nh sau:

<form action= method=POST>
<input type=hiden name=giaca value=99.99>
</form>
Nếu không có sự thay đổi nào thì yêu cầu đến trình chủ có nội dung:
POST /cuahang.p1 HTTP/1.1
.......
Giaca=99.99

Ghép tên và giá trị của biến ẩn thành một chuỗi đơn. Sử dụng thuật toán
mã hóa MD5 hoặc một kiểu hash một chiều khác để tổng hợp chuỗi đó và
lu nó vào một hidden field gọi là Chuỗi mẫu.
Khi giá trị trong form đợc gửi đi, các thao tác nh trên đợc thực hiện lại với
cùng một khóa mà ta định trớc. Sau đó đem so sánh với Chuỗi mẫu, nếu
chũng không khớp nhau thì chứng tỏ giá trị trong biểu mẫu đã bị thay đổi.
Dùng một sessionID để tham chiếu đến thông tin đợc lu trữ trên cơ sở dữ
liệu.
2. CHèN Mã LệNH THựC THI TRÊN TRìNH DUYệT NạN NHÂN
(CROSS-SITE SCRIPTING)
2.1. Cross-Site Scripting (XSS)

Sinh viên thực hiện:

Trần Văn Quế

16


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng
web
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. 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
1. XSS là gì ?
Cross-Site Scripting hay còn đợc gọi tắt là XSS (thay vì gọi tắt là CSS để
tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là một kĩ thuật tấn

Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng
web
Nhng nếu nh các kĩ thuật tấn công khác có thể làm thay đổi đợ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
nhng đó 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 ..
2.2. Tấn công XSS bằng flash
Ngoài những cách đa một đoạn mã nguy hiểm thì hacker còn có thể lợi dụng
những tập tin flash để đánh cắp thông tin.
Macromedia Flash cho phép lập trình bằng một ngôn ngữ kịch bản đã đợc
xây dựng sẵn trong Flash là ActionScript. ActionScript có cú pháp đơn giản và tơng tự nh JavaScript, C hay PERL. Ví dụ hàm getURL() dùng để gọi một trang
web khác, tham số thờng là một URL chẳng hạn nh .
getURL()
Tuy nhiên có thể thay thể URL bằng JavaScript:
getURL(javascript:alert(document.cookie))
Ví dụ trên sẽ làm xuất hiện bảng thông báo cha cookie của trang web chứa tập
tin flash đó. Nh vậy là trang web đó đã bị tấn công, bằng cách chèn một đoạn
JavaScript vào ứng dụng web thông qua tập tin flash. Một ví dụ khác rõ hơn về
cách tấn công này là:
Đây là đoạn lệnh trong tập tin flash và sẽ đợc thi hành khi tập tin flash đợc
đọc:

o Tạo ra danh sách những thẻ HTML đợc phép sử dụng.
o Xóa bỏ thẻ <script>
o Lọc ra bất kì một đoạn mà JavaScript/Java/VBScript/ActiveX/Flash
Related nào.
o Lọc dấu nháy đơn hay kép
o Lọc kí tự Null ( vì khả năng thêm một đoạn mã bất kì sau kí tự Null
khiến cho ứng dụng dù đã lọc bỏ thẻ <script> vẫn không nhận ra do
ứng dụng nghĩ rằng chuỗi đã kết thúc từ kí tự Null này).
o Xóa những kĩ tự >,

Char
Char
Int

Kích thớc
4
40
40
4

Ngôn ngữ lập trình sử dụng để minh họa là ASP với cơ sở dữ liệu là SQL
3.2.1 Kĩ thuật tấn công vợt qua kiểm tra đăng nhập
Sinh viên thực hiện:

Trần Văn Quế

20


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng
web
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.
Xét một ví dụ điển hình, thông thờng để cho phép ngời dùng truy cập 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 theo.
Ví dụ: Trang ASP xử lí dữ liệu ngời dùng đăng nhập có đoạn mã xử lí dữ liệu nh
sau:

web
if session("login")="true" then response.Redirect "admin.asp" end if
%>
Đoạn mã trên kiểm tra chuỗi nhập Username và Password, nếu tồn tại trong
bảng User thì cho phép đăng nhập và ngợc lại. 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, chỗ sơ hở nằm ở
chỗ dữ liệu nhập vào là từ ngời 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 để thực
hiện.
Ví dụ 1:
Giá trị nhập vào là:
Username: or=
Password : or=
Lúc này câu lệnh SQL nh sau:
SELECT * FROM Taikhoan WHERE Username='OR=' AND
Password='OR'= ;
Câu truy vấn trên là luôn luôn đúng vi luôn bằng và sẽ trả về tất cả các bản
ghi của Taikhoan 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ệ.
Kết hợp với kí tự đặc biệt của SQL:
Kí tự ;: đánh dấu kết thúc 1 câu truy vấn
Kí tự --: ẩn chuỗi kí tự phía sau nó trên cùng 1 dòng.
Ví dụ 2:
Username: ; drop table Taikhoan-Sinh viên thực hiện:

Trần Văn Quế

22

Trần Văn Quế

23


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng
web
SQL="SELECT * FROM taikhoan WHERE username='"+username+"' AND
password='"+password+"'"
Đầu tiên, để biết tên bảng và tên trờng mà câu truy vấn sử dụng, sử dụng câu
điều kiện having, nh ví dụ sau:
Giá trị nhập vào:
Username : having 1=1-Lỗi phát sinh:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
Column 'taikhoan.Id' is invalid in the select list because it is not contained in
an aggregate function and there is no GROUP BY clause.
Nhờ vào lỗi phát sinh này mà biết đợc bảng sử dụng trong câu truy vấn là
Taikhoan và trong bảng tồn tại một trờng tên là Id
Sau đó sử dụng GROUP BY:
Username :group by User.Id having 1=1-Lỗi phát sinh:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
Column 'taikhoan.username' is invalid in the select list because it is not
contained in either an aggregate function or the GROUP BY clause.
Nh vậy username là một trờng đợc sử dụng trong bảng taikhoan và tham gia vào
câu truy vấn.
Tiếp tục sử dụng GROUP BY:
Sinh viên thực hiện:

Trần Văn Quế

25



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