DASAR WEB HACKING : SERANGAN XSS

Cross-Site Scripting atau XSS merupakan serangan yang melakukan injeksi script seperti JavaScript dan terkadang HTML. Penyerang menginjeksi malicious script dan script tersebut dieksekusi ketika korban membuka sebuah web page. serangan XSS ini berada pada sisi client (Client Side Attack).

Serangan cross-site scripting biasanya digunakan untuk mencuri cookie, session hijacking / pembajakan session, dan pembelokkan tujuan / malicious redirects. Kelemahan ini mudah didapat tapi susah untuk diatasi. Inilah alasannya mengapa XSS banyak ditemukan di berbagai website.

Tutorial: 
1. Buka xampp atau laragon untuk mengaktifkan apache


2. Tulis script berikut pada VCS :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Teknik Serangan XSS</title>
</head>
<body>
    <h1>Teknik Serangan XSS</h1>
    <form action="xss.php" method="post">
        Nama: <input type="text" name="nama"><br>
        Pesan: <textarea name="pesan"></textarea><br>
        <input type="submit" value="Submit">
    </form>
    <h2>Pesan:</h2>
    <div id="pesan">
        <?php
        if (isset($_POST['nama']) && isset($_POST['pesan'])) {
            $name = $_POST['nama'];
            $pesan = $_POST['pesan'];
            echo "<p><strong>$name</strong>: $pesan</p>";
        }
        ?>
    </div>
</body>
</html>


3. Buka browser dan akses file tersebut (http://localhost/xss.php)

4. Masukkan pada input nama script berikut: 
<script>alert('Hacked!');</script>



Setelah memasukkan script akan muncul pesan seperti dibawah ini:





Untuk menghindari serangan XSS, Anda harus memfilter dan membersihkan input pengguna sebelum menampilkannya kembali di halaman web. Berikut adalah modifikasi dari kode sebelumnya dengan penambahan fungsi htmlspecialchars() untuk mencegah XSS:

Ganti kode diatas dengan kode berikut:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Teknik Serangan XSS</title>
</head>
<body>
    <h1>Teknik Serangan XSS</h1>
    <form action="xss.php" method="post">
        Nama: <input type="text" name="nama"><br>
        Pesan: <textarea name="pesan"></textarea><br>
        <input type="submit" value="Submit">
    </form>
    <h2>Pesan:</h2>
    <div id="pesan">
        <?php
        if (isset($_POST['nama']) && isset($_POST['pesan'])) {
            $name = htmlspecialchars($_POST['nama'], ENT_QUOTES, 'UTF-8');
            $pesan = htmlspecialchars($_POST['pesan'], ENT_QUOTES, 'UTF-8');
            echo "<p><strong>$name</strong>: $pesan</p>";
        }
        ?>
    </div>
</body>
</html>


Hasil: 

Dampak dari Serangan XSS pada Kode di Atas

Meskipun kode diatas sudah mengimplementasikan langkah-langkah untuk mencegah serangan XSS dengan menggunakan fungsi htmlspecialchars(), penting untuk memahami dampak dari serangan XSS jika kode tersebut tidak memiliki sanitasi input. Berikut adalah penjelasan mengenai dampak dari serangan XSS dalam konteks kode di atas:

  1. Pencurian Cookie:

    • Dampak: Jika serangan XSS berhasil, penyerang dapat mencuri cookie sesi pengguna. Dengan cookie ini, penyerang dapat menyamar sebagai pengguna yang sah dan mengakses informasi sensitif atau mengambil alih akun pengguna.
    • Contoh: Penyerang dapat menyisipkan script seperti <script>document.write(document.cookie);</script>, yang akan menampilkan cookie pengguna.
  2. Pengambilalihan Akun:

    • Dampak: Dengan mencuri cookie sesi atau informasi lainnya, penyerang dapat mengakses akun pengguna tanpa izin. Ini dapat mengarah pada tindakan berbahaya, seperti perubahan kata sandi atau manipulasi data.
    • Contoh: Script XSS yang mencuri token sesi dapat digunakan oleh penyerang untuk login sebagai pengguna tersebut di perangkat lain.
  3. Defacement:

    • Dampak: Penyerang dapat mengubah tampilan halaman web, menambahkan konten yang tidak pantas atau berbahaya. Ini dapat merusak reputasi situs web dan membuat pengguna merasa tidak aman.
    • Contoh: Penyerang menyisipkan script yang mengubah konten halaman, seperti <script>document.body.innerHTML="This site is hacked!";</script>.
  4. Pengalihan ke Situs Berbahaya:

    • Dampak: Penyerang dapat mengarahkan pengguna ke situs phishing atau situs berbahaya lainnya, meningkatkan risiko pencurian informasi pribadi atau infeksi malware.
    • Contoh: Script seperti <script>window.location='http://malicious-site.com';</script> akan mengalihkan pengguna ke situs yang berbahaya.
  5. Pemerasan:

    • Dampak: Informasi yang dicuri melalui serangan XSS dapat digunakan oleh penyerang untuk memeras pengguna atau organisasi, mengancam untuk merilis informasi sensitif kecuali tuntutan mereka dipenuhi.
    • Contoh: Penyerang yang mencuri data sensitif bisa mengancam untuk mempublikasikan data tersebut kecuali mereka dibayar.
  6. Penurunan Kepercayaan:

    • Dampak: Serangan XSS yang berhasil dapat merusak reputasi situs web. Pengguna yang merasa tidak aman mungkin akan berhenti menggunakan situs tersebut, dan ini bisa berdampak pada bisnis atau organisasi.
    • Contoh: Pengguna yang mengetahui bahwa situs tersebut telah disusupi mungkin akan menyebarkan berita negatif, mengurangi kepercayaan publik terhadap situs tersebut.

Dampak pada Kode yang Tidak Disanitasi

Jika kode di atas tidak menggunakan htmlspecialchars(), seperti berikut ini:

<?php
if (isset($_POST['nama']) && isset($_POST['pesan'])) {
    $name = $_POST['nama'];
    $pesan = $_POST['pesan'];
    echo "<p><strong>$name</strong>: $pesan</p>";
}
?>

Maka input seperti berikut ini dapat dieksekusi oleh browser:

Nama: <script>alert('Hacked!');</script>
Pesan: <script>alert('Pesan Hacked!');</script>

Ini akan menampilkan kotak dialog "Hacked!" dan "Pesan Hacked!" di browser pengguna, menunjukkan bahwa kode injeksi berhasil dieksekusi. Jika penyerang menggunakan payload yang lebih berbahaya, seperti mencuri cookie atau mengalihkan halaman, dampaknya bisa jauh lebih serius.

Dengan demikian, sanitasi input adalah langkah penting dalam melindungi aplikasi web dari serangan XSS dan menjaga keamanan serta integritas situs web.



Komentar

Postingan populer dari blog ini

Getting Started with NumPy - Jupyter Notebook

MongoDB : Basis Data Dokumen Terkemuka

MongoDB dengan Python