Session Handling Action - Istunnonhallinnan laajentaminen Burpilla lisäosien avulla
Yksi Burpin Extender API:n keskeisistä osista on SessionHandlingAction-rajapinta, jota voidaan käyttää istunnon käsittelytoimintojen (session handling action) luomiseen, jotka laajentavat jo olemassa olevaa istunnon hallintaa BurpSuitessa. Näitä toimintoja voidaan määrittää suoritettavaksi tiettyinä kohtina HTTP-pyyntöjen käsittelyn aikana, mahdollistaen tehtävien automatisoinnin, kuten uudelleenautentikoinnin, tokenien (kuten CSRF) hallinnan tai mukautettujen otsakkeiden (header) lisäämisen.
Istunnon hallintatoiminnot integroituvat BurpSuiten pyyntöjen käsittelyprosessiin. Niitä voidaan määrittää Istunnon hallintasäännöissä (session handling rules), jotka määrittävät, miten ja milloin näitä toimintoja kutsutaan. Tämä mahdollistaa saumattoman integroinnin työkalujen, kuten Proxy, Repeater, Intruder ja Scanner, kanssa.
Mukautetut istunnon hallintatoiminnot ovat hyödyllisiä tilanteissa, kuten:
- Automatisoitu uudelleenautentikointi: Kun istunto vanhenee, laajennus voi kirjautua automaattisesti takaisin sisään.
- Tokenien yms. hallinta: Toksujen (kuten vaikka CSRF-tokenit) erottaminen aiemmista vastauksista ja niiden lisääminen seuraaviin pyyntöihin.
- Monimutkaiset tunnistautumis-flow:t: Burpin makroilla ei pääse kovin pitkälle jos tunnistautumis-flow:t ovat monimutkaisia.
- Dynaaminen pyynnön muokkaus: Pyyntöjen muokkaaminen tiettyjen kriteerien tai tilan perusteella.
Tässä moduulissa näytämme, miten integroida mukautettu istunnonkäsittelylogiikka BurpSuiteen käyttäen Jythonia. Käymme läpi Jython-laajennuksen luomisen, joka istunnon vanhennuttua kirjautuu automaattisesti uudestaan web-sovellukseen lähettämällä POST-pyynnön hankalahkoon /login endpointtiin.
Ratkaistavana oleva ongelma
Jos haluat seurata mukana jo nyt, voit käynnistää labran tämän sivun alaosasta.
Okei, ensisilmäyksellä kirjautumislomake vaikuttaa varsin yksinkertaiselta.

Kirjaudumme sisään, rastitamme ruudun, meidät kirjataan ulos. Okei.

Hermot ei kestä tehdä tätä manuaalisesti 100 kertaa. Haluamme, että Burp pitää meidät kirjautuneena sisään samalla kun Intruder lähettää 100 pyyntöä kutakin ruutua kohti niin, että lisäämme vain numeroa X-akselille ja Y-akselille.
Okei, tarvitsemme siis session handling -makron lähettämään kirjautumispyynnön. Sehän on helppoa. Katsotaanpa pyyntöä.
POST /login HTTP/2
Host: www-5xf7ztxfqo.ha-target.com
Cookie: HakatemiaLabSessionAffinity=f4f5761d0a3cdae05aee677ec9e940c3|766d492e152f0eb48bca4df922227d80; session=721b2d8f-e5d3-4d19-9417-865472817ab6
...
username=john.doe%40example.com&password=s3cr3t×tamp=1732040519&checksum=9f76872042fb7bae07c1c85d8ee7fc6dOkei... Näyttää hieman huolestuttavalta... Aikaleima? Tarkistussumma? Katsotaan HTML-lähdekoodia nähdäksemme, mitä täällä tapahtuu. Napsauta hiiren kakkospainikkeella, "Näytä lähdekoodi"...
1<body>
2 <h1>Login</h1>
3 <p>Username is: [email protected]</p>
4 <p>Password is: s3cr3t</p>
5 <form method="post" action="/login" onsubmit="return addHashData(this)">
6 <label for="username">Username:</label>
7 <input type="text" id="username" name="username" required />
8 <label for="password">Password:</label>
9 <input type="password" id="password" name="password" required />
10
11 <input type="hidden" name="timestamp" id="timestamp" />
12 <input type="hidden" name="checksum" id="checksum" />
13
14 <button type="submit">Login</button>
15 </form>
16
17
18 <script>
19 function addHashData(form) {
20 const timestamp = Math.floor(Date.now() / 1000);
21 const username = form.username.value;
22 const password = form.password.value;
23
24 form.timestamp.value = timestamp;
25 const dataToHash = username + password + timestamp;
26 form.checksum.value = CryptoJS.MD5(dataToHash).toString();
27
28 return true;
29 }
30 </script>
31
32 </body>Okei, joten nyt voimme nähdä, miten nuo arvot lasketaan. Aikaleima on epoch (eli unix-aikaleima, eli kuluneet sekunnit vuoden 1970 alusta). Ja tarkistussumma on MD5-tarkistussumma kaikista kolmesta konkatenoituna seuraavassa järjestyksessä: käyttäjänimi, salasana, aikaleima.
Vaikuttaa siltä, että makro ei tällä kertaa riitä, meidän täytyy kääriä hihat ja kirjoittaa laajennus.
Hakkeroinnin oppiminen alkaa tästä
Sadat interaktiiviset kurssit, virtuaalilabrat ja CTF-haasteet selaimessasi. Aloita ilmainen kokeilu ilman korttitietoja.