Rabu, 26 Juni 2024

Demo Bypass

 

 Demo Bypass Login dengan SQL Injection

Bypass Login dengan SQL Injection:

SQL Injection adalah teknik serangan di mana seorang penyerang menyuntikkan kode SQL berbahaya ke dalam kueri yang dieksekusi oleh aplikasi. Salah satu contoh umum dari serangan ini adalah bypass login, di mana penyerang mencoba masuk ke sistem tanpa kredensial yang sah.

Contoh skenario bypass login dengan SQL Injection:

  1. Sebuah formulir login menerima input dari pengguna (username dan password).
  2. Aplikasi membentuk kueri SQL berdasarkan input pengguna tanpa melakukan validasi atau sanitasi yang memadai.
  3. Penyerang memasukkan string injeksi seperti admin' OR '1'='1 ke dalam field username atau password.

Misalnya, aplikasi mungkin memiliki kueri SQL seperti berikut:

SELECT * FROM users WHERE username = 'admin' AND password = 'password';

Jika input tidak divalidasi dan penyerang memasukkan admin' -- pada field username dan password pada field password, maka kueri akan menjadi:

SELECT * FROM users WHERE username = 'admin' -- ' AND password = 'password';

Demo:
Persiapan
1. Setup Web Server dan Database: Anda memerlukan server lokal seperti XAMPP atau Laragon
untuk menjalankan aplikasi web dan database MySQL.
2. Database Setup:
 - Buat database bernama ‘demo_db’.
 - Buat tabel `users` dengan kolom `id`, `username`, dan `password` atau dengan command berikut:
 CREATE DATABASE demo_db;
 USE demo_db;
 CREATE TABLE users (
 id INT AUTO_INCREMENT PRIMARY KEY,
 username VARCHAR(50) NOT NULL,
 password VARCHAR(50) NOT NULL
 );
 INSERT INTO users (username, password) VALUES ('admin', 'adminpass');
 INSERT INTO users (username, password) VALUES ('user', 'userpass');


Langkah-Langkah Demo
1. Buat Formulir Login
Buat file `login.html` untuk menampilkan formulir login sederhana.
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Login Page</title>
</head>
<body>
 <h2>Login</h2>
 <form action="login.php" method="post">
 <label for="username">Username:</label>
 <input type="text" id="username" name="username"><br><br>
 <label for="password">Password:</label>
 <input type="password" id="password" name="password"><br><br>
 <input type="submit" value="Login">
 </form>
</body>
</html>

2. Buat Skrip Login yang Rentan Buat file `login.php` yang mengandung kerentanan SQL Injection.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "demo_db";
// Membuat koneksi ke database
$conn = new mysqli($servername, $username, $password, $dbname);
// Mengecek koneksi
if ($conn->connect_error) {
    die("Koneksi gagal: " . $conn->connect_error);
   }
   // Mengambil input dari formulir
   $user = $_POST['username'];
   $pass = $_POST['password'];
   // Query yang rentan terhadap SQL Injection
   $sql = "SELECT * FROM users WHERE username='$user' AND password='$pass'";
   $result = $conn->query($sql);
   if ($result->num_rows > 0) {
    echo "Login berhasil!";
   } else {
    echo "Login gagal!";
   }
   $conn->close();
   ?>

Maka Tampilannya akan seperti ini:



3. Menunjukkan Kerentanan Jalankan aplikasi dan buka `login.html` di browser. Masukkan input berikut untuk melakukan serangan bypass login: - Username: ' OR '1'='1 - Password: ' OR '1'='1





4. Hasil Eksploitasi Setelah mengklik tombol login, Anda akan melihat pesan "Login berhasil!" meskipun tidak memasukkan kredensial yang valid. Hal ini terjadi karena query SQL menjadi: 
SELECT * FROM users WHERE username='' OR '1'='1' AND password='' OR '1'='1'
Query ini selalu benar dan mengembalikan semua baris dalam tabel `users`.

5. Bentuk mitigasi yang bisa dilakukan
Untuk menghindari serangan SQL Injection, Anda bisa menggunakan prepared statements. Berikut adalah versi yang sudah diperbaiki dari script PHP Anda menggunakan prepared statements:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "demo_db";

// Membuat koneksi ke database
$conn = new mysqli($servername, $username, $password, $dbname);

