Cyber Security: ollama-assisted SQLmap

From OnnoWiki
Revision as of 08:40, 22 April 2025 by Onnowpurbo (talk | contribs) (Created page with "Meskipun SQLMap sudah powerful secara otomatis, menambahkan Ollama bisa membantu: * '''Menganalisis hasil serangan''' SQLMap dengan pemahaman kontekstual. * '''Memberikan rek...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Meskipun SQLMap sudah powerful secara otomatis, menambahkan Ollama bisa membantu:

  • Menganalisis hasil serangan SQLMap dengan pemahaman kontekstual.
  • Memberikan rekomendasi lanjutan (misalnya: cara eksfiltrasi data, pengamanan, mitigasi).
  • Menyusun laporan otomatis berdasarkan hasil scanning SQLMap.


Langkah Integrasi SQLMap + Ollama

1. Install SQLMap dan Ollama

Pastikan keduanya sudah terpasang:

# Install SQLMap (jika belum)
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git
cd sqlmap

# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh

2. Pilih Model di Ollama

Rekomendasi model untuk tugas ini:

Model Kelebihan
llama3 Cepat, ringan, dan cukup pintar untuk reasoning teknikal.
codellama Bagus untuk membaca kode atau output teknis seperti SQL.
mistral Ringan, cepat, cukup pintar menangkap konteks eksploitasi.
phi3 Hemat resource, cocok untuk lingkungan terbatas.

> ✅ Saran saya: gunakan `codellama` atau `llama3` — karena konteks SQL dan teknikal cukup penting.

3. Jalankan SQLMap dan Simpan Output ke File

python3 sqlmap.py -u "http://target.com/vuln.php?id=1" --batch --output-dir=output_sqlmap --dump-format=CSV


4. Ambil dan Kirim Output ke Ollama

Gunakan script Python berikut untuk mem-parsing hasil SQLMap, dan kirimkan ke model Ollama (misal dengan REST API `http://localhost:11434/api/generate`):

import requests

def query_ollama(prompt, model="llama3"):
    response = requests.post("http://localhost:11434/api/generate", json={
        "model": model,
        "prompt": prompt,
        "stream": False
    })
    return response.json()['response'] 

# Contoh penggunaan:
with open("output_sqlmap/log") as f:
    sqlmap_output = f.read()

prompt = f"""

Berikut adalah hasil output dari SQLMap:

 {sqlmap_output}

Analisis hasil ini, sebutkan:
1. Apakah benar-benar ada SQL Injection?
2. Apa dampak keamanan terbesar?
3. Langkah apa yang bisa dilakukan attacker selanjutnya?
4. Bagaimana mencegahnya?

Tolong analisis selengkap dan sejelas mungkin.
"""
response = query_ollama(prompt)
print(response)


Script Python Wrapper

  • Menjalankan SQLMap dari Python.
  • Menyimpan hasil output.
  • Kirim hasilnya ke Ollama.
  • Mendapatkan analisis AI berdasarkan model lokal (misalnya `llama3`, `codellama`, atau `mistral`).


Python Script: `sqlmap_ollama_wrapper.py`

import subprocess
import requests
import os

# Konfigurasi
SQLMAP_PATH = "./sqlmap/sqlmap.py"  # Ganti jika sqlmap di lokasi lain
TARGET_URL = "http://target.com/vuln.php?id=1"  # Ganti dengan target URL
OUTPUT_DIR = "./sqlmap_output"
OLLAMA_MODEL = "llama3"  # Bisa diganti: llama3, codellama, mistral, phi3
OLLAMA_API = "http://localhost:11434/api/generate"

def run_sqlmap():
    print("[+] Menjalankan SQLMap...")
    command = [
        "python3", SQLMAP_PATH,
        "-u", TARGET_URL,
        "--batch",
        "--output-dir", OUTPUT_DIR,
        "--flush-session"
    ]
    subprocess.run(command) 

def read_sqlmap_output():
    log_path = os.path.join(OUTPUT_DIR, "log")
    if not os.path.exists(log_path):
        print("[!] File log SQLMap tidak ditemukan.")
        return ""
    
    with open(log_path, "r", encoding="utf-8", errors="ignore") as file:
        return file.read()

def ask_ollama(prompt):
    print("[+] Mengirim prompt ke Ollama...")
    response = requests.post(OLLAMA_API, json={
        "model": OLLAMA_MODEL,
        "prompt": prompt,
        "stream": False
    })
    
    if response.status_code == 200:
        return response.json().get("response", "Tidak ada respon.")
    else:
        return f"Error dari Ollama: {response.text}"

def main():
    run_sqlmap()
    sqlmap_output = read_sqlmap_output()

    if not sqlmap_output.strip():
        print("[!] Output SQLMap kosong.")
        return

    prompt = f"""
Berikut adalah hasil output dari SQLMap terhadap URL: {TARGET_URL}

{sqlmap_output}

Tolong analisa hasil ini:
1. Apakah benar ditemukan SQL Injection?
2. Apa potensi dampaknya?
3. Apa langkah selanjutnya bagi attacker?
4. Bagaimana cara mencegah serangan ini?

Analisa dengan lengkap dan jelas.
"""
    response = ask_ollama(prompt)
    print("\n[+] ANALISIS OLLAMA:\n")
    print(response)

if __name__ == "__main__":
    main()


Cara Menjalankan:

1. Download SQLMap:

git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git

2. Jalankan Ollama dan Model:

ollama run llama3
# atau
ollama run codellama

3. Jalankan Script:

python3 sqlmap_ollama_wrapper.py


Pranala Menarik