Evidenzorientierter DAST-Scanner in Go, der Web-Apps und APIs crawlt und dann adaptive SQLi-, XSS-, RCE-, SSRF- und Auth-Prüfungen mit reproduzierbarem Nachweis ausführt.
Fortgeschrittener Web-Sicherheitsscanner
Endpunkte entdecken. Webanwendungen testen. Beweise prüfen.
Installation · Verwendung · Workflow · Profile · Abdeckung · Berichte · Unterstützung · Funktionen · Changelog
AKCA ist ein quelloffener, evidenzorientierter Dynamic Application Security Testing (DAST)-Scanner, der in Go geschrieben ist. Er kombiniert HTTP- und browserunterstütztes Crawling, JavaScript-Analyse, API-Importe, adaptives aktives Testen, passive Inspektion und reproduzierbare Beweise in einem einzigen Kommandozeilen-Workflow.
Viele Scanner crawlen eine Anwendung und senden dann einen breiten Payload-Satz an jeden entdeckten Endpunkt. Diese Strategie kann unnötigen Datenverkehr erzeugen, Abwehrsysteme auslösen und schwache Signale liefern, die eine umfangreiche manuelle Triage erfordern. AKCA verfolgt einen kontextbezogeneren Ansatz: Es lernt zunächst das Ziel kennen, modelliert die entdeckte Angriffsfläche und wählt dann Tests basierend auf dem Technologie-Stack, den Parametern, dem Authentifizierungsstatus, dem WAF-Verhalten und den verfügbaren Verifizierungsmöglichkeiten aus.
AKCA wurde entwickelt, um:
Das Ziel ist nicht, das Ziel zu erschöpfen oder zu überwältigen. Es ist, echte Schwachstellen mit gezielten Anfragen und nützlichen Beweisen zu finden.
AKCA beansprucht keine Funktions- oder Erkennungsparität mit ausgereiften kommerziellen Plattformen wie Acunetix, Invicti/Netsparker oder Burp Suite Professional. Diese Produkte werden von erfahrenen Teams über viele Jahre hinweg entwickelt. AKCA wird unabhängig von einem Entwickler in der verfügbaren persönlichen Zeit gepflegt, inspiriert von etablierten Sicherheitstools und geprägt von eigenen Ideen und Community-Feedback. Die aktuelle Priorität ist ein einfacher, nützlicher und transparenter Scanner. Eine grafische Oberfläche ist geplant, sobald die Engine ausreichend stabil und zuverlässig ist.
AKCA v0.2.4 Scan-Sitzung mit Live-Engine-Status, Ressourcen-Telemetrie und bestätigten Findings.
Erfordert Go 1.25 oder neuer.```bash go install github.com/akha-security/akca/engine/cmd/akca@latest akca --version
<details>
<summary>Befehl nicht gefunden? Konfigurieren Sie Ihren PATH.</summary>
Für die Standard-Go-Installation fügen Sie das Go-Binärverzeichnis zum `PATH` Ihres aktuellen Terminals hinzu.
**Linux / macOS**```bash
export PATH="$(go env GOPATH)/bin:$PATH"
Fügen Sie diese Zeile Ihrer Shell-Konfiguration hinzu, um sie über Sitzungen hinweg beizubehalten.
Windows PowerShell```powershell $env:Path += ";$(go env GOPATH)\bin"
Für zukünftige Sitzungen fügen Sie dasselbe Verzeichnis zu Ihrer Benutzer-`Path`-Umgebungsvariable hinzu. Wenn Sie `GOBIN` konfiguriert haben, verwenden Sie stattdessen dieses Verzeichnis.
</details>
### Vorgefertigte Binärdateien
Laden Sie Ihren Build von [GitHub Releases](https://github.com/akha-security/akca/releases/latest) herunter. Releases enthalten `SHA256SUMS.txt` zur Prüfsummenverifizierung.
| Plattform | Architektur | Asset |
| --- | --- | --- |
| Linux | x64 / ARM64 | `akca-linux-amd64` / `akca-linux-arm64` |
| macOS | Intel / Apple Silicon | `akca-darwin-amd64` / `akca-darwin-arm64` |
| Windows | x64 | `akca-windows-amd64.exe` |
Unter Linux oder macOS machen Sie die heruntergeladene Datei ausführbar. Für Linux x64:```bash
chmod +x akca-linux-amd64
./akca-linux-amd64 --help
Unter Windows benennen Sie den Download in akca.exe um und führen Sie .\akca.exe --help in PowerShell aus. Die folgenden Beispiele gehen davon aus, dass akca in Ihrem PATH verfügbar ist.
Browser-gestützte Prüfungen erfordern Chrome, Chromium oder Edge.
Verwenden Sie AKCA nur auf Systemen, die Ihnen gehören oder für die Sie eine Testgenehmigung haben. Ersetzen Sie die Beispiel-URL durch Ihr autorisiertes Ziel.
akca -u https://example.com
Das Standardprofil ist `full`. Um einen HTML-Bericht zu speichern:```bash
akca -u https://example.com -f html -o report.html
Führe SQL-Injection-, XSS- und serverseitige Injection-Prüfungen aus, einschließlich SSTI:```bash akca -u https://example.com -m sql,xss,rce
Führe passive Prüfungen aus:```bash
akca -u https://example.com -m passive
Passive Scans senden weiterhin Anfragen zur Erkennung und Überprüfung.
Ein Sitzungscookie angeben:```bash akca -u https://example.com -c "session=YOUR_SESSION_COOKIE"
Oder ein Autorisierungs-Header:```bash
akca -u https://example.com -H "Authorization: Bearer YOUR_TOKEN"
Einige Autorisierungsprüfungen erfordern zusätzliche Identitäten oder Zustandskonfiguration über eine einzelne Sitzung hinaus.
akca -u https://api.example.com --api-spec ./openapi.yaml -m api
Discovery unterstützt OpenAPI/Swagger-, RAML-, Postman-, HAR-, GraphQL-, WSDL-, Protobuf- und AsyncAPI-Eingaben, einschließlich unterstützter ZIP-Bundles. Die Testabdeckung hängt vom importierten Protokoll und der Operation ab.
### Traffic über einen Proxy inspizieren```bash
akca -u https://example.com -p http://127.0.0.1:8080
Führen Sie akca --help aus, um alle verfügbaren Optionen anzuzeigen.
Verwenden Sie akca -h für eine prägnante Alltagshilfe oder akca --help für die vollständige Optionsreferenz. Scan-Ziele müssen explizit mit -u oder --url angegeben werden.
Wählen Sie ein Profil mit -m aus oder kombinieren Sie mehrere durch Kommas.
| Profil | Prüfungen |
|---|---|
full | Alle aktivierten aktiven und passiven Module; der Standard |
sql | SQL- und NoSQL-Injection |
xss | Reflektiertes, gespeichertes, DOM- und blindes XSS; zugehörige clientseitige Prüfungen |
rce | Command Injection, SSTI, Deserialisierung und zugehörige Prüfungen |
api | API-Exposition, BOLA/IDOR, BFLA, Mass Assignment und Token-Prüfungen |
graphql | GraphQL-Schema- und Operationsprüfungen |
ssrf | SSRF, XXE und zugehörige Out-of-Band-Prüfungen |
auth | Authentifizierung, Autorisierung, CSRF und Cookie-/Header-Prüfungen |
passive | Metadaten, TLS, Sicherheitsheader, Secrets und Komponentenanalyse |
fuzz | Pfade, exponierte Artefakte, Traversal und zugehörige Prüfungen |
Die Ausführung hängt von entdeckten Endpunkten, der Konfiguration, verfügbaren Verifizierungsmöglichkeiten und Scan-Limits ab. Siehe FEATURES.md für den vollständigen Fähigkeitsleitfaden.
AKCA verwendet eine gestufte Pipeline, damit spätere Prüfungen von zuvor gewonnenen Erkenntnissen profitieren können:
Die Abdeckung ist explizit. Ein übersprungenes, fehlgeschlagenes, budgetbeschränktes oder unvollendetes Ziel wird als unvollständige Abdeckung erfasst; es wird nicht stillschweigend als sauberes Sicherheitsergebnis behandelt.
Die folgende Liste beschreibt implementierte Discovery-Engines und Sicherheitstest-Familien. Einzelne Prüfungen werden nur ausgeführt, wenn die entdeckte Oberfläche, das Scan-Profil, die Konfiguration, die Sicherheitsrichtlinie und die Verifizierungsvoraussetzungen sie anwendbar machen. Eine aufgeführte Fähigkeit ist keine Garantie dafür, dass jede Variante einer Schwachstelle erkannt wird.
Legen Sie ein Gesamt-Request-Budget und eine maximale Dauer fest:```bash akca -u https://example.com --request-budget 5000 --time-budget 30m
Oder berechnen Sie das Modulbudget aus den entdeckten URL-/Methodenkombinationen:```bash
akca -u https://example.com --requests-per-target 200
AKCA verteilt begrenzte Modulbudgets auf Module, URLs und Parameter. Nicht genutzte Zuweisungen werden an spätere Arbeit weitergegeben. Ein positives --request-budget hat Vorrang vor --requests-per-target.
| Option | Zweck |
|---|---|
--request-budget 5000 | Begrenzt die Gesamtzahl der Anfragen, einschließlich Discovery, Wiederholungen und Weiterleitungen |
--requests-per-target 200 | Leitet das Modulbudget aus den entdeckten URL/Methoden-Kombinationen ab |
--crawler-budget 1000 | Begrenzt Discovery-Anfragen |
--time-budget 30m | Begrenzt die Scandauer |
--rate-limit 5 | Begrenzt Anfragen pro Sekunde |
--concurrency 4 | Begrenzt gleichzeitige Worker |
Standardmäßig hat der Modulscan kein Anfragenkontingent. Budgetunterbrechungen werden als unvollständige Abdeckung gemeldet. Unterbrochene Ziele werden nicht automatisch fortgesetzt, wenn spätere Arbeit ungenutztes Budget zurückgibt. Keine Budgeteinstellung garantiert die Erkennung jeder Schwachstelle.
Verknüpfte API-/Service-Subdomains liegen außerhalb des standardmäßigen Zielbereichs. Um verknüpfte Subdomains unter derselben Root einzubeziehen:```bash akca -u https://www.example.com --include-linked-api-subdomains
### Warum ein vollständiger Scan länger dauert
AKCAs standardmäßiger vollständiger Scan ist auf Abdeckung und Beweisqualität ausgelegt, nicht auf die kürzestmögliche Ausführungszeit. Seine Laufzeit ist daher nicht direkt mit Tools vergleichbar, die nach einem oberflächlichen HTTP-Crawl stoppen oder eine Schwachstelle anhand einer einzelnen Antwortdifferenz melden.
Ein umfassender Durchlauf kann länger dauern, weil AKCA:
- Eine Browsersitzung für clientseitig gerenderte Routen aufrechterhält und JavaScript inspiziert, einschließlich verzögert geladener Anwendungs-Chunks.
- Vielversprechende Ergebnisse mit Kontrollen erneut abspielt, bevor sie zu Findings erhoben werden, wodurch falsch positive Ergebnisse durch generische Fehler, instabile Seiten und WAF-Antworten reduziert werden.
- Identitäts-, Status- und Callback-bewusste Prüfungen durchführt, wenn ein Modul einen stärkeren Nachweis erfordert.
- Ziel-Pacing, Wiederholungsversuche, Anfragebudgets und Out-of-Band-Beobachtungsfenster respektiert, anstatt Geschwindigkeit als einzige Erfolgsmetrik zu behandeln.
Die Scan-Dauer hängt auch von der Anwendungsgröße, der Antwortlatenz, den Authentifizierungsabläufen, den Abwehrkontrollen und dem konfigurierten Umfang ab. Für schnelleres Feedback wählen Sie nur die relevanten Module mit `-m` aus oder wenden Sie explizite Crawl-, Anfrage- und Zeitbudgets an. Erhöhen Sie Rate und Parallelität nur, wenn das autorisierte Ziel den zusätzlichen Datenverkehr sicher bewältigen kann. Ein kürzerer Scan ist nicht unbedingt ein vollständigerer Scan.
## Berichte
Wählen Sie ein Ausgabeformat mit `-f` und einen Dateipfad mit `-o`:```bash
akca -u https://example.com -f html -o report.html
Unterstützte Formate: HTML, JSON, Markdown, CSV und SARIF. Jeder Aufruf startet einen neuen Scan.
HTML-Berichte sind eigenständig und enthalten das AKCA-Logo, Risiko- und Schweregrad-Zusammenfassungen, Schwachstellenstatistiken, strukturierte Finding-Details und erweiterbare HTTP-Nachweise. Die Tabs für Anfrage und Antwort unterstützen eine kombinierte Ansicht, die Erweiterung des vollständigen Inhalts und das Kopieren. Wenn ein Finding einen passenden Antwortwert enthält, hebt AKCA ihn gelb hervor, um Ihnen zu helfen, eine reflektierte Payload oder ein offengelegtes Secret zu lokalisieren. Passive Secret-Findings behalten einen Auszug rund um die Übereinstimmung bei.
Je nach Modul umfassen Findings:
Timing-Findings, fehlende Header und externe Callbacks haben möglicherweise keinen Antworttext zum Hervorheben. Ihr Verifizierungskontext liefert die relevanten Nachweise.
Wenn der Scanner eine vollständige Roh-Transaktion gespeichert hat, bewahrt der Bericht sie exakt auf. Ältere oder nur strukturierte Nachweise werden in einem konventionellen HTTP-Layout im Burp-Stil mit einer Request-Zeile, geordneten Headern, einem Header/Body-Trenner und standardmäßigen HTTP-Antwort-Statuszeilen dargestellt. Wenn das Transport-Capture-Limit eine Antwort abgeschnitten hat, sagt der Bericht dies explizit; er präsentiert den gespeicherten Teil niemals als die nicht verfügbare vollständige Antwort.
Ein gespeichertes Finding erneut abspielen:```bash akca replay --finding 42
Berichte maskieren erkannte Anmeldedaten standardmäßig. Roh gespeicherte Beweise bleiben für die Wiedergabe erhalten. Setze `redact_reports` in der Scan-Konfiguration auf `false` oder verwende `redact=false` in der Report-API, nur wenn Roh-Exporte benötigt werden. Überprüfe Berichte vor dem Teilen: Automatische Maskierung kann nicht jedes anwendungsspezifische Geheimnis erkennen.
### Crawl- und Proof-Konfiguration
Der Crawler behält während jeder Crawl-Phase eine Browser-Sitzung bei, einschließlich Cookies und Browser-Speicher. Er erkundet explizite Nicht-Formular-Tabs und erweiterbare Panels; er füllt keine Formulare automatisch aus und sendet sie nicht ab. Browser-Anfragen unterliegen weiterhin dem Scope und den Request-Budgets. Für erforderliche statische Drittanbieter-Abhängigkeiten konfiguriere exakte Hostnamen separat:```json
{
"browser_resource_domains": ["cdn.example.com"],
"redact_reports": true
}
Dies erlaubt nur GET/HEAD-Skript-, Stylesheet-, Bild-, Font- und Medienanfragen an diese Hosts und entfernt Credential- und benutzerdefinierte Header. Es fügt diese Hosts nicht zum aktiven Scan-Umfang hinzu und erlaubt keine Cross-Origin-API-Aufrufe. Blockierte Browser-Abhängigkeiten erzeugen Coverage-Gap-Events.
Entdeckte URLs werden beibehalten, auch wenn sie nicht besucht werden können. Ein Crawl, der sein Budget mit wartender Arbeit ausschöpft, erzeugt einen partiellen Scan und einen von Null verschiedenen CLI-Exit-Code. Modul-Preflight-Meldungen unterscheiden fehlende Identity-/State-Policies von konfigurierten Verifikationsfähigkeiten.
Nicht konfigurierte Rate-Limit-Prüfungen erzeugen Beobachtungen, keine Schwachstellen-Findings. Ein konfigurierter Threshold-Nachweis erfordert zusätzlich window_seconds; wenn die Anfragen nicht in dieses Fenster passen, ist die Prüfung nicht schlüssig. SQLi betrachtet eine 400-Antwort oder eine arithmetische Auswertung allein nicht als Nachweis. Neue herstellerspezifische SQL-Fehler in 400/422-Antworten müssen den Replay- und Control-Verifikationspfad durchlaufen.
Siehe CHANGELOG.md für Release-Details.
AKCA akzeptiert keine Sponsoring- oder persönlichen Spenden. Code-Beiträge, Tests, Dokumentation und durchdachtes Feedback sind immer willkommen.
Projeye maddi olarak destek olmak istiyorsanız, bana göndermek yerine Mehmetçik Vakfı, AFAD, Türk Kızılay veya Çocuk Hizmetleri Genel Müdürlüğü aracılığıyla desteklenen güvenilir sosyal yardım çalışmalarından birine bağış yapmanızı rica ediyorum. Mümkünse bağışınızı kızım Akça Aktaş adına yapın. Bağıştan sonra X üzerinden @caneraktas_ hesabına mesaj göndermeniz beni gerçekten çok mutlu eder.
Wenn Sie das Projekt finanziell unterstützen möchten, spenden Sie bitte an eine seriöse Wohltätigkeitsorganisation in Ihrem Land, die Kindern, von Katastrophen betroffenen Gemeinschaften, Veteranen oder Menschen in dringender Not hilft. Wenn möglich, tätigen Sie die Spende im Namen meiner Tochter, Akça Aktaş. Sie können sie gerne mit mir auf X unter @caneraktas_ teilen; zu wissen, dass dieses Projekt zu einer hilfreichen Tat inspiriert hat, würde mir sehr viel bedeuten.
Aus dem Quellcode bauen:```bash git clone https://github.com/akha-security/akca.git cd akca/engine go build -buildvcs=false -trimpath -o ../akca ./cmd/akca
Unter Windows verwenden Sie `-o ../akca.exe` für den Namen der ausführbaren Datei.
Führen Sie die Prüfungen aus dem Verzeichnis `engine` aus:```bash
go test ./... -count=1
go vet ./...
go run ./cmd/akca benchmark --strict
Der Benchmark misst sein beobachtetes Korpus. Für Implementierungsdetails und Verifikationseinschränkungen lies den Architekturleitfaden und das Verifikationsaudit.
Beiträge sind willkommen. Lies CONTRIBUTING.md und den Verhaltenskodex, bevor du einen Pull Request öffnest. Melde Schwachstellen in AKCA über SECURITY.md.
Apache License 2.0 · Copyright 2026 AKHA Security contributors.