// Mengecek koneksi
if ($conn->connect_error) {
    die("Koneksi gagal: " . $conn->connect_error);
}

// Mengambil input dari formulir
$user = $_POST['username'];
$pass = $_POST['password'];

// Menyiapkan statement SQL dengan parameter
$stmt = $conn->prepare("SELECT * FROM users WHERE username=? AND password=?");
$stmt->bind_param("ss", $user, $pass);

// Menjalankan statement
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    echo "Login berhasil!";
} else {
    echo "Login gagal!";
}

// Menutup statement dan koneksi
$stmt->close();
$conn->close();
?>

Dalam script yang diperbaiki di atas, "prepare" dan "bind_param" digunakan untuk mempersiapkan dan mengikat parameter input pengguna ke statement SQL. Ini memastikan bahwa input pengguna tidak dapat mengubah struktur SQL dan dengan demikian mencegah serangan SQL Injection.



Dampak dari Serangan SQL Injection:

  1. Akses Tidak Sah:

    • Penyerang dapat mengakses informasi yang dilindungi tanpa perlu kredensial yang valid.
    • Ini bisa termasuk informasi sensitif seperti data pribadi pengguna, informasi keuangan, dll.
  2. Kerusakan dan Manipulasi Data:

    • Penyerang dapat mengubah, menghapus, atau menyisipkan data dalam database.
    • Ini bisa merusak integritas data dan menyebabkan kehilangan data penting.
  3. Pengambilalihan Kendali Sistem:

    • Dalam beberapa kasus, SQL Injection dapat digunakan untuk mendapatkan akses administratif ke sistem.
    • Penyerang bisa mendapatkan kendali penuh atas server basis data dan aplikasi.
  4. Kompromi Keamanan:

    • Penyerang dapat menggunakan informasi yang diperoleh dari serangan SQL Injection untuk melancarkan serangan lebih lanjut.
    • Ini bisa termasuk serangan phishing, malware, atau serangan berbasis jaringan lainnya.
  5. Dampak Finansial dan Reputasi:

    • Kehilangan data atau pelanggaran keamanan bisa berdampak signifikan secara finansial bagi organisasi.
    • Reputasi perusahaan juga bisa rusak, menyebabkan kehilangan kepercayaan dari pelanggan dan mitra bisnis.

Cara Menanggulangi SQL Injection:

  1. Gunakan Prepared Statements (Parameterized Queries): Prepared statements memastikan bahwa input pengguna diperlakukan sebagai data, bukan bagian dari kueri SQL. Ini adalah metode paling efektif untuk mencegah SQL Injection.
  2. Validasi dan Sanitasi Input: Lakukan validasi dan sanitasi semua input pengguna. Hanya izinkan karakter dan format yang diharapkan.
  3. Penggunaan ORM (Object-Relational Mapping): ORM seperti Hibernate atau Entity Framework dapat membantu mengabstraksi interaksi basis data dan mengurangi risiko SQL Injection.
  4. Pembatasan Hak Akses: Batasi hak akses basis data hanya untuk operasi yang diperlukan oleh aplikasi. Jangan gunakan akun basis data dengan hak administratif untuk operasi biasa.
  5. Penggunaan WAF (Web Application Firewall): WAF dapat mendeteksi dan memblokir serangan SQL Injection berdasarkan pola lalu lintas jaringan yang mencurigakan.
  6. Pemantauan dan Logging: Pantau dan log semua aktivitas basis data untuk mendeteksi anomali dan upaya serangan.
  7. Pembaruan dan Patch: Pastikan semua perangkat lunak, termasuk server basis data dan aplikasi web, selalu diperbarui dengan patch keamanan terbaru.
  8. Pendidikan dan Pelatihan: Berikan pendidikan dan pelatihan kepada pengembang tentang praktik terbaik keamanan aplikasi dan ancaman SQL Injection.

Rabu, 19 Juni 2024

XSS (Cross-Site Scripting)

 XSS (Cross-Site Scripting) adalah salah satu jenis kerentanan keamanan web yang memungkinkan penyerang menyisipkan skrip berbahaya ke dalam halaman web yang dilihat oleh pengguna lain. Serangan ini terjadi ketika aplikasi web tidak melakukan validasi atau penyaringan input dari pengguna dengan benar.

