thanhbinh_88
02-12-2008, 14:46
Hôm nay mình xin viết và sưu tầm một số bài về Security ,
Trước tiên để security thì bạn phải biết các lỗ hổng về bảo mật.
Các hacker (trung bình ) thì thường tấn công qua các lỗi sau :
1, Đoán pass
2, By pass (sql injection)
3, Sql injection
4, Session, cookie, by login page.
5, Local hack
6, Setup file
7, DDos
1, Đoán pass : Vấn đề này nghĩ nó đơn giản, nhưng do bất cẩn của một số admin, khiến hacker có thể xâm nhập vào trang quản trị , up shell -> Local cả server .
Victim nhận dạng : Trang web mới cài đặt xong, các website demo (Không hack trang demo chỉ hack các trang nằm chung server của nó)
Giải quyết : Đặt pass khó. Đã có 1 bài trên diễn đàn về đặt pass
http://diendanspkt.net/showthread.php?t=770
2, By pass + 3, Sql injection :
Sql injection là j` , Nó là nỗi query từ dòng slq injection .
Vd : Select * from table diendanspkt.net where username='"&request.form("thanhbinh")" & .....
Ở lỗi này mình sẽ post user name : 'or '1=1
=> Dòng query : Select * from table diendanspkt.net where username=''or'1=1.....
username = Rổng hoặc 1=1 (true) !
Security : http://diendanspkt.net/showthread.php?t=683 (metamon)
Với bài trên ta có thể khắc phục triệt để sqlinjection ( theo mình là vậy)
Để tiện theo dõi mình leech nó qua :
<%
Function EscapeQuotes(sInput)
sInput = replace(sInput, " ' ", " ' ' ")
EscapeQuotes = sInput
End Function
%>
Trước khi gởi tới dòng sql string, bạn hãy chuẩn hóa thông tin bằng hàm EscapeQuotes
Hoặc : trong dòng query bạn thêm vào : username ='"&replace(request.form("diendanspkt.net","'",""")
Để tránh các injection khác , trong bài metamon còn 1 code :
<%
Function KillChars(sInput)
dim badChars
dim newChars
badChars = array("select", "drop", ";", "--", "insert", "delete", "xp_")
newChars = strInput
for i = 0 to uBound(badChars)
newChars = replace(newChars, badChars(i), "")
next
KillChars = newChars
End Function
%>
Và một vấn đề nữa, bạn không nên sử dụng Dòng query select *, khi lập trình bạn nên select các column và table cần lấy record mà thôi.
4,Session, cookie, by login page
By Login Page
Khi bạn tạo trang admin control có một số admin mắc một số sai lầm nghiêm trọng, đó là chỉ check login ở 1 vài trang trong admin, thường bỏ qua trang upload và một số trang post bài .
Vd: Bạn có trang admin : www.victim.com/admin/
Thì bạn có thể đoán : www.victim.com/admin/upload.php |upload.asp ...v....
Hoặc đối với các website sử dụng các bộ upload : fckeditor, innova, assetmanager ..v..
Bạn tham khảo bài ở :
Bub assetmanager : http://diendanspkt.net/showthread.php?t=932
Fckeditor : http://diendanspkt.net/showthread.php?t=744
Session , Cookie :
-Cookie: Các code tạo cookie là chạy trên server nên tương đối an toàn, nhưng các code này nếu lộ ra sẽ rất nguy hiểm, vì chúng ta có thể chạy trên localhost để tạo cookie sau đó chép đè vào cookie cũ (victim)
-Session: Chỉ hack được khi nào có shell trên server( đã hack rồi, nhưng chưa vào d.c trang admin)
Fix:
Login page: Tạo 1 trang check login , include ở tất cả các trang (check cookie + session)
Cookie: Chúng ta nên áp dụng cả 2 cái cookie + session. Đặc biệt đối với cookie ta nên tạo 1 usercode nằm trên database với 1 số kí tự random, một user sẽ có 1 code, mỗi lần login thì cookie sẽ đươc chèn cái usercode này. Khi bạn share source nhớ đối cái user code này nha.
Bạn sử dụng session với cookie thì mình nghĩ những việc hack này rất khó.
Code chèn vào khi login thành công :
Session("diendanspkt.login")=1
Code check :
if session("diendanspkt.login") <> 1 then
response.redirect("logoutdiendanspkt.asp")
end if
Time out :
Session.timeout = 1800 (không nhớ rõ, sai bà con thông cảm)
Setup file
Thông qua các file cài đặt vd : bigdum.php , install.php ...v..
Cách khắc phục : Cài xong thì bạn xóa nó
Localhack:
Hack từ các website cùng server, by safemode// Cách này khá thông dụng, video clip rất nhiều :
http://spktdata.webng.com/imissuwhy%20(1).rar /Made in tự tui !
Cách khắc phục :
Chmode Các folder ở chế độ 101, các file ở 644 // Chạy không được thì ráng mà chịu :deathhead:
DDos :
http://diendanspkt.net/showthread.php?t=871
Final !
Trước tiên để security thì bạn phải biết các lỗ hổng về bảo mật.
Các hacker (trung bình ) thì thường tấn công qua các lỗi sau :
1, Đoán pass
2, By pass (sql injection)
3, Sql injection
4, Session, cookie, by login page.
5, Local hack
6, Setup file
7, DDos
1, Đoán pass : Vấn đề này nghĩ nó đơn giản, nhưng do bất cẩn của một số admin, khiến hacker có thể xâm nhập vào trang quản trị , up shell -> Local cả server .
Victim nhận dạng : Trang web mới cài đặt xong, các website demo (Không hack trang demo chỉ hack các trang nằm chung server của nó)
Giải quyết : Đặt pass khó. Đã có 1 bài trên diễn đàn về đặt pass
http://diendanspkt.net/showthread.php?t=770
2, By pass + 3, Sql injection :
Sql injection là j` , Nó là nỗi query từ dòng slq injection .
Vd : Select * from table diendanspkt.net where username='"&request.form("thanhbinh")" & .....
Ở lỗi này mình sẽ post user name : 'or '1=1
=> Dòng query : Select * from table diendanspkt.net where username=''or'1=1.....
username = Rổng hoặc 1=1 (true) !
Security : http://diendanspkt.net/showthread.php?t=683 (metamon)
Với bài trên ta có thể khắc phục triệt để sqlinjection ( theo mình là vậy)
Để tiện theo dõi mình leech nó qua :
<%
Function EscapeQuotes(sInput)
sInput = replace(sInput, " ' ", " ' ' ")
EscapeQuotes = sInput
End Function
%>
Trước khi gởi tới dòng sql string, bạn hãy chuẩn hóa thông tin bằng hàm EscapeQuotes
Hoặc : trong dòng query bạn thêm vào : username ='"&replace(request.form("diendanspkt.net","'",""")
Để tránh các injection khác , trong bài metamon còn 1 code :
<%
Function KillChars(sInput)
dim badChars
dim newChars
badChars = array("select", "drop", ";", "--", "insert", "delete", "xp_")
newChars = strInput
for i = 0 to uBound(badChars)
newChars = replace(newChars, badChars(i), "")
next
KillChars = newChars
End Function
%>
Và một vấn đề nữa, bạn không nên sử dụng Dòng query select *, khi lập trình bạn nên select các column và table cần lấy record mà thôi.
4,Session, cookie, by login page
By Login Page
Khi bạn tạo trang admin control có một số admin mắc một số sai lầm nghiêm trọng, đó là chỉ check login ở 1 vài trang trong admin, thường bỏ qua trang upload và một số trang post bài .
Vd: Bạn có trang admin : www.victim.com/admin/
Thì bạn có thể đoán : www.victim.com/admin/upload.php |upload.asp ...v....
Hoặc đối với các website sử dụng các bộ upload : fckeditor, innova, assetmanager ..v..
Bạn tham khảo bài ở :
Bub assetmanager : http://diendanspkt.net/showthread.php?t=932
Fckeditor : http://diendanspkt.net/showthread.php?t=744
Session , Cookie :
-Cookie: Các code tạo cookie là chạy trên server nên tương đối an toàn, nhưng các code này nếu lộ ra sẽ rất nguy hiểm, vì chúng ta có thể chạy trên localhost để tạo cookie sau đó chép đè vào cookie cũ (victim)
-Session: Chỉ hack được khi nào có shell trên server( đã hack rồi, nhưng chưa vào d.c trang admin)
Fix:
Login page: Tạo 1 trang check login , include ở tất cả các trang (check cookie + session)
Cookie: Chúng ta nên áp dụng cả 2 cái cookie + session. Đặc biệt đối với cookie ta nên tạo 1 usercode nằm trên database với 1 số kí tự random, một user sẽ có 1 code, mỗi lần login thì cookie sẽ đươc chèn cái usercode này. Khi bạn share source nhớ đối cái user code này nha.
Bạn sử dụng session với cookie thì mình nghĩ những việc hack này rất khó.
Code chèn vào khi login thành công :
Session("diendanspkt.login")=1
Code check :
if session("diendanspkt.login") <> 1 then
response.redirect("logoutdiendanspkt.asp")
end if
Time out :
Session.timeout = 1800 (không nhớ rõ, sai bà con thông cảm)
Setup file
Thông qua các file cài đặt vd : bigdum.php , install.php ...v..
Cách khắc phục : Cài xong thì bạn xóa nó
Localhack:
Hack từ các website cùng server, by safemode// Cách này khá thông dụng, video clip rất nhiều :
http://spktdata.webng.com/imissuwhy%20(1).rar /Made in tự tui !
Cách khắc phục :
Chmode Các folder ở chế độ 101, các file ở 644 // Chạy không được thì ráng mà chịu :deathhead:
DDos :
http://diendanspkt.net/showthread.php?t=871
Final !