IV. Những hình thức tấn công 1 Tấn công từ chối dịch vụ DOS
a. Tấn công vượt qua kiểm tra đăng nhập
Với dạng tấn công này, hacker dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi sử 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 có thể truy cập vào một 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 xem tên và mật khẩu 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 thiết kế có thể sử 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. VD:
Login.htm
<form action=”ExeLogin.asp” method=”post”>
Username:<input type=”text” name=”txtUsername”><br> Password:<input type=”password” name=”txtPassword”><br>
<input type=”submit”> </form>
ExecLogin.asp <%
Dim p_strUsername, p_strPassword, objRS, strSQL p_strUsername = Request.Form(“txtUsername”) p_strPassword = Request.Form(“txtPassword”) strSQL = “SELECT *FROM tblUsers” &_ “WHERE Username=’ ”&p_strUsername &_ “ ‘ and Password=’ “&p_strPassword &” ‘ “
Set objRS = Server.CreatObject(“ADODB.Recordset”) objRS.Open strSQL, “DSN=…”
If (objRS.EOF) Then
Response.Write “Iinvalid login.” Else
Response.Write “You are logged in ass “& objRS(“Username”) End If
Set objES = Nothing %>
Thoạt nhìn, đoạn mã trang Execlogin.asp dường như không chứa bất kỳ một lỗ hổng bảo mật nào. Người dùng không thể đăng nhập mà không có username và password. Tuy nhiên, đoạn mã này thực sự không an toàn và là tiền để cho một cuộc tấn công kiểu SQL Injection. Đặc biệt, dữ liệu người dùng nhập vào được sử dụng trực tiếp để xây dựng câu lệnh SQL. Chính điều này giúp cho kẻ tấn công có thể điều khiển được câu truy vấn thực hiện. Ví dụ, nếu người sử dụng nhập chuỗi sau vào cả hai ô nhập liệu username và password của trang đăng nhập: “or” “=”.
SELECT *FROM tblUsers WHERE Username=”or”=” and Password=”or”=”
Câu truy vấn này là hoàn toàn hợp lệ và sẽ trả về tất cả các bản ghi của bản danh sách các thành viên và đoạn mã tiếp theo xử lý người dùng đăng nhập bất hợp pháp như là một người dùng hợp lệ.