Soci (Soczó Zsolt) szakmai blogja

2007.10.27.

UPDATE: SQL Injection? – NEM

Filed under: .NET,ASP.NET,Security,Szakmai élet — Soczó Zsolt @ 08:59

http://www.cegtudor.hu/Alkategoria.aspx?varos=%C3%89rd&alkategoriaid=232&alkategorianev=kis%20%C3%A9s%20nagyker

Kimenet:
Input string was not in a correct format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: Input string was not in a correct format.

Source Error:

Line 28: mySqlCommand2.CommandText = “UPDATE kategoria SET latogatok = latogatok + 1 WHERE (kategoriaid LIKE @kategoriaid);”;
Line 29: mySqlCommand2.Parameters.Add(“@kategoriaid”, SqlDbType.Int);
Line 30: mySqlCommand2.Parameters[“@kategoriaid”].Value = Convert.ToInt32(LabelKid.Text);
Line 31: mySqlCommand2.ExecuteNonQuery();
Line 32: mySqlConnection2.Close();

Fura, mik vannak még a mai világban. Persze, mivel a paraméter int, nem egyszerű a dolog, de valószínűleg a többi rész is így van programozva.

UPDATE: baromságot beszéltem. Paraméteres a lekérdezés, teljesen jól van megcsinálva, így nem lehet injektálni. Elnézést, hogy pellengérre állítottam, szólok az ikreknek, hogy adjanak több időt aludni, addig is, nem blogolok több hülyeséget. :) Sorry.

Egy, ami nem szép, hogy debug módban van a kód, és a részletes hibaüzenetek látszanak kifelé. Ez is kiindulási alap lehet egy hacker részére.

6 Comments

  1. Ha jól látom az oldalon, aki fejlesztette, oktatja is.
    Amúgy meg biztos megpályáztatták, és ez volt a legolcsóbb… (A feladatot pedig mindenki teljesítette: “… Az oldalon beírt paraméterek alapján a rendszer keresést hajt végre. A kategórián belül a látoagatásokat számolja…”)

    Comment by gerleim — 2007.10.27. @ 14:43

  2. Szia!
    Nem szép (sőt baromi ronda, pl. megjelenítési rétegben minden), meg nem is jó a megoldás (using, like, …), de én itt nem látok lehetőséget sql code injection-ra. Elárulnád, hogy hol a lehetőség?
    Attila

    Comment by kaz — 2007.10.29. @ 06:43

  3. Integeren keresztül én se tudok injektálni, de ha ez az oldal így van megírva, az ilyen siteokon érdemes próbálkozni a többivel is, előbb-utóbb találsz olyat, ami stringet vár paramáterül, és akkor nyertél.

    Comment by Soczó Zsolt — 2007.10.29. @ 08:39

  4. Ezt nem teljesen értem. Ha paraméteres sql-ed van, ahol string típusú a paraméter, akkor a framework nem intézi el a string escape-elését (jobb szót nem tudok rá, bocs)? Azaz ha jól tudom, akkor így sem tudsz sql code injectiont csinálni, csak akkor, ha kézzel rakod össze az sqlt, vagy rosszul tudom?
    Másrészt abban igazad van, hogy ahol így van a site felépítve, ott még akár ez utóbbi eset is előfordulhat. Ezért is célszerű, hogyha megfelelő rétegeid vannak és a megfelelő helyeken(!) validálsz.

    Comment by kaz — 2007.10.29. @ 09:12

  5. Másrészt kicsit furcsa, hogy ilyen részletes infót kiadnak egy hibáról. Ez az infó csak a fejlesztőnek, meg a crackernek hasznos, egy átlag felhasználónak bőven elég információt ad pl: az indexes hiba ablak is ( http://index.hu/kaz ).

    Comment by kaz — 2007.10.29. @ 09:18

  6. Kaz: barom voltam, lsd update.

    Comment by Soczó Zsolt — 2007.10.29. @ 09:40

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress