Gönderi

Acunetix ile Web Uygulaması Güvenlik Testi - Detaylı İnceleme ve Deneyimlerim

Acunetix ile Web Uygulaması Güvenlik Testi - Detaylı İnceleme ve Deneyimlerim

Merhabalar,

Web uygulaması güvenliği konusunda çalışırken en kritik ihtiyaçlardan biri güvenilir bir vulnerability scanner’dır. Bu yazımda siz değerli okurlarıma, web güvenliği dünyasının köklü isimlerinden Acunetix hakkında detaylı bilgi vereceğim. Hem teorik bilgileri hem de pratik deneyimleri paylaşarak, normal kullanıcılardan teknik mühendislere kadar herkesin anlayabileceği şekilde anlatmaya çalışacağım.

Acunetix Nedir?

Acunetix, 2005 yılından beri geliştirilmekte olan, web uygulamalarında güvenlik açıklarını tespit eden özel bir tarama aracıdır. Basit bir ifade ile söylemek gerekirse, web sitelerinizi ve uygulamalarınızı kötü niyetli saldırganlardan önce siz test edip güvenlik açıklarını bulmanızı sağlayan profesyonel bir araçtır.

Ana Özellikleri:

  • DAST (Dynamic Application Security Testing) - Canlı uygulamaları test eder
  • IAST (Interactive Application Security Testing) - AcuSensor teknolojisiyle daha derinlemesine analiz
  • 7000+ güvenlik açığı tespiti - OWASP Top 10 dahil olmak üzere
  • %99.98 doğruluk oranı - Çok düşük false positive
  • Çoklu platform desteği - Windows, Linux, Cloud

DAST vs IAST - Hangi Teknolojiyi Kullanmalı?

DAST (Dynamic Application Security Testing)

DAST, uygulamanızı dışarıdan bir saldırgan gözüyle tarar. Tıpkı bir hacker’ın yapacağı gibi:

1
2
3
4
5
6
# DAST taraması örnek süreç:
1. Web sitesini keşfetme (crawling)
2. Form'ları ve input'ları bulma
3. Çeşitli payload'lar gönderme
4. Cevapları analiz etme
5. Güvenlik açıklarını tespit etme

Avantajları:

  • Kaynak koda erişim gerektirmez
  • Gerçek dünya saldırılarını simüle eder
  • Production environment’da kullanılabilir

Dezavantajları:

  • Tüm kodu kapsamayabilir
  • Bazı güvenlik açıklarını kaçırabilir

IAST (Interactive Application Security Testing)

IAST ise uygulamanın içine küçük bir sensör yerleştirerek daha detaylı analiz yapar:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// AcuSensor PHP'de şu şekilde çalışır:
// Herhangi bir kod değişikliği gerekmez
// Sadece sensörü yükleyip aktif ediyorsunuz

include 'acusensor.php'; // Otomatik yüklenir

// Normal kodunuz:
$user_input = $_POST['username'];
$query = "SELECT * FROM users WHERE username = '$user_input'";
// AcuSensor bu satırda SQL Injection riski tespit eder
mysqli_query($connection, $query);
?>

AcuSensor’ün Avantajları:

  • Tam kod coverage sağlar
  • Hidden/unlinked dosyaları bulur
  • Exact source code line’ını gösterir
  • %100 güvenilirlik bazı zafiyet türlerinde

Hangi Güvenlik Açıklarını Tespit Ediyor?

OWASP Top 10 Kapsamı

Acunetix, OWASP Top 10’daki tüm güvenlik açıklarını tespit edebiliyor:

1. SQL Injection

1
2
3
4
-- Acunetix'in test ettiği örnek payload'lar:
' OR '1'='1
'; DROP TABLE users; --
1' UNION SELECT null,@@version,null --

2. Cross-Site Scripting (XSS)

1
2
3
4
5
6
7
8
// Reflected XSS testi:
<script>alert('Acunetix XSS Test')</script>

// Stored XSS testi:
<img src=x onerror=alert('Stored XSS')>

// DOM-based XSS testi:
javascript:alert(document.cookie)

3. Cross-Site Request Forgery (CSRF)

1
2
3
4
5
6
<!-- CSRF test formu -->
<form action="https://vulnerable-site.com/transfer" method="POST">
  <input type="hidden" name="amount" value="1000">
  <input type="hidden" name="to_account" value="attacker_account">
  <input type="submit" value="Click me!">
</form>

Diğer Önemli Güvenlik Açıkları

  • Directory Traversal - ../../../etc/passwd
  • File Upload Vulnerabilities - Malicious file upload
  • XML External Entity (XXE) - XML parsing zafiyetleri
  • Insecure Deserialization - Object deserialization saldırıları
  • Security Misconfigurations - Yanlış konfigürasyonlar

Gerçek Proje Deneyimlerim

E-Ticaret Projesi Güvenlik Testi

Geçenlerde bir e-ticaret projesinde Acunetix kullandım. Sonuçlar oldukça ilginçti:

1
2
3
4
5
6
7
8
9
10
11
Proje Detayları:
  - Platform: PHP + MySQL
  - Sayfa Sayısı: ~500
  - Tarama Süresi: 2.5 saat
  - Bulunan Güvenlik Açığı: 23 adet

Kritik Bulgular:
  - SQL Injection: 3 adet (ödeme formu, arama, login)
  - XSS: 8 adet (çoğunlukla ürün yorumlarında)
  - CSRF: 5 adet (profil güncelleme, sipariş iptal)
  - File Upload: 2 adet (profil fotoğrafı, ürün resmi)

Proof of Concept Örnekleri

Acunetix’in en beğendiğim özelliklerinden biri Proof of Exploit sunması:

1
2
3
4
5
6
-- SQL Injection PoC:
Original Request: /search.php?q=laptop
Vulnerable Parameter: q
Payload: laptop' UNION SELECT 1,username,password FROM users--
Response: Admin user credentials exposed
Database: MySQL 8.0.25

Bu özellik sayesinde development team’e sadece “SQL Injection var” demek yerine, tam olarak nasıl exploit edilebileceğini gösterebiliyorsunuz.

Acunetix Kurulumu ve Konfigürasyonu

Sistem Gereksinimleri

1
2
3
4
5
6
7
8
9
10
11
Minimum Gereksinimler:
  CPU: 2 cores
  RAM: 4 GB
  Storage: 10 GB
  OS: Windows 10/11, Ubuntu 18.04+, CentOS 7+

Önerilen Gereksinimler:
  CPU: 4+ cores
  RAM: 8+ GB  
  Storage: 50+ GB SSD
  Network: 100 Mbps+

Kurulum Adımları

1. On-Premises Kurulum

1
2
3
4
5
6
7
8
9
10
11
# Linux kurulumu:
wget https://download.acunetix.com/acunetix_linux.sh
chmod +x acunetix_linux.sh
sudo ./acunetix_linux.sh

# Servis başlatma:
sudo systemctl start acunetix
sudo systemctl enable acunetix

# Web arayüze erişim:
https://localhost:3443

2. Cloud Versiyon

Cloud versiyonu için sadece hesap açıp login olmanız yeterli. Avantajları:

  • Kurulum gerektirmez
  • Otomatik güncellemeler
  • Scalable scanning engines
  • Global erişim

İlk Tarama Konfigürasyonu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Target Configuration:
  URL: https://example.com
  Crawling Scope: Same domain + subdomains
  Authentication: 
    Type: Form-based
    Username: [email protected]
    Password: testpass123
  
Scan Policy:
  Profile: Full Scan
  Crawler Settings:
    Max Pages: 1000
    Max Scan Time: 4 hours
  Security Checks:
    - SQL Injection: Enabled
    - XSS: Enabled
    - CSRF: Enabled
    - File Inclusion: Enabled

CI/CD Entegrasyonu

Jenkins Entegrasyonu

Acunetix’i CI/CD pipeline’ınıza entegre etmek oldukça kolay:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Jenkinsfile örneği:
pipeline {
    agent any
    
    stages {
        stage('Build') {
            steps {
                // Build işlemleri
                sh 'npm install && npm run build'
            }
        }
        
        stage('Deploy to Staging') {
            steps {
                // Staging deploy
                sh 'docker-compose up -d'
            }
        }
        
        stage('Security Scan') {
            steps {
                script {
                    // Acunetix API ile tarama başlatma
                    sh '''
                    curl -X POST \
                      https://acunetix.local:3443/api/v1/scans \
                      -H "X-Auth: ${ACUNETIX_API_KEY}" \
                      -H "Content-Type: application/json" \
                      -d '{
                        "target_id": "${TARGET_ID}",
                        "profile_id": "11111111-1111-1111-1111-111111111111"
                      }'
                    '''
                }
            }
        }
        
        stage('Check Results') {
            steps {
                // Tarama sonuçlarını kontrol et
                script {
                    def scanResults = sh(
                        script: "curl -H 'X-Auth: ${ACUNETIX_API_KEY}' https://acunetix.local:3443/api/v1/scans/${SCAN_ID}",
                        returnStdout: true
                    ).trim()
                    
                    if (scanResults.contains('"high_severity":')) {
                        error("High severity vulnerabilities found!")
                    }
                }
            }
        }
    }
}

GitLab CI Entegrasyonu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# .gitlab-ci.yml
stages:
  - build
  - test
  - security-scan
  - deploy

security_scan:
  stage: security-scan
  script:
    - |
      # Acunetix tarama başlat
      SCAN_ID=$(curl -X POST \
        -H "X-Auth: $ACUNETIX_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{"target_id": "'$TARGET_ID'", "profile_id": "'$PROFILE_ID'"}' \
        $ACUNETIX_URL/api/v1/scans | jq -r '.scan_id')
      
      # Tarama tamamlanana kadar bekle
      while [ "$(curl -H "X-Auth: $ACUNETIX_API_KEY" $ACUNETIX_URL/api/v1/scans/$SCAN_ID | jq -r '.current_session.status')" != "completed" ]; do
        echo "Scan in progress..."
        sleep 30
      done
      
      # Sonuçları kontrol et
      HIGH_VULNS=$(curl -H "X-Auth: $ACUNETIX_API_KEY" $ACUNETIX_URL/api/v1/scans/$SCAN_ID/results | jq '.vulnerabilities[] | select(.severity == 4) | length')
      
      if [ "$HIGH_VULNS" -gt 0 ]; then
        echo "High severity vulnerabilities found: $HIGH_VULNS"
        exit 1
      fi
  only:
    - main
    - develop

REST API Kullanımı

Acunetix’in güçlü REST API’si sayesinde otomasyonlar yapabilirsiniz:

Temel API İşlemleri

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import requests
import json
import time

class AcunetixAPI:
    def __init__(self, base_url, api_key):
        self.base_url = base_url
        self.headers = {
            'X-Auth': api_key,
            'Content-Type': 'application/json'
        }
    
    def add_target(self, url, description=""):
        """Yeni hedef ekle"""
        data = {
            'address': url,
            'description': description,
            'criticality': 30  # High
        }
        
        response = requests.post(
            f"{self.base_url}/api/v1/targets",
            headers=self.headers,
            data=json.dumps(data)
        )
        
        return response.json()['target_id']
    
    def start_scan(self, target_id, profile_id):
        """Tarama başlat"""
        data = {
            'target_id': target_id,
            'profile_id': profile_id
        }
        
        response = requests.post(
            f"{self.base_url}/api/v1/scans",
            headers=self.headers,
            data=json.dumps(data)
        )
        
        return response.json()['scan_id']
    
    def get_scan_results(self, scan_id):
        """Tarama sonuçlarını al"""
        response = requests.get(
            f"{self.base_url}/api/v1/scans/{scan_id}/results",
            headers=self.headers
        )
        
        return response.json()
    
    def wait_for_scan(self, scan_id):
        """Tarama tamamlanana kadar bekle"""
        while True:
            response = requests.get(
                f"{self.base_url}/api/v1/scans/{scan_id}",
                headers=self.headers
            )
            
            status = response.json()['current_session']['status']
            print(f"Scan status: {status}")
            
            if status == 'completed':
                break
            elif status == 'failed':
                raise Exception("Scan failed!")
                
            time.sleep(30)

# Kullanım örneği:
api = AcunetixAPI("https://acunetix.local:3443", "your-api-key")

# Hedef ekle
target_id = api.add_target("https://example.com", "Test website")

# Tarama başlat
scan_id = api.start_scan(target_id, "11111111-1111-1111-1111-111111111111")

# Sonuçları bekle ve al
api.wait_for_scan(scan_id)
results = api.get_scan_results(scan_id)

print(f"Bulunan güvenlik açığı sayısı: {len(results['vulnerabilities'])}")

Sonuç Analizi ve Raporlama

Vulnerability Prioritization

Acunetix güvenlik açıklarını şu şekilde sınıflandırır:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Severity Levels:
  Critical (4): 
    - Remote code execution
    - SQL Injection with data access
    - Authentication bypass
    
  High (3):
    - XSS with session hijacking potential
    - Local file inclusion
    - Directory traversal
    
  Medium (2):
    - Information disclosure
    - CSRF on non-critical functions
    - Weak SSL configuration
    
  Low (1):
    - Missing security headers
    - Verbose error messages
    - Directory listing enabled

  Informational (0):
    - Version information
    - Technology stack detection
    - Best practice recommendations

Rapor Formatları

1
2
3
4
5
6
7
8
9
# Acunetix farklı rapor formatları sunuyor:
report_formats = {
    'executive': 'Yönetim için özet rapor',
    'developer': 'Geliştiriciler için teknik detaylar',
    'compliance': 'Compliance gereksinimleri için',
    'xml': 'Diğer araçlarla entegrasyon için',
    'json': 'API entegrasyonu için',
    'html': 'Web browser'da görüntüleme için'
}

Fiyatlandırma ve Lisans Modelleri

Acunetix Standard

1
2
3
4
5
6
7
8
Acunetix Standard:
  Fiyat: "Contact for pricing"
  Features:
    - 1 concurrent scan
    - DAST scanning
    - Basic integrations
    - Email support
  Suitable For: Small teams, single projects

Acunetix Premium

1
2
3
4
5
6
7
8
9
Acunetix Premium:
  Fiyat: "Contact for pricing"
  Features:
    - Multiple concurrent scans
    - AcuSensor (IAST)
    - Advanced integrations
    - Priority support
    - Compliance reporting
  Suitable For: Enterprise environments

Cloud vs On-Premises

ÖzellikCloudOn-Premises
KurulumYokGerekli
MaintenanceOtomatikManuel
ScalabilityUnlimitedHardware’a bağlı
Data PrivacyShared infrastructureFull control
CostSubscriptionLicense + Infrastructure
UpdatesOtomatikManuel

Alternatif Araçlarla Karşılaştırma

Acunetix vs OWASP ZAP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Acunetix:
  Pros:
    - Çok düşük false positive
    - Proof of exploit
    - Enterprise features
    - GUI kullanım kolaylığı
  Cons:
    - Ücretli
    - Learning curve
    
OWASP ZAP:
  Pros:
    - Ücretsiz
    - Open source
    - Geniş community
    - Extensible
  Cons:
    - Yüksek false positive
    - Sınırlı enterprise features
    - Manual configuration gerekli

Acunetix vs Burp Suite

1
2
3
4
5
6
7
8
9
10
11
12
13
Acunetix:
  Strengths:
    - Automated scanning
    - Easy reporting
    - CI/CD integration
    - Scale capacity
    
Burp Suite:
  Strengths:
    - Manual testing capabilities
    - Proxy functionality
    - Extensibility
    - Penetration testing focus

Gerçek Dünya Kullanım Senaryoları

Senaryo 1: PCI DSS Compliance

1
2
3
4
5
6
7
8
9
Müşteri Profili: E-ticaret şirketi
Gereksinim: PCI DSS compliance
Çözüm:
  - Quarterly Acunetix tarama
  - Automatic vulnerability detection
  - Compliance reporting
  - Remediation tracking
  
Sonuç: %100 PCI DSS compliance başarısı

Senaryo 2: DevSecOps Implementation

1
2
3
4
5
6
7
8
9
Müşteri Profili: SaaS startup
Gereksinim: Development sürecine security entegrasyonu
Çözüm:
  - GitLab CI/CD pipeline entegrasyonu
  - Staging environment'da otomatik tarama
  - Slack bildirimleri
  - Developer training

Sonuç: %75 güvenlik açığı azalması

Senaryo 3: Penetration Testing Augmentation

1
2
3
4
5
6
7
8
9
Müşteri Profili: Finansal kurum
Gereksinim: Comprehensive security assessment
Çözüm:
  - Acunetix otomatik tarama + manual pentesting
  - AcuSensor ile deep analysis
  - Custom script yazma
  - Executive reporting

Sonuç: 200+ güvenlik açığı tespit ve çözüm

Best Practices ve Öneriler

Tarama Optimizasyonu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Performance Tuning:
  Crawling:
    - Max pages: Application size'a göre ayarla
    - Crawl delay: Server capacity'ye göre
    - Exclude non-essential paths
    
  Scanning:
    - Use scan profiles wisely
    - Schedule scans for off-peak hours
    - Monitor server resources
    
  Reporting:
    - Filter false positives
    - Focus on high/critical severity
    - Regular remediation tracking

Güvenlik Considerations

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Security Best Practices:
  Network:
    - VPN connection for sensitive environments
    - Firewall rules for Acunetix access
    - Segregated testing network
    
  Access Control:
    - Role-based user management
    - Strong authentication
    - Regular user access review
    
  Data Protection:
    - Encrypted communication (HTTPS)
    - Secure API key management
    - Regular backup of scan data

Sorun Giderme ve Troubleshooting

Yaygın Problemler

1. Scan Performance İssues

1
2
3
4
5
6
7
8
9
10
11
12
13
# Problem: Yavaş tarama
# Çözüm: Crawling ayarlarını optimize et

# Acunetix log kontrolü:
tail -f /usr/local/acunetix/logs/acunetix.log

# Resource usage kontrolü:
top -p $(pgrep acunetix)
iostat -x 1

# Network latency test:
ping target-website.com
traceroute target-website.com

2. False Positive Issues

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# False positive'leri azaltmak için:
def configure_scan_policy():
    """
    Custom scan policy oluşturma
    """
    policy_config = {
        "sql_injection": {
            "timing_based": True,
            "error_based": True,
            "boolean_based": True,
            "union_based": False  # Aggressive, false positive artırabilir
        },
        "xss": {
            "dom_based": True,
            "reflected": True,
            "stored": True,
            "filter_responses": True  # Response filtering aktif
        }
    }
    return policy_config

3. Authentication Problems

1
2
3
4
5
6
7
8
9
10
11
12
# Login sequence sorunları:
Common Issues:
  - CSRF token handling
  - Session timeout
  - Captcha presence
  - Multi-step authentication

Solutions:
  - Record proper login sequence
  - Handle dynamic tokens
  - Use session management
  - Configure authentication timeouts

Debug ve Log Analysis

1
2
3
4
5
6
7
8
9
10
11
12
13
# Acunetix debug mode:
sudo systemctl stop acunetix
sudo /usr/local/acunetix/start.sh --debug

# Log file locations:
/usr/local/acunetix/logs/acunetix.log      # Main log
/usr/local/acunetix/logs/scanner.log      # Scanner specific
/usr/local/acunetix/logs/crawling.log     # Crawling logs
/usr/local/acunetix/logs/database.log     # Database operations

# Log analysis:
grep -i "error" /usr/local/acunetix/logs/acunetix.log
grep -i "sql injection" /usr/local/acunetix/logs/scanner.log

Sonuç ve Tavsiyelerim

Acunetix kullanarak yaklaşık 3 senedir çeşitli projelerde güvenlik testleri yapıyorum. Bu deneyimler sonucunda şunu söyleyebilirim: Acunetix, web uygulaması güvenliği için hakikaten kapsamlı ve güvenilir bir araç.

✅ Şu durumlarda kesinlikle kullanın:

  • Enterprise-level security ihtiyacınız varsa
  • Düşük false positive oranı kritikse
  • CI/CD entegrasyonu planlıyorsanız
  • Compliance requirements (PCI DSS, HIPAA vb.) varsa
  • Team collaboration gerekiyorsa
  • Detailed reporting ihtiyacınız varsa

⚠️ Şu durumlarda alternatifleri değerlendirin:

  • Budget kısıtlı küçük projeler için
  • Sadece basic scanning ihtiyacı varsa
  • Manual testing odaklı çalışmalar için
  • Open source preference varsa

💡 Başlangıç Önerilerim:

  1. Free trial’ı deneyin - 14 günlük deneme sürümü
  2. Demo talep edin - Technical team’den detaylı bilgi alın
  3. Pilot proje seçin - Küçük bir projede test edin
  4. Team’inizi eğitin - Tool’un tüm özelliklerini öğrenin
  5. Entegrasyon planlayın - CI/CD pipeline’a nasıl entegre edeceğinizi düşünün
  6. Remediation process’ini kurun - Bulunan güvenlik açıklarını nasıl çözeceğinizi planlayın

Son Söz

Web uygulaması güvenliği günümüzde kritik bir ihtiyaç haline geldi. Acunetix gibi profesyonel araçlar bu ihtiyacı karşılamak için geliştirilmiş olgun çözümler sunuyor.

Tabii ki mükemmel bir araç değil - hiçbiri değil zaten. Fakat accuracy, performance ve feature set açısından market’daki en güçlü alternatiflerden biri olduğunu rahatlıkla söyleyebilirim.

Acunetix kullanıyor musunuz? Deneyimlerinizi yorumlarda paylaşırsanız sevinirim!


Bu makale Acunetix’in Ağustos 2025 itibariyle güncel özelliklerine dayanarak yazılmıştır. Özellikler ve fiyatlandırma değişebilir.

Bu gönderi CC BY 4.0 lisansı altındadır.