Paprasčiausi JavaScript "nulaužimai"

JavaScript tai interneto puslapių skriptinimo kalba kurią interpretuoja visos interneto naršyklės. Seniau labai daug nulaužimų rėmėsi šios kalbos tam tikrais neišvengiamais trūkumais dabar 99,99% interneto puslapių tiesiog nenaudoja šios kalbos su saugumu susijusiems dalykams (pvz. login). Todėl čia aprašomi dalykai tiks vargu ar kam daugiau kaip "try to hack" tipo puslapiams-žaidimams. Vis dėl to galima pamatyti pačius principus kaip vykdomi įsilaužimai į puslapius.

Bazinė JavaScript pamokėlė

keisti

Sukuriame tekstinį failą testas.html, į jį įrašom:

<html>
<body> <!--būtina interneto puslapio dalis-->
<h1>Mano pirmasis JavaScript</h1> <!--skyriaus antraštė 1 lygio-->
<p><!--pastraipos pradžia-->

<!--paprastai minimas tik šis blokas, kuris ir yra JavaScript:-->
<script type="text/javascript"> <!--JavaScript pradžia-->
document.write('<b>Hello World</b>'); //pats skriptas, nieko nedaro daugiau tik parašo '''Hello World''', pajuodinta, nes su <b>
</script><!-- JavaScript pabaiga-->

</p> <!--pastraipos pabaiga-->
</body>
</html> <!--HTML puslapio pabaiga-->

Štai ir sukūrėm paprasčiausią puslapiuką kuris turi JavaScript. Jį apžiūrėti galima atidarius su interneto naršykle.

Dažnai galima rasti tokių skriptų:

<script type="text/javascript" src="myjava.js">
</script>

Tai reiškia, kad skriptas yra atskirame faile myjava.js

Čia kitas JavaScript kuris nuskaito ir sudeda du skaičius ir įdeda juos į puslapį atgal:

<html>
  <head>
        <title>Input tutorial</title>
        <script language="javascript">
                function addNumbers()
                {
                        var val1 = parseInt(document.getElementById("value1").value);
                        var val2 = parseInt(document.getElementById("value2").value);
                        var ansD = document.getElementById("answer");
                        ansD.value = val1 + val2;
                }
        </script>
  </head>
  <body>
        value1 = <input type="text" id="value1" name="value1" value="1"/>
        value2 = <input type="text" id="value2" name="value2" value="2"/>
        <input type="button" name="Sumbit" value="Click here" onclick="javascript:addNumbers()"/>
        Answer = <input type="text" id="answer" name="answer" value=""/>
  </body>
</html>

Čia parašyta JavaScript funkcija addNumbers() kuri aktyvuojama tik paspaudus mygtuką. Trys kintamieji nuskaitomi pagal jų id (value1, value2, answer) su document.getElementById("") metodu kuris gražina objektą kurio vertė (.value) mus domina. O parseInt konvertuoja tekstą į skaičių. Body dalyje aprašomi skriptui reikiami mygtukai ir laukeliai. Jų tipas, id, pavadinimas (name) ir pradinė vertė (value).

Kodėl JavaScript nesaugu

keisti

Pagrindinis dalykas tas, kad visi JavaScript yra išsiunčiami į puslapio lankytojų kompiuterius ir tereikia poros papildomų paspaudimų naršyklėje norint juos pamatyti. Vadinasi įsilaužėlis gali pasižiūrėti ką jis gauna ir ten rasti labai naudingos informacijos. Vadinasi, bet koks puslapio kūrėjas nepagalvojęs jog jo skriptą matys visi gali pridėti į jį tokių dalykų kurių ten neturėtų būti. Pvz. tiesiog slaptažodžių.
Kitas dalykas, kad visados galima išsaugoti JavaScript pakeisti jį savo nuožiūra ir tik tada paleisti.
Įsilaužėlis gali perrašyti cookies su JavaScript.
Jei JavaScript nuskaito kintamuosius iš url pvz. taip:

http://www.epic-hole.com/login.html?Login=False

Tuos kintamuosius yra nesunku pakeisti.
Galiausiai pati sudėtingiausia technika yra injekuoti savo kurtą JavaScript į puslapį.

Paprasčiausias įsilaužimas

keisti

Čia puikus pvz.: http://www.try2hack.nl/levels/
Dauguma net neįsivaizduoja nuo ko pradėti. Tiems kas įsivaizduoja vargu ar bus sugadintas malonumas jei bus paaiškintas pats 1 lygis. Taigi panašu, kad pirmo lygio slaptažodis ar teisingas ar ne tikrinamas su JavaScript kodu, realybėje tai būtų labai bloga idėja. Pažiūrime koks tai kodas. Firefox naršyklėje paspaudžiame dešinį pelės mygtuką ir "View page Source". Atsidariusiame lange randame dalį kuri prasideda nuo:

<script type="text/javascript">

ir baigiasi su:

</script>

Kode galima rasti ir slaptažodį ir sekančio lygio adresą.

    <script type="text/javascript">
      function Try(passwd) {   
        if (passwd =="h4x0r") { //tikrinimas ar slaptažodis sutampa su teisingu kuris ir parašytas
          alert("Alright! On to level 2...");   
          location.href = "level2-xfdgnh.xhtml"; //nukreipimas į kitą lygį
        }
        else {
          alert("The password is incorrect. Please don't try again.");
          location.href = "http://www.disney.com/";
        }
      }
    </script>