Mengenal XSS (Cross Site Scripting) | Tegal1337

Avatar photo

Hello sobat bounty hunter.. pada kesempatan kali ini saya ingin menuliskan salah satu exploit favorit saya di dunia underground, yakni XSS.

Apa sih itu XSS ?

XSS (Cross Site Scripting) adalah salah satu jenis serangan yang sangat umum terjadi di web-web manapun, bahkan sekelas Google, Yahoo, Facebook, Etc. jika kita lihat laporan bug didalamnya, kita akan menemukan banyak sekali laporan tentang XSS ini.

Terus impact dari penyerangan ini juga bisa dikatakan sangat berbahaya diantaranya Stealing Cookie (pencurian cookie), Session Hijacking (pembajakan session), Malicious Redirect (pembelokan tujuan) dan masih banyak lagi.

Typical dari serangan ini ialah melakukan injeksi kode javascript pada sebuah website (target) yang nantinya browser akan mengeksekusi kode/script yang sudah diinjeksi oleh attacker (penyerang) tadi.

Oh iya kenapa disebut XSS bukan CSS ? pada dasarnya CSS sudah lebih familiar pada dunia desain web yaitu Cascading Style Sheet, maka dipilihlah XSS itu sendiri

Ok setelah sedikit memahami tentang pengertian XSS, sekarang kita lanjut pada bagian Testing / Percobaan.

Silahkan buka lab mini saya https://dalpan.co/lab/xss/form.php

Isi dari file form.php tersebut adalah :

<html>
<head>
<title>Mengenal XSS | Tegal1337</title>
</head>
<body>
<h1>Mengenal XSS | Tegal1337</h1>
<form action="" method="post">
<input type="text" name="q" value="" />
<input type="submit" value="Search" />
</form>
<?php
if (isset($_POST['q'])) echo 'Kamu mencari: '. $_POST['q'];
?>
</body>
</html>

Kita coba tuliskan simple payload berikut :

<script>alert(document.domain);</script>

Nantinya akan muncul pop up seperti ini :

Sudah jelas script/kode yang kita inputkan tadi tereksekusi, ini menandakan web tersebut vuln terhadap serangan XSS ini.

Selanjutnya, bagaimana cara mencegah atau memperbaiki bug XSS ini ?
Untuk memperbaiki (patching) bug ini kita bisa gunakan PHP Function yang nantinya akan menfilter sebuah tag yang diinputkan.

  • htmlspecialchars() yang mentransmutasikan semua karakter “<” dan “>” ke “& lt;” dan “& gt”.
  • Atau htmlentities(), yang menggantikan semua karakter dalam entitas yang sesuai.

PHP Code :


<?

$input = '<script>alert(1);</script>';

echo htmlspecialchars($input) . '<br />';
echo htmlentities($input);

?>

Contoh htmlentities() :


<?php
$str = "A 'quote' is <b>bold</b>";

echo htmlentities($str);
echo htmlentities($str, ENT_QUOTES);
?>

Maka nantinya akan menghasilkan output seperti berikut :

Pertama : A ‘quote’ is <b>bold</b>
Kedua : A &#039;quote&#039; is <b>bold</b>

Contoh htmlspecialchars() :


<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new;
?>

Output code diatas : <a href=’test’>Test</a>

Strip_tags() function, sebagai gantinya, menghapus semua elemen HTML, kecuali elemen tertentu yang perlu diizinkan seperti <i>, <b> atau <p>.

Contoh strip_tags () :


<?php
$text = '<p>Test paragraph.</p><!-- Comment --> Other text';
echo strip_tags($text);

echo "n";
// allow <p>
echo strip_tags($text, '<p>');
?>

Sekarang kita tahu setidaknya bahwa dengan fungsi-fungsi PHP diatas bisa menanggulangi resiko serangan XSS walaupun masih ada bebera code bypass nya.

Mungkin itu saja yang bisa saya jelaskan, kurang lebihnya mohon dimaafkan 🙂

Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post

Atribut Pemrograman Bahasa C++ | Tegal1337

Next Post

[BUG BOUNTY] XSS File Upload Vulnerability

Related Posts