Penetračné testovanie fakultného servera

Z Kiwiki
Verzia z 21:15, 25. júl 2010, ktorú vytvoril Juraj (diskusia | príspevky) (Vytvorená stránka „Kategória:Študentské práce Kategória:Bakalárske práce Kategória:Informatika Kategória:web {{Praca_uvod|5|Bezpečnosť webových aplikácií|Rozdele…“)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
Skočit na navigaci Skočit na vyhledávání

Poznámka: Z dôvodu zabezpečenia webových serverov FM TnUAD tu nebudú zverejnené mená serverov ani ich IP adpresy.

Pri testovaní webových aplikácií na SQL injection, XSS a DoS som mal odhalené len niektoré informácie o infraštruktúre servera, teda sa jednalo o penetračný test typu gray box. Boli to tieto informácie o fakultnom serveri na webovej adrese www.xxx.tnuni.sk:

  • Systém: Linux
  • Server API: Apache 2
  • Apache Version: Apache / 2.2.4 (Unix)
  • PHP verzia 5.2.2

Na testovanie zraniteľností fakultných serverov server1 a server2 som použil program Nessus verzie 4.2.2 od spoločnosti Tenable. Nessus je svetový líder v oblasti aktívnych skenerov. Testy vykonáva podľa rôznych metodík, medzi ktoré patria aj metodiky OWASP a SANS. Ponúka rýchle odhaľovanie, konfiguráciu auditu, majetkové profilovanie, citlivé odhaľovanie dát a analýzu zraniteľností. Nessus skenery môžu byť distribuované v celých podnikoch a aj cez fyzicky oddelené siete.

Nessus má 36264 zásuvných doplnkov, v ktorých sú uložené pravidlá skenovania pre jednotlivé zraniteľnosti. Obsahuje databázu 12538 obvyklých zraniteľností (CVE), z ktorých každá jedna zraniteľnosť má svoj CVE index, podľa ktorého je možné si vyhľadať bližšie informácie o danej zraniteľnosti. Program Nessus bol spustený na platforme Windows XP s SP2. Testoval som tieto IP adresy IP1 a IP2, s DNS menami server1 a server2. Obe IP adresy patria serverom Trenčianskej Univerzity A. Dubčeka, fakulta mechatroniky.

Informácie o hostiteľovi na IP adrese IP1 získané programom Nessus

Operačné systémy bežiace na tejto IP:

  • Microsoft Windows Vista, Microsoft Windows Server 2008, Microsoft Windows Server 2008 R2, Windows 7
  • DNS meno: server1
  • Počet nájdených otvorených portov: 5
  • Počet odhalených zraniteľností a ich závažnosť:
    • Veľká závažnosť: 1
    • Stredná závažnosť: 3
    • Nízka závažnosť: 19

Port 0 s protokolom UDP

Port 0 s protokolom UDP obsahoval jednu zraniteľnosť s nízkou závažnosťou. Meno služby, ktorá bola na ňom v prevádzke, je general. Zraniteľnosť sa týka možnosti získania informácií ohľadom otvorenosti portu a službe, ktorá na ňom beží. Riešenie tejto malej zraniteľnosti je neznáme.

Port 0 s protokolom TCP

Port 0 s protokolom TCP obsahoval 6 zraniteľností s nízkou závažnosťou. Meno služby, ktorá bola na ňom v prevádzke, je general. Zraniteľnosti sa týkajú možností získania informácií ohľadom otvorenosti portu a službe, ktorá na ňom beží, ďalej operačnom systéme a o časových pečiatkach TCP protokolu, ktoré poskytujú presný čas nastavený na vzdialenom počítači. Riešenie týchto malých zraniteľností je taktiež neznáme. Všetky zraniteľnosti mali nulový rizikový faktor.

port 21 s protokolom TCP

Port 21 s protokolom TCP obsahoval 9 zraniteľností a z toho jednu zraniteľnosť s veľkou závažnosťou, 2 zraniteľnosti so strednou a 6 zraniteľností s nízkou závažnosťou. Meno služby, ktorá bola na ňom v prevádzke, je ftp.

Najzávažnejšia zraniteľnosť je na ftp „bounce“ útok. Týmto útokom môže vzdialený útočník vytvoriť spojenie akejkoľvek IP adresy na akýkoľvek TCP port. Problém teda umožňuje útočníkovi používať sieťové prostriedky pre skenovanie iných hostiteľov, ktorí si potom myslia, že útok prichádza zo siete obete. Najlepším riešením tejto zraniteľnosti je zamietnuť pripojenie akéhokoľvek počítača v softvéri servera.

Ďalšie 2 zraniteľnosti strednej závažnosti sa týkajú anonymného pripojenia na ftp server a overovacieho certifikátu, ktorý pochádza z iného zariadenia. Anonymný používateľ sa môže pripojiť bez zadania hesla a stiahnuť voľne dostupný obsah. Program Nessus odporučil ako riešenie zraniteľnosti ftp servera pravidelnú kontrolu, či sa na ňom nenachádza citlivý obsah, alebo vypnutie možnosti anonymne sťahovať voľne dostupný obsah, ak nie je táto možnosť vyžadovaná. Pre zraniteľnosť certifikátu odporučil vytvorenie riadneho osvedčenia pre službu, ktorá pracuje na tomto porte.

Posledných 6 zraniteľností sa týka nezašifrovania dát, ktoré sú prenášané na ftp server, certifikátu, ktorý je použitý na overenie domény. Doporučené riešenia sú, nakonfigurovať server, tak aby šifroval dáta a riadenie pripojenia a uistiť sa, že hostiteľská DNS adresa, ku ktorej sú pripojení užívatelia, zodpovedá názvu v certifikáte.

port 80 s protokolom TCP

Port 80 s protokolom TCP obsahoval 5 zraniteľností a z toho jednu zraniteľnosť so strednou závažnosťou a 4 zraniteľnosti s nízkou závažnosťou. Meno služby, ktorá bola na ňom v prevádzke, je www.

Tá so strednou závažnosťou sa týka vzdialeného ladenia webového servera pomocou sledovacej http metódy a vyriešiť sa môže buď zablokovaním, alebo obmedzením prístupu tzv. bielym zoznamom používateľov, ktorí môžu túto službu využívať.

Ostatné zraniteľnosti s nízkou závažnosťou sa týkajú odhalenia poskytovanej služby na porte, odhalenia niektorých informácií o http protokole a nájdenia súboru robots.txt. Tento súbor je podľa programu Nessus určený buď na zabránenie návštevy niektorých adresárov webovej stránky pre údržby alebo na indexovacie účely. Používateľ so zlými úmyslami môže byť schopný využiť obsah tohto súboru a zužitkovať citlivé informácie na vyhľadanie miest, ktoré mu poslúžia pre ďalšie útoky. Riešenie pre tieto zraniteľnosti spočíva v zablokovaní možnosti vzdialeného riadenia servera a v skontrolovaní súboru robots.txt, prípadne zmena kontroly prístupu k citlivým informáciám alebo obmedzenie prístupu k nim.

port 3389 s protokolom TCP

Port 21 s protokolom TCP obsahoval 2 zraniteľnosti s nízkou závažnosťou. Meno služby, ktorá bola na ňom v prevádzke, je msrdp. Jedna zraniteľnosť sa týka možnosti pripojenia hosťa na terminálovú službu a druhá zraniteľnosť je v slabšom šifrovaní terminálovej služby. Vyriešiť tieto zraniteľnosti môžeme zakázaním terminálovej služby, ak nepotrebujeme pristupovať k serveru cez internet a zmeniť šifrovanie tejto služby na 4. úroveň, ktorá vyhovuje FIPS (štandard federálneho informačného spracovania).

Informácie o hostiteľovi na IP adrese IP2 získané programom Nessus

  • Operačný systém bežiaci na tejto IP: Linux - Kernel 2.6
  • DNS meno: server2
  • Počet otvorených portov : 6
  • Počet odhalených zraniteľností a ich závažnosť:
    • veľké: 8
    • stredné: 28
    • malé: 28

Port 0 s protokolom ICMP

Port 0 s protokolom ICMP obsahoval jednu zraniteľnosť s nízkou závažnosťou. Meno služby, ktorá bola na ňom v prevádzke, je general. Zraniteľnosť sa týka možnosti získania presného času pomocou pečiatky ICMP protokolu. Riešením tejto malej zraniteľnosti je v odfiltrovaní žiadostí o časovú pečiatku a neposielanie časových pečiatok v odpovediach.

Port 0 s protokolom TCP

Port 0 s protokolom TCP obsahoval 6 zraniteľností s nízkou závažnosťou. Meno služby, ktorá bola na ňom v prevádzke, je general. Zraniteľnosti sa týkajú možností získania informácií ohľadom otvorenosti portu a službe, ktorá na ňom beží, ďalej operačnom systéme a o časových pečiatkach TCP protokolu. Taktiež všetky tieto zraniteľnosti, tak ako na predošlej testovanej IP adrese, mali nulový rizikový faktor. Ich riešenie je opäť neznáme.

Port 0 s protokolom UDP

Port 0 s protokolom UDP obsahoval jednu zraniteľnosť s nízkou závažnosťou. Meno služby, ktorá bola na ňom v prevádzke, je general. Zraniteľnosť sa týka možnosti získania informácií ohľadom trasovania, otvorenosti portu a službe, ktorá na ňom beží. Riešenie tejto malej zraniteľnosti je neznáme.

port 21 s protokolom TCP

Port 21 s protokolom TCP obsahoval 4 zraniteľnosti a z toho jednu zraniteľnosť so strednou a 3 zraniteľnosti s nízkou závažnosťou. Meno služby, ktorá bola na ňom v prevádzke, je ftp.

Zraniteľnosť strednej závažnosti sa týka anonymného pripojenia na ftp server a následnej možnosti sťahovania dát. Anonymný používateľ sa môže pripojiť bez zadania hesla a stiahnuť voľne dostupné dáta. Program Nessus odporučil ako riešenie zraniteľnosti ftp servera pravidelnú kontrolu, či sa na ňom nenachádza citlivý obsah, alebo vypnutie možnosti anonymne sťahovať voľne dostupný obsah, ak nie je táto možnosť vyžadovaná.

Ďalšie 3 zraniteľnosti s nízkou závažnosťou sa týkajú nezašifrovania dát, ktoré sú prenášané na ftp server, možnosti odhalenia služby a bannera. Server nešifruje riadiace príkazy a prihlasovacie údaje používateľa. Doporučené riešenia je, nakonfigurovať server, tak aby šifroval dáta a riadenie pripojenia.

port 80 s protokolom TCP

Port 80 s protokolom TCP obsahoval 20 zraniteľností a z toho 4 zraniteľnosti s veľkou závažnosťou, 11 zraniteľností so strednou závažnosťou a 5 zraniteľností s nízkou závažnosťou. Meno služby, ktorá bola na ňom v prevádzke, je www. Všetky najzávažnejšie zraniteľnosti sa týkajú nízkej verzie PHP, ktorá je iba 2.2. V dôsledku zastaranej verzie PHP, vznikajú rôzne zraniteľnosti ako pretečenie zásobníka, obídenie zabezpečovacieho mechanizmu, zlé inicializovanie globálnych premenných page_uid a page_gid a taktiež možnosť pádu servera prostredníctvom DoS útoku. Obídenie zabezpečovacieho mechanizmu sa dá spôsobiť taktiež DoS útokom. Riešením týchto zraniteľností je aktualizovanie PHP verzie na najvyššiu dostupnú.

Stredne závažné sa týkajú nízkej verzie serverového programu Apache, nízkej verzie OpenSSL protokolu, vzdialeného ladenia webového servera pomocou sledovacej http metódy a taktiež nízkej verzie PHP.

Táto zastaraná verzia PHP môže byť ovplyvnená niekoľkými problémami ako integer overflow, chybami vo funkciách explode(), imagerotate() a xml_error_string(), obídením zabezpečovacieho mechanizmu nastavením používania tempnam() a taktiež obídením open_basedir vďaka chybe v prípone session a DoS prostredníctvom funkcie exif_read_data v module Exif, ktorá umožňuje vzdialenému útočníkovi spôsobiť pád servera použitím chybného obrázku formátu JPEG s neplatným offset polom. Verzia protokolu OpenSSL je náchylná na útok DoS a útok založený na načasovaní. Tento útok môže útočníkovi dovoliť odhadnúť obsah pevných dátových blokov a potom môže byť schopný odhadnúť hodnotu privátneho kľúča RSA na serveri. Útočník sa tak môže vydávať za server obete a vykonávať tak tzv. človeka uprostred.

Zastaraná verzia programu Apache je náchylná na DoS v module mod_proxy_http, na CSRF v module mod_proxy_balancer, na podtečenie zásobníka, obídenie zabezpečovacieho mechanizmu (umožnené len lokálnemu používateľovi) a na útok DoS pomocou špeciálne vytvoreného XML dokumentu s veľkým počtom vnorených subjektov, ktorým môže vzdialený útočník skonzumovať nadmerné množstvo pamäte kvôli chybe v zbalenom xml parseri Expat používanom modulmi mod_dav a mod_dav_svn.

Riešenia opäť spočívajú v aktualizovaní na najnovšie verzie PHP, Apache, OpenSSL a riešením vzdialeného ladenia webového servera pomocou sledovacej http metódy je zablokovanie tejto možnosti.

Zraniteľnosti s najnižšou závažnosťou sa týkajú odhalenia služby na porte a informácií o http protokole. Ich riešenie je opäť neznáme.

port 443 s protokolom TCP

Port 80 s protokolom TCP obsahoval 32 zraniteľností a z toho 4 zraniteľnosti s veľkou závažnosťou, 16 zraniteľností so strednou závažnosťou a 12 zraniteľností s nízkou závažnosťou. Meno služby, ktorá bola na ňom v prevádzke, je www.

Všetky najzávažnejšie zraniteľnosti sa týkajú znova nízkej verzie PHP a sú tie isté ako na porte 80. Riešenie týchto zraniteľností je opäť aktualizácia. Zo 16 zraniteľností strednej závažnosti je 11 rovnakých ako na porte 80 a ostatné sa týkajú certifikátu SSL a samotného protokolu. Problém je v použití typu SSL protokolu, ktorého slabiny sú už známe a taktiež vo vypršaní jeho osvedčenia. Ako riešenie je vhodné použiť SSL 3.0 alebo TLS 1.0 a ďalšie riešenia známe z portu 80.

Zraniteľnosti s nízkou závažnosťou sa týkajú možnosti odhalenia služby na porte a informácií o http protokole, nevracanie chybovej stránky s chybovým kódom 404 a v slabom šifrovaní pomocou SSL. Riešením slabého šifrovania je použitie protokolu SSL 3.0 a ostatné chyby majú riešenie buď neznáme alebo ponechané na používateľovi.

Manuálne testované útoky

Fakultný server a jeho aplikácie som testoval na SQL injection útok a XSS útok. Webové aplikácie boli testované na tieto kódy vložené do prihlasovacích a vyhľadávacích polí:

' or 1='1
' or '1'='1 /*
' or 1 /*
  • pomocou týchto vložených SQL kódov, som sa snažil, obísť meno používateľa vložením do pola login a heslo vložením do pola password.
   ' or SELECT * FROM users WHERE id='1' /*
   ' or SELECT * FROM users WHERE username='admin' /*
  • tieto vložené SQL kódy slúžia na výpis riadku tabuľky users, kde premenná id=1 a kde premenná username='admin'
   '><script>alert('ak sa zobrazi okno s touto spravou, tak som objavil XSS zranitelnost ')</script>
   '><script>alert('ak sa zobrazi okno s touto spravou, tak som objavil XSS zranitelnost ')</script> /*
   '><script>alert('xss',document.location="http://www.google.com")</script> /*
  • internetový prehliadač by mal vykonať javascript alert(‘’); a otvoriť okno s textom xss a následne otvoriť stránku http://www.google.com
   '><script>document.location="http://www.google.com"</script> /*
  • internetový prehliadač by mal vykonať javascript document.location=““; a otvoriť stránku http://www.google.com

Javascript kódy som vkladal do prihlasovacích formulárov ale aj do vyhľadávacích polí. Keďže webová aplikácia nereagovala na žiaden z týchto vložených a v teórii spomenutých kódov, tak som usúdil, že moje znalosti manuálneho vkladania SQL a javascript kódov sú nedostačujúce, pretože program Nessus odhalil možnosti zraniteľností SQL injection a XSS.

Záver

Vo svojej bakalárskej práci som sa zaoberal problematikou zabezpečenia webového sídla proti rôznym útokom. V teoretickej časti sú popísané typy penetračných testovaní ako aj typy jednotlivých útokov SQL injection, XSS a DoS. V praktickej časti sa mi podarilo odhaliť niektoré zraniteľnosti fakultného serveru pomocou testovacieho programu Nessus. Na základe nadobudnutých poznatkov, návrhov poskytnutých programom Nessus a verejným zoznamom zraniteľností (CVE) som popísal možnosti prevencie týchto zraniteľností. Pokúšal som sa vykonať aj manuálne testovanie fakultného serveru, t.j. bez použitia programov na automatické zadávanie testovacích kódov, avšak týmto spôsobom testovania som neodhalil žiadnu zraniteľnosť. Z toho možno usudzovať, že v dnešnej dobe sú úspešné manuálne vykonávané útoky prakticky nemožné a teda bez použitia automaticky zadávaných kódov pomocou pripravených programov je útok veľmi sťažený.

Návrhy na ochranu webového sídla a zdokumentované testy som poskytol správcovi univerzitnej siete.

Zoznam použitej literatúry

  1. SANS TOP 25 Most Dangerous Programming Errors. SANS Institute [Online] 2010. [Dátum: 17.2. 2009] http://www.sans.org/top25-programming-errors
  2. Changes in MySQL 5.0.22. MySQL AB [Online] 2006. [Dátum: 23.2. 2010] http://dev.mysql.com/doc/refman/5.0/en/news-5-0-22.html
  3. Using SQLBrute to brute force data from a blind SQL injection point. Justin Clarke [Online] 2006. [Dátum: 23.2. 2010] http://www.justinclarke.com/archives/2006/03/sqlbrute.html
  4. Getting the syntax right. Imperva [Online] 2008. [Dátum: 23.2. 2010] http://www.imperva.com/resources/adc/blind_sql_server_injection.html#getting_syntax_right
  5. How Not To Get Stuck. The Codist [Online] 2007. [Dátum: 24.2. 2010] http://thecodist.com/article/sql-injections-how-not-to-get-stuck
  6. Owasp testing guide v2. OWASP. [Online] 2010. [Dátum: 17.2. 2009] http://www.owasp.org/index.php/Image:OWASP_Testing_Guide_v2_pdf.zip
  7. Najpopularnejsie utoky xss a csrf na vyslni. Blog.synopsi [Online] 2008. [Dátum 30.3. 2009] http://blog.synopsi.com/2007-12-12/najpopularnejsie-utoky-xss-a-csrf-na-vyslni
  8. A Comprehensive Security Assessment. IEEE Security & Privacy [Online] 2008. [Dátum 5.4. 2010] http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5396322
  9. Distributed Denial of Service Attack Tools. SANS Institute [Online] 2010. [Dátum: 15.4. 2010] http://www.sans.org/resources/idfaq/trinoo.php
  10. Cyber Security Tip ST04-015. United States Computer Emergency Readiness Team [Online] 2007. [Dátum: 20.4. 2010] http://www.us-cert.gov/cas/tips/ST04-015.html.
  11. Types of DDoS Attacks. [Online] 2001. [Dátum: 20.2. 2009] http://anml.iu.edu/ddos/types.html.
  12. CERT Advisory CA-1997-28 IP Denial-of-Service Attacks. CERT [Online] 1998. [Dátum: 10.9. 2009] http://www.cert.org/advisories/CA-1997-28.html
  13. The "stacheldraht" distributed denial of service attack tool. [Online] 1999. [Dátum: 10.9. 2009] http://staff.washington.edu/dittrich/misc/stacheldraht.analysis.txt
  14. RockYou Hacker: 30% of Sites Store Plain Text Passwords. New York Times [Online] 2009. [Dátum: 1.6. 2010] http://www.nytimes.com/external/readwriteweb/2009/12/16/16readwriteweb-rockyou-hacker-30-of-sites-store-plain-text-13200.html
  15. Obama site hacked, Redirected to Hillary Clinton. ZDNet [Online] 2008. [Dátum: 1.6. 2010] http://www.zdnet.com/blog/security/obama-site-hacked-redirected-to-hillary-clinton/1042
  16. Before the Gunfire, Cyberattacks. The New York Times [Online] 2008. [Dátum: 1.6. 2010] http://www.nytimes.com/2008/08/13/technology/13cyber.html?em
  17. Ongoing denial-of-service attack. Twitter Status Blog [Online] 2009. [Dátum: 1.6. 2010] http://status.twitter.com/post/157191978/ongoing-denial-of-service-attack