Ada tiga jenis utama XSS:

  1. Stored XSS: Pada jenis ini, skrip berbahaya disimpan secara permanen di server aplikasi, misalnya di basis data. Ketika pengguna mengakses data tersebut, skrip berbahaya akan dijalankan oleh browser pengguna. Contoh umum adalah komentar di forum atau blog yang mengandung skrip berbahaya.

  2. Reflected XSS: Jenis ini terjadi ketika skrip berbahaya dikirimkan sebagai bagian dari permintaan HTTP dan "dipantulkan" kembali oleh server dalam responsnya. Skrip tersebut tidak disimpan di server tetapi dijalankan langsung oleh browser ketika respons diterima. Ini sering kali dilakukan melalui URL yang mengandung skrip berbahaya yang dikirimkan kepada korban.

  3. DOM-based XSS: Serangan ini terjadi ketika skrip berbahaya memodifikasi Document Object Model (DOM) di sisi klien. Skrip tersebut tidak pernah mencapai server, tetapi dijalankan sepenuhnya oleh browser pengguna dengan memanipulasi halaman web melalui JavaScript.

Dampak dari serangan XSS dapat sangat beragam, mulai dari pencurian cookie pengguna dan data sesi hingga melakukan tindakan atas nama pengguna yang sah, seperti mengirim pesan atau mengubah pengaturan.

Untuk melindungi aplikasi web dari serangan XSS, beberapa langkah yang dapat diambil antara lain:

  • Validasi dan penyaringan input: Pastikan semua input dari pengguna divalidasi dan disaring dengan benar.
  • Encoding output: Gunakan encoding yang tepat saat menampilkan data dari pengguna di halaman web.
  • Menggunakan Content Security Policy (CSP): Tetapkan kebijakan keamanan yang membatasi sumber daya apa saja yang dapat dimuat oleh halaman web.
  • Memanfaatkan framework keamanan: Gunakan framework atau pustaka yang sudah memiliki fitur keamanan bawaan untuk melindungi dari XSS.


Contoh Kasus: Formulir Komentar Sederhana

Misalkan kita memiliki sebuah halaman web dengan formulir komentar sederhana yang memungkinkan pengguna untuk mengirimkan nama dan pesan mereka. Berikut adalah kode HTML dan PHP sebelum dilakukan perbaikan keamanan.


Kode Sebelum Perubahan

<!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>

Hasil



Pada kode di atas, input dari pengguna langsung ditampilkan tanpa sanitasi. Ini memungkinkan penyerang menyisipkan kode JavaScript berbahaya dalam kolom nama atau pesan. Misalnya, jika seorang penyerang memasukkan `<script>alert('XSS');</script>` sebagai nama atau pesan, skrip tersebut akan dieksekusi oleh browser pengguna lain yang melihat pesan tersebut.


Dampak dari Serangan XSS

Beberapa dampak potensial dari serangan XSS meliputi:

1. Pencurian Cookie : Penyerang dapat mencuri cookie sesi pengguna untuk mengambil alih akun pengguna.

2. Pemalsuan Konten : Penyerang dapat menyisipkan konten palsu untuk menipu pengguna.

3. Pengalihan ke Situs Berbahaya : Penyerang dapat mengarahkan pengguna ke situs web berbahaya tanpa sepengetahuan mereka.

4. Defacement : Mengubah tampilan halaman web, sering kali untuk menyebarkan pesan tertentu.

5. Eksekusi Kode Arbitrer : Menjalankan skrip lain yang dapat mengakibatkan berbagai serangan tambahan.


Memperbaiki Kode untuk Mencegah XSS

Untuk mencegah serangan XSS, kita harus memastikan bahwa input dari pengguna tidak dieksekusi sebagai kode. Ini bisa dilakukan dengan menggunakan fungsi `htmlspecialchars()` di PHP untuk mengonversi karakter-karakter khusus menjadi entitas HTML.

Kode Setelah Perubahan

<!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


Pada kode yang telah diperbaiki, kita menggunakan fungsi `htmlspecialchars()` untuk mengonversi karakter khusus seperti `<`, `>`, dan `&` menjadi entitas HTML (`&lt;`, `&gt;`, dan `&amp;`). Dengan begitu, input dari pengguna akan ditampilkan sebagai teks biasa dan tidak akan dieksekusi sebagai kode.


