2009-07-31 17 views
5

Zapytałem "How to run a executable file from a web page?"Co zaskakujące, kod JavaScript może wykonać każdy żądany proces. Czemu?

Wiele osób mówiło mi, że to niemożliwe, ale mój kolega znalazł fragment kodu JavaScript, który mógłby wykonać dowolny proces. Nie wierzę, że ActiveX jest tak niebezpieczny.

Jak to się mogło stać? Dlaczego nie jest to zabronione przez IE?

<SCRIPT language=JavaScript> 
    function Run(strPath) { 

    try { 
    var objShell = new ActiveXObject("wscript.shell"); 
    objShell.Run(strPath); 
    objShell = null; 
    } 
    catch (e){alert('Can not find "'+strPath) 

    } 
    } 
    </SCRIPT> 

    <BUTTON class=button onclick="Run('notepad')">notepad</BUTTON><br> 
    <BUTTON class=button onclick="Run('mspaint')">mspaint</BUTTON><br> 
    <BUTTON class=button onclick="Run('calc')">calc</BUTTON><br> 
    <BUTTON class=button onclick="Run('format c:')">format c:</BUTTON><br> 
+1

Przyjaciel nawet zapisał plik wykonywalny w 'C: /' przy pomocy ActiveXObject. I nie było specjalnego poziomu ograniczeń. Ustawienia pochodziły z "fabryki". –

+0

Dlaczego jest to możliwe? Ponieważ IE jest naprawdę ciężki! –

Odpowiedz

6

Chociaż można to zrobić IE blokuje go mówiąc, że nie jest

ActiveX Control próbuje uzyskać dostęp ci komputer, kliknij tutaj, aby wyświetlić opcje

Można tylko uruchom je, jeśli użytkownik końcowy na to zezwala i mam nadzieję, że ludzie są na tyle sprytni, aby nie pozwolić mu działać. Jeśli pozwolisz na to, zawsze pojawi się kolejny alert z pytaniem, czy naprawdę chcesz to uruchomić, aby wokół niego było wystarczająco dużo zabezpieczeń.

1

Czy próbowałeś tego?

wscript.shell nie może być używany w ten sposób ze strony internetowej ładowanej zdalnie. Jeśli załadowałeś stronę z lokalnego pliku lub zmieniłeś ustawienia bezpieczeństwa, może to zadziałać, ale nie będzie działać po załadowaniu ze zdalnego serwera WWW.

+0

To samo stanie się, jeśli uruchomisz go z pliku: // – AutomatedTester

+0

Nie, działa również zdalnie. Pytano tylko, czy użytkownik chciałby uruchomić activex, który większość ludzi wybrałaby "TAK" – ablmf

+0

Nie działa na żadnym z komputerów, na których go wypróbowałem. Twoja musi być skonfigurowana inaczej – jcoder

0

Dobrą wiadomością jest to, że IE8 blokuje to zachowanie, nawet z plikiem lokalnym. Nie wiem o IE7, choć wyobrażam sobie, że tak też jest. Wątpię, by działało to ze zdalnym plikiem, nawet z IE6, w przeciwnym razie doszłoby do jakiegoś poważnego incydentu i wydano by łatkę.

+0

Nie, to nieprawda. Testowałem to na IE8. Po prostu zapytaj użytkownika, czy chciałby uruchomić activex. – ablmf

3

Pliki lokalne są uruchamiane w innym środowisku niż pliki zdalne, więc będzie to działać, jeśli zapiszesz plik jako plik HTML i otworzysz go z komputera, jeśli prześlesz go na serwer i spróbujesz go uruchomić to nie zadziała.

0

To zależy od konfiguracji zabezpieczeń przeglądarki. W niektórych przypadkach ten spokój kodu nie zostanie wykonany. Ale w każdym razie użytkownik zostanie poproszony o zezwolenie ActiveX na uruchamianie procesu zewnętrznego:

ActiveX Control is trying to access you computer, click here for options 
Powiązane problemy