edoardottt / cariddi

Take a list of domains, crawl urls and scan for endpoints, secrets, api keys, file extensions, tokens and more
https://edoardoottavianelli.it
GNU General Public License v3.0
1.49k stars 152 forks source link
bugbounty crawler crawling endpoint-discovery endpoints go golang hacktoberfest infosec osint penetration-testing pentesting recon reconnaissance redteam scraper secret-keys secrets-detection security security-tools


Take a list of domains, crawl urls and scan for endpoints, secrets, api keys, file extensions, tokens and more

go-report-card workflows
Coded with ๐Ÿ’™ by edoardottt
Share on Twitter!

Install โ€ข Get Started โ€ข Examples โ€ข Changelog โ€ข Contributing โ€ข License

Installation ๐Ÿ“ก

Homebrew

brew install cariddi

Snap

sudo snap install cariddi

Go

go install -v github.com/edoardottt/cariddi/cmd/cariddi@latest

Pacman

pacman -Syu cariddi

Building from source

You need Go.

Get Started ๐ŸŽ‰

cariddi -h prints the help.

Usage of cariddi:
  -c int
     Concurrency level. (default 20)
  -cache
     Use the .cariddi_cache folder as cache.
  -d int
     Delay between a page crawled and another.
  -debug
     Print debug information while crawling.
  -e Hunt for juicy endpoints.
  -ef string
     Use an external file (txt, one per line) to use custom parameters for endpoints hunting.
  -err
     Hunt for errors in websites.
  -examples
     Print the examples.
  -ext int
     Hunt for juicy file extensions. Integer from 1(juicy) to 7(not juicy).
  -h Print the help.
  -headers string
     Use custom headers for each request E.g. -headers "Cookie: auth=yes;;Client: type=2".
  -headersfile string
     Read from an external file custom headers (same format of headers flag).
  -json
     Print the output as JSON in stdout.
  -i string
     Ignore the URL containing at least one of the elements of this array.
  -info
     Hunt for useful informations in websites.
  -intensive
     Crawl searching for resources matching 2nd level domain.
  -it string
     Ignore the URL containing at least one of the lines of this file.
  -oh string
     Write the output into an HTML file.
  -ot string
     Write the output into a TXT file.
  -plain
     Print only the results.
  -proxy string
     Set a Proxy to be used (http and socks5 supported).
  -rua
     Use a random browser user agent on every request.
  -s Hunt for secrets.
  -sf string
     Use an external file (txt, one per line) to use custom regexes for secrets hunting.
  -sr
     Store HTTP responses.
  -t int
     Set timeout for the requests. (default 10)
  -ua string
     Use a custom User Agent.
  -version
     Print the version.

Examples ๐Ÿ’ก

Integrate cariddi with Burpsuite Normally you use Burpsuite within your browser, so you just have to trust the burpsuite's certificate in the browser and you're done. In order to use cariddi with the BurpSuite proxy you should do some steps further. If you try to use cariddi with the option `-proxy http://127.0.0.1:8080` you will find this error in the burpsuite error log section: ```bash Received fatal alert: bad_certificate (or something similar related to the certificate). ``` To make cariddi working fine with Burpsuite you have also to trust the certificate within your entire pc, not just only the browser. These are the steps you have to follow: Go to Proxy tab in Bupsuite, then Options. Click on the CA Certificate button and export Certificate in DER format ```bash openssl x509 -in burp.der -inform DER -out burp.pem -outform PEM sudo chown root:root burp.pem sudo chmod 644 burp.pem sudo cp burp.pem /usr/local/share/ca-certificates/ sudo c_rehash cd /etc/ssl/certs/ sudo ln -s /usr/local/share/ca-certificates/burp.pem sudo c_rehash . ``` Source: Trust Burp Proxy certificate in Debian/Ubuntu After these steps, in order to use cariddi with Burpsuite you have to: 1. Open Burpsuite, making sure that the proxy is listening. 2. Use cariddi with the flag `-proxy http://127.0.0.1:8080`. 3. You will see that requests and responses will be logged in Burpsuite.

Changelog ๐Ÿ“Œ

Detailed changes for each release are documented in the release notes.

Contributing ๐Ÿ› 

Just open an issue/pull request.

Before opening a pull request, download golangci-lint and run

golangci-lint run

If there aren't errors, go ahead :)

Help me building this!

Special thanks to: go-colly, ocervell, zricethezav, projectdiscovery, tomnomnom, RegexPassive and all the contributors.

License ๐Ÿ“

This repository is under GNU General Public License v3.0.
edoardoottavianelli.it to contact me.