Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
jsluice — URLs, Pfade, Geheimnisse und andere interessante Details aus JavaScript extrahieren | Kitploit
Tools/GitHubGitHub/bishopfox/jsluice
Statische AnalyseCode-AnalyseInformationsbeschaffungWebsicherheitPenetrationstestsSecret-Erkennung
GitHubbishopfox/jsluice

jsluice

URLs, Pfade, Geheimnisse und andere interessante Details aus JavaScript extrahieren

Repository anzeigen
1.9k145vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

jsluice

Go Reference

jsluice ist ein Go-Paket und ein Kommandozeilen-Tool zum Extrahieren von URLs, Pfaden, Secrets und anderen interessanten Daten aus JavaScript-Quellcode.

Wenn du diese Dinge sofort tun möchtest: schau dir das Kommandozeilen-Tool an.

Wenn du die Fähigkeiten von jsluice in dein eigenes Projekt integrieren möchtest: schau dir die Beispiele an und lies die Paketdokumentation.

Installation

Um das Kommandozeilen-Tool zu installieren, führe aus:

root@kitploit:~
▶ go install github.com/BishopFox/jsluice/cmd/jsluice@latest

Um das Paket zu deinem Projekt hinzuzufügen, führe aus:

root@kitploit:~
▶ go get github.com/BishopFox/jsluice

URLs extrahieren

Statt sich nur auf reguläre Ausdrücke zu verlassen, nutzt jsluice go-tree-sitter, um Stellen zu finden, an denen URLs bekanntermaßen verwendet werden, z. B. wenn sie document.location zugewiesen, an window.open() oder fetch() übergeben werden usw.

Ein einfaches Beispielprogramm ist hier verfügbar:

root@kitploit:~
analyzer := jsluice.NewAnalyzer([]byte(`
    const login = (redirect) => {
        document.location = "/login?redirect=" + redirect + "&method=oauth"
    }
`))

for _, url := range analyzer.GetURLs() {
    j, err := json.MarshalIndent(url, "", "  ")
    if err != nil {
        continue
    }

    fmt.Printf("%s\n", j)
}

Beispiel ausführen:

root@kitploit:~
▶ go run examples/basic/main.go
{
  "url": "/login?redirect=EXPR\u0026method=oauth",
  "queryParams": [
    "method",
    "redirect"
  ],
  "bodyParams": [],
  "method": "GET",
  "type": "locationAssignment",
  "source": "document.location = \"/login?redirect=\" + redirect + \"\u0026method=oauth\""
}

Beachte, dass der Wert des redirect-Query-String-Parameters EXPR ist. Solcher Code ist in JavaScript üblich:

root@kitploit:~
document.location = "/login?redirect=" + redirect + "&method=oauth"

jsluice versteht String-Konkatenation und ersetzt alle Ausdrücke, deren Wert es nicht kennen kann, durch EXPR. Auch wenn dies keine hundertprozentige Lösung ist, führt dieser Ansatz meistens zu einer gültigen URL oder einem gültigen Pfad und ermöglicht es, Dinge zu entdecken, die mit anderen Ansätzen nicht leicht zu finden sind. In diesem Fall könnte ein naiver regulärer Ausdruck den method-Query-String-Parameter durchaus übersehen:

root@kitploit:~
▶ JS='document.location = "/login?redirect=" + redirect + "&method=oauth"'
▶ echo $JS | grep -oE 'document\.location = "[^"]+"'
document.location = "/login?redirect="

Benutzerdefinierte URL-Matcher

jsluice enthält einige eingebaute URL-Matcher für häufige Szenarien, aber du kannst mit der Funktion AddURLMatcher weitere hinzufügen:

root@kitploit:~
analyzer := jsluice.NewAnalyzer([]byte(`
    var fn = () => {
        var meta = {
            contact: "mailto:[email protected]",
            home: "https://example.com"
        }
        return meta
    }
`))

analyzer.AddURLMatcher(
    // The first value in the jsluice.URLMatcher struct is the type of node to look for.
    // It can be one of "string", "assignment_expression", or "call_expression"
    jsluice.URLMatcher{"string", func(n *jsluice.Node) *jsluice.URL {
        val := n.DecodedString()
        if !strings.HasPrefix(val, "mailto:") {
            return nil
        }

        return &jsluice.URL{
            URL:  val,
            Type: "mailto",
        }
    }},
)

for _, match := range analyzer.GetURLs() {
    fmt.Println(match.URL)
}

Eine Kopie dieses Beispiels gibt es hier. Du kannst es so ausführen:

root@kitploit:~
▶ go run examples/urlmatcher/main.go
mailto:[email protected]
https://example.com

jsluice erkennt mailto:-URIs standardmäßig nicht; sie wurde vom benutzerdefinierten URLMatcher gefunden.

Secrets extrahieren

Neben URLs kann jsluice auch Secrets extrahieren. Wie bei der URL-Extraktion können benutzerdefinierte Matcher bereitgestellt werden, um die Standard-Matcher zu ergänzen. Ein kurzes Beispielprogramm, das genau das tut, gibt es hier:

root@kitploit:~
analyzer := jsluice.NewAnalyzer([]byte(`
    var config = {
        apiKey: "AUTH_1a2b3c4d5e6f",
        apiURL: "https://api.example.com/v2/"
    }
`))

analyzer.AddSecretMatcher(
    // The first value in the jsluice.SecretMatcher struct is a
    // tree-sitter query to run on the JavaScript source.
    jsluice.SecretMatcher{"(pair) @match", func(n *jsluice.Node) *jsluice.Secret {
        key := n.ChildByFieldName("key").DecodedString()
        value := n.ChildByFieldName("value").DecodedString()

        if !strings.Contains(key, "api") {
            return nil
        }

        if !strings.HasPrefix(value, "AUTH_") {
            return nil
        }

        return &jsluice.Secret{
            Kind: "fakeApi",
            Data: map[string]string{
                "key":   key,
                "value": value,
            },
            Severity: jsluice.SeverityLow,
            Context:  n.Parent().AsMap(),
        }
    }},
)

for _, match := range analyzer.GetSecrets() {
    j, err := json.MarshalIndent(match, "", "  ")
    if err != nil {
        continue
    }

    fmt.Printf("%s\n", j)
}

Beispiel ausführen:

root@kitploit:~
▶ go run examples/secrets/main.go
[2023-06-14T13:04:16+0100]
{
  "kind": "fakeApi",
  "data": {
    "key": "apiKey",
    "value": "AUTH_1a2b3c4d5e6f"
  },
  "severity": "low",
  "context": {
    "apiKey": "AUTH_1a2b3c4d5e6f",
    "apiURL": "https://api.example.com/v2/"
  }
}

Da uns für die gesamte JavaScript-Quelle ein Syntaxbaum zur Verfügung steht, konnten sowohl key als auch value untersucht und das übergeordnete Objekt leicht als Kontext für den Treffer bereitgestellt werden.

Tool herunterladen