Langkah-Langkah Pencegahan Tambahan

Selain menggunakan htmlspecialchars(), ada beberapa langkah tambahan yang bisa diambil untuk mencegah serangan XSS:

  1. Validasi Input:

    • Pastikan semua input dari pengguna divalidasi sesuai dengan aturan yang ditetapkan. Misalnya, jika sebuah kolom hanya boleh berisi angka, pastikan input tersebut adalah angka.
    • Gunakan filter input seperti filter_var() di PHP untuk memastikan input sesuai dengan format yang diharapkan.
  2. Gunakan Header Keamanan:

    • Gunakan header keamanan seperti Content-Security-Policy (CSP) untuk membatasi sumber konten yang dapat dieksekusi di halaman web Anda.
    • Contoh: header("Content-Security-Policy: default-src 'self'; script-src 'self'");
  3. Hindari Penyisipan HTML Langsung:

    • Hindari menggunakan metode yang menyisipkan HTML langsung dari input pengguna, seperti innerHTML di JavaScript. Gunakan metode yang aman seperti textContent.
  4. Sanitasi Output:

    • Selain men-sanitasi input, sanitasi juga output yang ditampilkan di halaman. Gunakan fungsi seperti htmlspecialchars() setiap kali menampilkan data dari pengguna.
  5. Gunakan Framework Keamanan:

    • Gunakan framework atau library yang memiliki mekanisme pencegahan XSS built-in. Contoh: Laravel di PHP, Django di Python.









Rabu, 12 Juni 2024

UTS OSINT

 


UTS OSINT

 Challenge 1

- Lokasi dimana (alamat lengkap)?

  • SMAN 2 CIMAHI 

- Link Google Mapnya apa?

  • (Jl. KPAD Sriwijaya IX No.45A, RT.08/RW.16, Setiamanah, Kec. Cimahi Tengah, Kota Cimahi, Jawa Barat 40524)

Challenge 2

- Lokasi dimana (alamat lengkap)?

  • South Jakarta, Jakarta

- Link Google Mapnya apa?

  • Jl. Letjen M.T. Haryono, Kota Jakarta Selatan, Daerah Khusus Ibukota 




Challenge 3

- Lokasi dimana (kota dan negara)?

  • Istanbul, Turkey

- Link Google Mapnya apa?

  • https://maps.app.goo.gl/3pbNrfpcnX5yTFRT9

Challenge 4



- Lokasi dimana (alamat lengkap)?

  • Jl. Simpang Bukit, Bukik Batabuah, Kec. Candung, Kabupaten Agam, Sumatera Barat 26191

- Link Google Mapnya apa?

- https://maps.app.goo.gl/8GaGEYj5ZEG5kEb46


Challenge 5

https://youtu.be/6M0g9p-Ai8I?si=jdepX5dcP1O370hx

- Sebutkan nama asli dan nama populer orang yang membagikan uang 1 Juta Dollar dalam Video ini!

  • Kamil Bartosek alias Kazma Kazmitch

- Link Google Mapnya apa?

  • 6R56+J5, 289 22 Lysá nad Labem, Czechia







Selasa, 11 Juni 2024

Open Source Intelligence (OSINT)

Open Source Intelligence (OSINT)


Open Source Intelligence (OSINT) adalah proses pengumpulan dan analisis informasi yang tersedia 
untuk umum dari berbagsuai mber terbuka untuk tujuan intelijen. OSINT menggunakan informasi 
yang dapat diakses oleh publik dan secara sah, seperti situs web, media sosial, laporan publik, basis 
data, dan publikasi lainnya. OSINT digunakan oleh berbagai pihak, termasuk perusahaan, 
pemerintah, penegak hukum, dan profesional keamanan siber untuk mengumpulkan informasi yang 
relevan dan berharga.

Sumber-Sumber OSINT


Sumber-sumber OSINT dapat dikategorikan menjadi beberapa jenis, antara lain:
1. Sumber Media:
 - Situs berita, artikel, jurnal, dan laporan media.
2. Sumber Internet:
 - Situs web perusahaan, blog, forum, dan komunitas online.
