Bài giảng Tấn Công Trang Web
Trong chương này chúng ta đã thảo luận về những mối đe dọa hàng đầu đống với sự an
toàn của ứng dụng web qua thống kê của tài liệu CEH hay trong danh sách 10 mối nguy
hiểm hàng đầu của OWASP. Với những mối đe dọa hay dạng tấn công nguy hiểm cần có
những cách thức khắc phục riêng, nhưng trước tiên chúng ta cần phải tiến hành hardening
cho các hệ thống máy chủ để kiện toàn bảo mật ứng dụng web.
Về các kỹ thuật bẽ khóa mật khẩu các bạn cần phân biệt hai tình huống chính là bẻ khóa
dựa trên từ điển khác với bẻ khóa quét cạn như thế nào. Và để phòng chống bị bẻ khóa
mật khẩu thì các quản trị viên cần áp dụng các chính sách mật khẩu mạnh với độ dài mật
khẩu ít nhất là 8 kí tự, có sự kết hợp giữa chữ hoa, chữ thường, số kèm các kí tự đặc biệt.
Ngoài ra, phải bật các chế độ audit, ghi nhật kí thích hợp để có thể dò tìm những tình
huống bị tấn công. Đặc biệt, hãy sao lưu cẩn thận để phòng khi có rũi ro xảy ra thì vẫn có
thể phục hồi dữ liệu, đưa hệ thống vào hoạt động nhanh chóng.
12 trang |
Chia sẻ: huongthu9 | Lượt xem: 449 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Tấn Công Trang Web, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1
Module 13
Tấn Công Trang Web
Những Nội Dung Chính Trong Chương Này
GUI Web Hacking
Tấn Công Dựa Trên URL
Những Điểm Yếu Thông Dụng Của Ứng Dụng Web
Các Công Cụ Tấn Công Ứng Dụng Web
Google Hacking
Phương Pháp Tăng Cường An Ninh Cho Trang Web
Các Kỹ Thuật Bẻ Khóa Mật Khẩu Của Trang Web
2
Web application hay ứng dụng web là các chương trình chạy trên các web server như
và được phân loại theo các chức năng của ứng dụng như Forum là
trang web về diễn đàn, chia sẽ thông tin, CMS / Blog là những web site của cấp nội dung,
thông tin hay các trang về mạng xã hội, những ứng dụng quản lý công việc, quản lý
khách hàng hay kinh doanh trực tuyến.
Hacker đặc biệt quan tâm đến các trang web của những tổ chức lớn hay các site của cơ
quan nhà nước như những tên miền .gov.vn ở Việt Nam. Ngoài ra, các hacker ngày nay
bên cạnh ý thích trình diễn, khoe khoang còn hành động vì mục tiêu kinh tế nên họ hay
đưa các trang thương mại điện tử vào danh sách ưu tiên của họ, vì ở đó có những thông
tin quan trọng như thẻ tìn dụng của khách hàng, các tài khoản ngân hàng trực tuyến
Sau khi tấn công, các hacker hay khoe chiến tích trên trang zone-h tại địa chỉ
, đây được xem như là một bảng phong thần của các trang web
như hình minh họa sau là danh sách các trang web có tên miền .vn đã bị tấn công và có
khả năng chưa được vá hay nhận biết.
Hình 13.1 – Các trang web Việt Nam bị tấn công và công bố trên zone-h.org
Đa số các ứng dụng web ngày nay hoạt động theo mô hình client / server với các trình
duyệt web như Firefox, IE, Chrome là web client còn những máy chủ web là phía server
như Apache, IIS, TomCat .Những công nghệ phổ biến để xây dựng các web site hiện nay
là ASP, PHP, JavaScript Mỗi kỹ thuật có những điểm mạnh và yếu riêng cho nên khi
tấn công hacker điều phải nghiên cứu cẩn thận để xác định chính xác các hệ điều hành,
máy chủ web, công nghệ triển khai web site để đưa ra phương án tấn công hiệu quả.
Các hình thức tấn công ứng dụng web thông dụng mà chúng ta cần biết đó là :
3
• Thao tác trực tiếp trên ứng dụng thông qua giao diện web trực quan (GUI) của nó gọi là
GUI Web Hacking.
• Tiến hành khai thác với Uniform Resource Identify hay còn gọi là URL (URL
Hacking)
• Khai thác các thành phần của HTTP mà không có trong URL
GUI Web Hacking
Là việc thao tác trực tiếp trên giao diện web application hay sử dụng các công cụ audit
website như Havji, WebAcunetix mà trong các bài học sau chúng ta sẽ trình bày. Các
bạn có thể xem hình ảnh minh họa một khái thác để tìm kiếm lỗi SQL Injection trên trang
web mẫu của FoundStone như hình sau
Hình 13.2 – Gui Web Hacking
Trên hình minh họa các attacker nhập trực tiếp giá trị ‘OR 1=1— nhằm vượt qua cơ chế
kiểm soát của ứng dụng nếu việc kiểm tra tính hợp lệ của các giá trị INPUT không được
thực hiện đây đủ. Đây là một trong những lỗi thông dụng nhất mà các website thường
mắc phải và được attacker rất quan tâm
Tấn Công Dựa Trên URL
Các HTTP method là những hành động được tiến hành tại ứng dụng web và web client.
are the type of action performed on the target resource. Trong HTTP RFC có định nghĩa
các hành động này và ứng dụng WEBDAV trên nên máy chủ IIS của Windows có bổ
sung một số phương pháp khác nhưng nhìn chung các ứng dụng web sử dụng 2 hàm sau :
GET và POST. GET dùng để yêu cầu thông tin, còn POST để gởi thông tin và cả POST
4
và GET đề có thể gởi thông tin đến server với một điểm khác biệt quan trọng giữa chúng
là GET để data trong URL trong khi đó POST đặt dữ liệu (data) trong phần body (thân)
của request và không hiển thị trong URL.: Vì vậy POST được dùng để submit dữ liệu đến
web application như khi chúng ta cung cấp thông tin tên, địa chỉ khi đăng kí mua hàng
trực tuyến là đang sử dụng hàm POST. Tuy vậy, việc không hiểm thị thông tin của
POST không hẳn là bảo vệ dữ liệu tốt hơn GET, đây cũng là một trong những điểm
thường gây nhầm lẫn đối với người dùng, vì với các hacker thì việc tìm kiếm thông tin
được che dấu bởi POST không phải là vấn đế qua khó khăn.
Hình 13.3 – Minh họa tấn công dựa trên URL
HTTP header thường được dùng để lưu trữ các thông tin mở rộng như các giáo thức vận
chuyển hay những yếu tố bảo mật liên quan gồm có :
• Authorization xác định có hay không những cơ chế bảo mật kèm thoe yêu cầu như là
Basic authentication, Certificate
• Cache-control xác định có lưu cache các yêu cầu này trên một máy chủ trung gian hay
không.
• Referer Liệt kê source URI .
• Cookies được dùng đê lưu trữ thẻ bài (token) trong quá trình xác thực dựa trên phiên
làm việc của client.
5
Sau đây là một ví dụ về các hàm được sử dụng bởi công cụ netcat kết nối đến máy chủ
www.test.com server trên TCP port 80 (port chuẩn cho giao thức HTTP;
HTTPS là TCP 443), và yêu cầu của kết nối này là lấy về tập tin /test.html. Đường dẫn
đầy đủ của yêu cầu này là
www.test.foo [10.124.72.30] 80 (http) open
GET /test.html HTTP/1.0
HTTP/1.1 200 OK
Date: Mon, 04 Feb 2002 01:33:20 GMT
Server: Apache/1.3.22 (Unix)
Connection: close
Content-Type: text/html
TEST.FOOetc.
Trong ví dụ này các bạn có thể thấy hàm GET trong yêu cầu tư client được sử dụng bởi
netcat và đáp ứng trả về trong phần header của máy chủ là Server: Apache/1.3.22 (Unix) ,
còn phần dữ liệu (response body data) nằm trong khung (BODY)
TEST.FOO.
Tuy nhiên dù cho hacker sử dụng những phương pháp tân công nào thì như đã trình bày
mục tiêu chính của họ vẫn là những thông tin có trong các trang web này, có thể đó là
những công văn hay tài liệu quan trọng, hoặc là thông tin về khách hàng của trang web
như danh sách email, số thẻ tín dụng. Và để đạt được mục tiêu hacker cần tiến hành quy
trình tấn công theo đúng trình tự như sau :
- Scanning : Quét lỗi trang web, tìm kiếm các thông tin hữu ích về máy chủ.
- Information Gathering : Tập trung các thông tin chính,
- Test : Thử nghiệm một số phương án.
- Planning Attack : Hoạch định phương án tấn công như dùng proxy nào, sư dụng
công cụ gì để tấn công.
- Luanching Attack : Khởi động cuộc tấn công
6
Hình 13.4 - Audit trang web với W3AF
Lưu ý video minh họa này chỉ dùng cho mục đích đào tạo, nghiên cứu. Không được ứng
dụng thực tế. Xem demo tại đây :
o&feature=youtu.be
Những Điểm Yếu Thông Dụng Của Ứng Dụng Web.
Có nhiều mối nguy hiểm mà các trang web có thể mắc phải, những mối đe dọa hàng đầu
mà chúng ta thường nghe đến là SQL injection, XSS, Authentication Hijacking.. Trong
vai trò CEH chúng ta cần nắm ý nghĩa của các lỗi này và một số công cụ khai thác thịnh
hành :
- Cross-site scripting : Lỗi này cho phép hacker thực thi các đoạn mã nguy hiểm
thông qua các khung tiếp nhận dữ liệu của trang web như ô tìm kiếm.
- SQL injection : Một lỗi có tỉ lệ bị hacker tận dụng rất cao, cho phép hacker chạy
các câu lệnh SQL từ trình duyệt và xem nội dung của các bảng, cột chứa thông tin
quan trọng. Các bạn có thể tham khảo video minh họa kèm theo ở phần trên.
- Buffer Overflow : Một số lượng lớn các dữ liệu hởi đến ứng dụng web thông qua
các biểu mẫu gây nên tràn bộ đệm.
- Cookie poisoning và Authentication hijacking : Hacker đánh cắp cookie của
một phiên làm việc giữa web client và web server, sau đó truy cập vào khu vực
7
riêng tư của người sử dụng, demo
- Directory travelsal / Unicode : Hacker truy vấn hệ thống tập tin và thư mục hệ
thống thông qua trình duyệt web hay windows explorer.
Sau đây là danh sách các lỗi bảo mật của web application mà hacker thường tận dụng để
tấn công do mà tài liệu CEH công bố, trong đó dẫn đầu là những lỗi liên quan đến XSS
(Cross-Site Scripting), tiếp theo sau là SQL Injection, Parameter Tampering, Cookie
Poisoning
Hình 13.4 – Các lỗi ứng dụng web hay bị tấn công
Ngoài danh sách trên, các bạn có thể tham khảo thêm các nguồn thông tin về 10 lỗi bảo
mật thông dụng do OWASP thống kê tại https://www.owasp.org/index.php/Vietnam ,
trong danh sách đang tin cậy này chúng ta nhận thấy có đôi chút khác biệt về tỉ lệ giữa
những lỗi hay bị ảnh hưởng như xếp đầu bảng là SQL Injection (được gọi là lỗi nhúng
mã) nhưng nhìn chung thì các lỗi liên quan đến SQl injection, XSS, hư hỏng cơ chế
chứng thực và quản lý phiên làm việc là những mối quan tâm mà các bạn nên đặt lên
hàng đầu.
8
Hình 13.5 – Danh sách 10 lỗi ứng dụng web hàng đầu
Các Công Cụ Tấn Công Ứng Dụng Web
Acunetix Web Security Scanner Ứng dụng hàng đầu phải kể đến đó là Web
Acunetix Scanner, một chương trình thương mại dùng cho việc tìm kiếm các lỗi
bảo mật của web site như XSS, SQL injection, Directory Travesal
Havji Là chương trình tự động khai thác lỗi SQl injection mà chúng tôi có minh
họa qua video hướng dẫn, đây là công cụ miễn phí được đa số các hacker sử dụng
hiện nay để tấn công và xem các thông tin trong cơ sở dữ liệu.
Burpsuite Gồm nhiều công cụ mạnh mẽ từ quét lỗi trang web cho đến các chức
năng proxy, chặn dữ liệu trong quá trình truyền sau đó thay đổi và gởi về máy
chủ.
BlackWidow Có thể scan và tạo lập sơ đồ của trang web.
Teleport Pro Có khả năng toàn bộ nội dung của một trang web để xem offline
Google Hacking
Google hacking là kỹ năng tìm kiếm nâng cao với công cụ tìm kiếm của Google nhằm
xác định các thông tin nhạy cảm cửa mục tiêu. Nếu không được cấu hình chặt chẽ thì các
thông tin như mật khẩu đăng nhập, các tài liệu riêng tư có thể bị hacker đánh cắp chỉ với
ứng dụng tìm kiếm Google. Có nhiều tài liệu về chủ đề này được đề cập tại trang web
9
hay chuyên trang
cung cấp những cụm từ tìm kiếm nhằm xác định các điểm nhạy cảm của trang web.
Hình 13.6 - Trang web cung cấp nhựng cụm từ tìm kiếm liên dùng cho việc khai thác
Những Phương Pháp Tăng Cường An Ninh Cho Web
Trước đây, hãng Microsoft đã tổ chức một cuộc thi cho phép các hacker tấn công vào hệ
thống ứng dụng và máy chủ web được xây dựng trên nền tảng của hãng như cơ sở dữ liệu
SQL Server, hệ điều hành Windows, nền tảng lập trình ASP. Cuộc thì này có tên là Open
hack và chỉ sau một thời gian ngắn phát động cuộc thi ban tổ chức đã ghi nhận có đến
hơn 40.000 đợt tấn công, tuy nhiên các hacker không cách nào xâm nhập được vào hệ
thống máy chủ hay gây tổn hại đến các trang web mục tiêu mà ban tổ chức đã dựng lên.
Vậy họ đã sử dụng quy trình kiện toàn bảo mật cho ứng dụng web như thế nào mà đem
đến sự vững chắc như vậy ? Tất cả những điều này đã được các kỹ sư của Microsoft tiết
lộ trong tài liệu hướng dẫn tăng cường an ninh cho web application có tên gọi là
“Improving Web Application Security: Threats and Countermeasures” tại địa chỉ :
, đây cũng là tài liệu mà tôi đã
dùng để hướng dẫn trong chương trình bảo mật ứng dụng web cho Tập đoàn EVN tại Đồ
Sơn, Hải Phòng và cuối năm 2011.
Sau đây là một số hướng dẫn để tăng cường an ninh cho ứng dụng web mà chúng ta cần
quan tâm :
- Cross-site scripting : Để phòng trách dạng tấn công này ta cần kiểm tra tính hợp
lệ của các dữ liệu đầu vào, các cookie, những yêu câu truy vấn hay các thông tin
ẩn kỹ càng. Dùng công cụ quét lỗi chuyên dụng cho trang web như Web Acunetix
Scanner để phát hiện xem có những lỗi XSS trên website.
- SQL injection / Command injection : Đóng vai trò hacker để tiền hành quét lỗi
SQL injection tren trang web với công cụ như W3AF (Web Application Attack
and Audit Framework, download tại Và kiểm tra
các biến người dùng chặt chẽ, áp dụng các cơ chế lọc kí tự đặc biệt qua tập tin
.htaccess hay các module chuyên dùng cho việc phòng chống SQL injection.
10
- Cookie poisoning : Không lưu trữ mật khẩu trong cookie, thiết lập thời gian tồn
tại và chơ chế xác thực thích hợp cho các cookie.
- Buffer overflow : Kiểm tra kích thước của các biên do người dùng cung cấp để
chương trình không bị vượt quá khả năng kiểm soát, có xử lý các tình huống
ngoại lệ đầy đủ ngăn không cho hacker lợi dụng chèn những chỉ thị độc.
- Authentication hijacking : Sử dụng SSL để mã hóa dữ liệu truyền.
- Directory travesal / Unicode : Cần cài đặt các bản vá lỗi và cập nhật đầy đủ, thiết
lập quyền truy cập thư mục và tập tin chặt chẽ theo nguyên tắt least priveledge
(chỉ cấp quyền vừa đủ cho người dùng dựa trên nhu cầu)
Các Kỹ Thuật Bẻ Khóa Mật Khẩu Của Trang Web
Là một CEH chúng ta cần nắm rõ một số kỹ thuật ma các hacker thường dùng để bẻ khóa
mật khẩu của ứng dụng web. Bao gồm các phương pháp xác thực mà ứng dụng web sử
dụng, thế nào là password cracker cũng như xác định và phân loại các kỹ thuật password-
cracking để có những biện pháp phòng chống thích hợp. Chúng ta sẽ đề cập đến những
khái niệm trong phần tiếp sau đây.
Các Dạng Xác Thực Của Web Server Và Web Application
Web server và web application hỗ trợ nhiều phương pháp xác thực khác nhau. Phổ biến
nhất là xác thực dựa trên HTTP với hai dạng HTTP authentication là : basic và digest.
Trong mô hình xác thực cơ bản (basic), quá trình xác thực HTTP sẽ gởi các thông tin tài
khoản và mật khẩu dưới dạng cleartext (không mã hóa) trong khi đó với digest authention
thì mô hình xác thực của HTTP sẽ tiến hành băm thông tin tài khoản, ngoài ra giữa client
và server cần tiến hành một bước thử thách gọi là chalenge-response nhằm nâng cao tính
an toàn cho quá trình giao dịch.
Rõ ràng, khi thông tin được gởi dưới dạng cleartext thì tính an toàn rất thấp về hacker sẽ
dễ dàng đánh cắp mật khẩu cùng tên đăng nhập bằng các công cụ sniffer.
Ngoài hai phương pháp trên thì trong mô hình xác thực của máy chủ và ứng dụng web
còn hỗ trợ NTML (mô hình xác thực trên nền tảng của hệ điều hành Windows), sử dụng
chứng chỉ điện tử như khi chúng ta dùng giao thức https:// hay sử dụng thẻ bài và cao
cấp nhất là cơ chế xác thực sinh trắc học dựa trên các đặc điểm nhận dạng của người
dùng như vân tay, giọng nói, võng mạc
Trong các cơ chế xác thực trên thì NTML sử dụng Internet Explorer và IIS webserver , vì
cơ chế này hoạt động trên nền tảng của Windows cho nên rất thích hợp cho các quá trình
kiểm tra trong các hệ thống nội bộ hay mạng intranet dùng hệ điều hành Windows. Đối
với các hệ thống máy chủ như Windows Server 2000/2003/2008 thì có thể tận dụng
11
Keberos để nâng cao tính an toàn cho quá trình xác thực của ứng dụng hay máy chủ web.
Trong khi đó, xác thực dựa trên chứng chỉ điện tử hay certificate dùng các x.509
certificate để triển khai cặp khóa public và private key. Ở đây chúng ta không đi sâu vào
công nghệ này nhưng các bạn cần lưu ý đây là một trong công nghệ thịnh hành trong việc
xác thực người dùng với máy chủ hay ứng dụng web.
Còn đối với xác thực bằng token như SecureID mà chúng ta thường thấy triển khai tạo
các ngân hàng trong quá trình chuyển khoản trực tuyến , mỗi khi cần đăng nhập hay thực
hiện giao dịch chúng ta sẽ nhận một mã số được gởi đến hay phát sinh ngẫu nhiên trên
một thiết bị phần cứng, và khi nhập chính xác thông tin này chúng ta mới được đăng nhập
hay xử lý giao dịch. Ví dụ như thiết bị SecureID của ngân hàng TechComBank.
Password Cracker Là Gì ?
Password cracker là những chương trình được thiết kế để bẻ khóa mật khẩu hay vô hiệu
hóa cơ chế kiểm tra của ứng dụng. Các công cụ này thường sử dụng các kỹ thuật dò mật
khẩu dựa trên từ điển hay dùng kỹ thuật quét cạn để phá mật khẫu.
Trong quà trinh bẻ khóa mật khẩu thông qua từ điển cracker (ta dùng thuật ngữ này thay
cho hacker) sẽ tạo một danh sách các mật khẩu tiềm năng trong dữ liệu của từ điển, thông
qua các chương trình tạo từ điển mật khẩu hay tải những từ điển được tạo sẳn từ internet.
Sau đó các mật khẩu này sẽ được mã hóa hay băn với các thuật toán hash thường được
dùng trong quá trình băm các mật khẩu như MD5. Và để bẻ khóa mật khẩu của ứng dụng
thì các mật khẩu đã được xử lý trong từ điển được so sánh với mật khẩu thực sự cho đến
khi xảy ra sự trùng khớp (máy chủ hay ứng dụng xác thực thành công) thì quá trình bẻ
khóa hoàn tất. Các mật khẩu bị bẻ khóa thường được lấy trong tập tin SAM (Security
Account Manager) hay tập tin /etc/passwd trên các máy chủ web dùng hệ điều hành linux
(khi hacker tấn công vào các trang web họ sẽ upload các trojan như c99, rv57 để tải về
tập tin này).
Nhưng phương pháp dò từ điển này khó thành công với những mật khẩu mạnh, vì không
thể tập hợp đủ các dữ liệu cần thiết cũng như thời gian tiến hành không thực tế. Trong
những trường hợp đó phương pháp dò mật khẩu theo kỹ thuật quét cạn hay brute-force sẽ
được áp dụng. Brute-force sẽ thử tất cả các tình huống kết hợp của những kí tự để tạo ra
mật khẩu. Lấy ví dụ đơn giản nếu như mật khẩu chỉ được tạo ra từ 3 kí tự 1,2,3 thi chỉ có
tối đa 8 kết quả vì vậy công cụ chỉ cần so sánh tối đa 8 lần là tìm ra mật khẩu gốc. Tuy
nhiên, trong thực tế các mật khẩu sẽ phức tạp hơn nhiều cho nên quá trình bẻ khóa diễn ra
lâu hay nhanh phụ thuộc vào độ mạnh của thuật toán và cấu hình phần cứng của máy chủ
dùng để bẻ khóa. Chương trình thông dụng trong lĩnh vực này thường được đề cập trong
CEH chính là L0phtCrack, Join the ripper, Ophcrack Những ứng dụng mạnh mẽ
thường kết hợp cả hai phương pháp dò mật khẩu trên và kỹ thuật này gọi là Hybrid.
Tổng Kết
12
Trong chương này chúng ta đã thảo luận về những mối đe dọa hàng đầu đống với sự an
toàn của ứng dụng web qua thống kê của tài liệu CEH hay trong danh sách 10 mối nguy
hiểm hàng đầu của OWASP. Với những mối đe dọa hay dạng tấn công nguy hiểm cần có
những cách thức khắc phục riêng, nhưng trước tiên chúng ta cần phải tiến hành hardening
cho các hệ thống máy chủ để kiện toàn bảo mật ứng dụng web.
Về các kỹ thuật bẽ khóa mật khẩu các bạn cần phân biệt hai tình huống chính là bẻ khóa
dựa trên từ điển khác với bẻ khóa quét cạn như thế nào. Và để phòng chống bị bẻ khóa
mật khẩu thì các quản trị viên cần áp dụng các chính sách mật khẩu mạnh với độ dài mật
khẩu ít nhất là 8 kí tự, có sự kết hợp giữa chữ hoa, chữ thường, số kèm các kí tự đặc biệt.
Ngoài ra, phải bật các chế độ audit, ghi nhật kí thích hợp để có thể dò tìm những tình
huống bị tấn công. Đặc biệt, hãy sao lưu cẩn thận để phòng khi có rũi ro xảy ra thì vẫn có
thể phục hồi dữ liệu, đưa hệ thống vào hoạt động nhanh chóng.
Các file đính kèm theo tài liệu này:
- bai_giang_tan_cong_trang_web.pdf