webForumDet fria alternativet

Hackad hemsida. Hjälp mig med säkerheten.

ASP

5 svar · 425 visningar · startad av l-boy

Medlem sedan juli 2003221 inlägg
Frågan#1

Driver på fritiden en hemsida (http://www.lsk.se) och i fredags morse lyckades en hacker (HACKED BY SCORPIONHACKERS SECURITY TEAM) tränga sig in och radera en del viktig information. Inte hela världen, backup finnes. Men jag vill så klart inte att det här skall hända i framtiden. Säkerheten på sidan har inte varit den bästa, och det är jag fullt medveten om. Har inte heller brytt mig om det då det inte känts speciellt troligt att någon ens skulle bry sig om att göra ett intrång. Skulle vara tacksam om någon kunde se över nedanstående kod och komma med tips och förslag på vad som kan göras bättre;

Jag vet att nedanstående kod är rätt så usel och jag har lärt mig en hel massa sedan jag skrev nedanstående och håller på med en ny version. Men det kan ändå vara bra med lite tips.

I loggen kan jag utläsa att "hackern";

* loggade in med username; admin


<%

If request.querystring("action") = "logout" Then 
call log("Lyckad utloggning.",Session("admin_username"),"admin")
Session.abandon 			
Response.Redirect "/index.asp?link=/admin/admin_login.asp"
End If

If Session("admin_login")="OK" Then
Response.Redirect("/index.asp?link=/admin/admin_main.asp")
End If

If Request.QueryString("action") = "login" Then
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open ="Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & admin_db

username = Request.Form("username")	
password = Request.Form("password")
	
Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "Select * From admin Where username='"&username&"' AND password='"&password&"'"
RecSet.Open SQL, Connect 

If (RecSet.EOF or RecSet.BOF) then 		
	
Session("admin_errormessage") = "Fel namn eller lösenord.<BR>"
RecSet.Close
Set RecSet = nothing
Connect.Close		
call log("Misslyckat inloggningsförsök. (Lösen="&password&")",username,"admin")
		
Response.Redirect("/index.asp?link=admin/admin_login.asp")

Else
		
Session("admin_login") = "OK"
Session("admin_id") = RecSet("Id")
Session("admin_username") = username
Session("admin_signature") = RecSet("Signature")
Session("admin_team") = RecSet("Team")
Session("admin_messageaccess") = RecSet("MessageAccess")
Session("admin_forumaccess") = RecSet("ForumAccess")
Session("admin_gbaccess") = RecSet("GbAccess")
Session("admin_allteamsaccess") = RecSet("AllTeamsAccess")		
Session("admin_adminaccess") = RecSet("AdminAccess")
			
call log("Lyckad inloggning.",Session("admin_username"),"admin")
				
RecSet.Close
Set RecSet = nothing

Connect.Close	
		
Response.Redirect "/index.asp?link=admin/admin_main.asp"
		
End If

RecSet.Close
Set RecSet = nothing

Connect.Close	

End If

%>

<form name="adminlogin" method="post" action="/admin/admin_login.asp?action=login">
<table align="center" border="0" width="98%" cellpadding="0" cellspacing="0"> 
<tr>
<td width=100>Användarnamn</td><td><input type="text" name="username" size="20"></td>
</tr>
<tr>
<td>Lösenord</td><td><input type="password" name="password" size="20"></td>
</tr>	
<tr>
<td colspan="2"><br><input type="submit" value="Logga in"></td>
</tr>	
	
</form>
	
<% 
	
If Session("admin_errormessage")<>"" Then %>	
		
<tr>
<td colspan="2"><%Response.Write Session("admin_errormessage") %></td>
</tr>	
		
<% 
	
Session("admin_errormessage") = ""
End If 
	
%>
	
</table>
Medlem sedan juni 20034 013 inlägg
#2

Titta på din kod och försök gissa vad som händer om någon loggar in med användarnamn:

admin

och lösenord:

' OR '1'='1

Medlem sedan juli 2003221 inlägg
#3

Jo, då blir det problem. Hur kringgår jag det enklast?
Något i stil med;

username = Trim(Replace(Request.Form("username"),"'",""))
password = Trim(Replace(Request.Form("password"),"'",""))

Medlem sedan juni 20034 013 inlägg
#4

Du ersätter alla ' i username och password med '' (två stycken apostrofer).

Medlem sedan juni 20034 013 inlägg
#5

Och det ska du göra överallt där information utifrån (cookies, request.form, request.querystring) går in till databasen.

Medlem sedan juli 2003221 inlägg
#6

OK, tack för hjälpen!

263 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)