3. Media Sosial:
 - Platform seperti Facebook, Twitter, LinkedIn, Instagram, dan lainnya.
4. Sumber Pemerintah:
 - Laporan publik, data sensus, basis data paten, dan dokumen hukum.
5. Sumber Akademik:
 - Publikasi penelitian, makalah akademik, dan jurnal.
6. Sumber Komersial:
 - Data yang diperoleh dari layanan komersial atau basis data berbayar.

Manfaat OSINT
1. Deteksi Ancaman dan Keamanan:
 - Mengidentifikasi ancaman keamanan siber seperti kebocoran data, aktivitas hacker, dan potensi 
serangan siber.
 - Memantau aktivitas kriminal dan teroris melalui sumber terbuka.
2. Pemantauan Media Sosial:
 - Mengawasi dan menganalisis aktivitas di media sosial untuk mendeteksi tren, opini publik, dan 
informasi penting lainnya.
 - Memantau reputasi perusahaan dan brand awareness.
3. Investigasi dan Penegakan Hukum:
 - Membantu penegak hukum dalam investigasi kriminal dengan mengumpulkan bukti dari sumber 
terbuka.
 - Menemukan informasi tentang individu atau kelompok yang terkait dengan aktivitas ilegal.
4. Intelijen Bisnis:
 - Mengumpulkan informasi tentang pesaing, pasar, dan tren industri.
 - Mendapatkan wawasan untuk strategi bisnis dan pengambilan keputusan.
5. Pengumpulan Informasi di Medan Perang:
 - Digunakan oleh militer dan agen intelijen untuk mengumpulkan informasi tentang medan perang 
dan aktivitas musuh.
6. Penilaian Risiko:
 - Menilai risiko bagi organisasi atau individu berdasarkan informasi yang tersedia secara terbuka.
 - Mengidentifikasi potensi kelemahan dan ancaman yang mungkin dihadapi.
7. Dukungan untuk Keputusan Pemerintah:
- Memberikan informasi yang diperlukan untuk pembuatan kebijakan dan keputusan strategis. 

  • Kerjakan challenge pada file terlampir
https://drive.google.com/file/d/1mrnpbxeCTLsXh8kIcsq8NmEkWhfVUIyg/view?usp=sharing

    • Challenge 1
    • - Dimana exact location (google pin maps) Tom Cruise melakukan stunt di video tersebut ? Berlokasi di Helsetkopen, Stranda, Norway (https://maps.app.goo.gl/g5DbJkaWLx2Np5Ky6)
      - Merk dan type Motor Trail yg dipakai ? Motor yang digunakan adalah honda crf 250r yang sudah dimodif.
      - Merk dan jenis sepatu yg dipakai ? 




        • Challenge 2
      Pin point map lokasi tsb, merupakan kunjungan kenegaraan Presiden Republik Indonesia kesebuah negara.


      Berlokasi di Australia. Merupakan kunjungan kenegaran bapak Presiden Joko Widodo ke Australia, kemungkinan ini keberangkatan menuju tanah air setelah melakukan kunjungan kenegaraan. Lokasi dekat dengan Hotel Moxy yang berlokasi dekat dengan Sydney Air Port



        • Challenge 3
      Negara mana? 

      Berlokasi Portugal, merupakan interior dari sebuah kereta metro bernama Porto Eurotram 

        • Challenge 4
      Lokasi dimana & Pin point map lokasi tsb?



        • Challenge 5
      Lokasi dimana & Pin point map lokasi tsb? 

      Merupakan kediaman dari seorang publik figur bernama Ahmad Dani, berlokasi di Jalan Pinang Emas VII No D 4 Pondok Indah, RT.12/RW.3, Pd. Pinang, Kec. Kby. Lama, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12310.  (https://maps.app.goo.gl/9nUZaMRqVGz4ot8fA)


        • Challenge 6
      Lokasi dimana & Pin point map lokasi tsb?


      Merupakan sebuah cabang dari rumah makan APJ atau Ayam Penyet Jakarta, berlokasi di Jl. Gagak Hitam No.19, Sunggal, Kec. Medan Sunggal, Kota Medan, Sumatera Utara 20122 (https://maps.app.goo.gl/VJ86DF7dVtcFSC1P6)



install mutillidae

 SEKEDAP