├── LICENSE ├── README.md ├── images └── scriptkiddi3Nobg.png ├── installer.sh └── scriptkiddi3.sh /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Neh Patel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 |
3 | SCRIPTKIDDI3 4 |

5 |

Streamline your recon and vulnerability detection process with SCRIPTKIDDI3, 6 | A recon and initial vulnerability detection tool built using shell script and open source tools.

7 | 8 | 9 |

10 | 11 |

12 |

13 | 14 | 15 | 16 |
17 |
18 | 19 |

20 | How it works • 21 | Installation • 22 | Install with Docker • 23 | Usage • 24 | MODES • 25 | Important Notes | Webhook configurations • 26 | For Developers • 27 | Credits 28 |

29 | 30 | --- 31 |

32 | 33 | 34 | Introducing SCRIPTKIDDI3, a powerful recon and initial vulnerability detection tool for Bug Bounty Hunters. Built using a variety of open-source tools and a shell script, SCRIPTKIDDI3 allows you to quickly and efficiently run a scan on the target domain and identify potential vulnerabilities. 35 | 36 | SCRIPTKIDDI3 begins by performing recon on the target system, collecting information such as subdomains, and running services with nuclei. It then uses this information to scan for known vulnerabilities and potential attack vectors, alerting you to any high-risk issues that may need to be addressed. 37 | 38 | In addition, SCRIPTKIDDI3 also includes features for identifying misconfigurations and insecure default settings with nuclei templates, helping you ensure that your systems are properly configured and secure. 39 | 40 | SCRIPTKIDDI3 is an essential tool for conducting thorough and effective recon and vulnerability assessments. 41 | Let's Find Bugs with SCRIPTKIDDI3 42 | 43 | [Thanks ChatGPT for the Description] 44 | 45 | 46 | --- 47 | ## How it Works ? 48 | This tool mainly performs 3 tasks 49 | 1. Effective Subdomain Enumeration from Various Tools 50 | 2. Get URLs with open HTTP and HTTPS service. 51 | 3. Run a Nuclei and other scans on previous output 52 | So basically, this is an autmation script for your initial recon in bugbounty 53 | 54 | --- 55 | 56 | ## Install SCRIPTKIDDI3 57 | SCRIPTKIDDI3 requires different tools to run successfully. Run the following command to install the latest version with all requirments- 58 | 59 | ```sh 60 | git clone https://github.com/thecyberneh/scriptkiddi3.git 61 | cd scriptkiddi3 62 | bash installer.sh 63 | ``` 64 | ### Install with Docker 65 | 66 | ScriptKiddi3 is now available as a Docker container, allowing users to access and utilize this powerful tool effortlessly on various platforms, including Windows, Linux, and more. This README provides a quick guide on how to get started with the ScriptKiddi3 Docker container. 67 | 68 | Get the Docker image of scriptkiddi3 69 | ```sh 70 | docker pull thecyberneh/scriptkiddi3:v1 71 | ``` 72 | 73 | How to run the Docker image of Scriptkiddi3 ? 74 | ```sh 75 | docker run -it thecyberneh/scriptkiddi3:v1 /bin/bash 76 | ``` 77 | 78 | **You can always check [SCRIPTKIDDI3's docker repository](https://hub.docker.com/r/thecyberneh/scriptkiddi3).** 79 | 80 | --- 81 | 82 | ## Usage 83 | 84 | ```sh 85 | scriptkiddi3 -h 86 | ``` 87 | This will display help for the tool. Here are all the switches it supports. 88 | 89 | ```console 90 | [ABOUT:] 91 | Streamline your recon and vulnerability detection process with SCRIPTKIDDI3, 92 | A recon and initial vulnerability detection tool built using shell script and open source tools. 93 | 94 | 95 | [Usage:] 96 | scriptkiddi3 [MODE] [FLAGS] 97 | scriptkiddi3 -m EXP -d target.com -c /path/to/config.yaml 98 | 99 | 100 | [MODES:] 101 | ['-m'/'--mode'] 102 | Available Options for MODE: 103 | SUB | sub | SUBDOMAIN | subdomain Run scriptkiddi3 in SUBDOMAIN ENUMERATION mode 104 | URL | url Run scriptkiddi3 in URL ENUMERATION mode 105 | EXP | exp | EXPLOIT | exploit Run scriptkiddi3 in Full Exploitation mode 106 | 107 | 108 | Feature of EXPLOI mode : subdomain enumaration, URL Enumeration, 109 | Vulnerability Detection with Nuclei, 110 | and Scan for SUBDOMAINE TAKEOVER 111 | 112 | [FLAGS:] 113 | [TARGET:] -d, --domain target domain to scan 114 | 115 | [CONFIG:] -c, --config path of your configuration file for subfinder 116 | 117 | [HELP:] -h, --help to get help menu 118 | 119 | [UPDATE:] -u, --update to update tool 120 | 121 | [Examples:] 122 | Run scriptkiddi3 in full Exploitation mode 123 | scriptkiddi3 -m EXP -d target.com 124 | 125 | 126 | Use your own CONFIG file for subfinder 127 | scriptkiddi3 -m EXP -d target.com -c /path/to/config.yaml 128 | 129 | 130 | Run scriptkiddi3 in SUBDOMAIN ENUMERATION mode 131 | scriptkiddi3 -m SUB -d target.com 132 | 133 | 134 | Run scriptkiddi3 in URL ENUMERATION mode 135 | scriptkiddi3 -m SUB -d target.com 136 | 137 | ``` 138 | 139 | --- 140 | 141 | 142 | ## MODES 143 | #### 1. FULL EXPLOITATION MODE
144 | Run SCRIPTKIDDI3 in FULL EXPLOITATION MODE 145 | ```sh 146 | scriptkiddi3 -m EXP -d target.com 147 | ``` 148 | 149 | FULL EXPLOITATION MODE contains following functions 150 | - Effective Subdomain Enumeration with different services and open source tools 151 | - Effective URL Enumeration ( HTTP and HTTPs service ) 152 | - Run Vulnerability Detection with Nuclei 153 | - Subdomain Takeover Test on previous results 154 |
155 | 156 | #### 2. SUBDOMAIN ENUMERATION MODE
157 | Run scriptkiddi3 in SUBDOMAIN ENUMERATION MODE 158 | ```sh 159 | scriptkiddi3 -m SUB -d target.com 160 | ``` 161 | SUBDOMAIN ENUMERATION MODE contains following functions 162 | - Effective Subdomain Enumeration with different services and open source tools 163 | - You can use this mode if you only want to get subdomains from this tool 164 | or we can say Automation of Subdmain Enumeration by different tools 165 |
166 | 167 | #### 3. URL ENUMERATION MODE
168 | Run scriptkiddi3 in URL ENUMERATION MODE 169 | ```sh 170 | scriptkiddi3 -m URL -d target.com 171 | ``` 172 | URL ENUMERATION MODE contains following functions 173 | - Same Feature as SUBDOMAIN ENUMERATION MODE but also identifies HTTP or HTTPS service 174 | 175 | Using your own CONFIG File for subfinder 176 | ```sh 177 | scriptkiddi3 -m EXP -d target.com -c /path/to/config.yaml 178 | ``` 179 | You can also provie your own CONDIF file with your API Keys for subdomain enumeration with subfinder 180 | 181 | Updating tool to latest version 182 | You can run following command to update tool 183 | ```sh 184 | scriptkiddi3 -u 185 | ``` 186 | 187 | An Example of config.yaml 188 | ```yaml 189 | binaryedge: 190 | - 0bf8919b-aab9-42e4-9574-d3b639324597 191 | - ac244e2f-b635-4581-878a-33f4e79a2c13 192 | censys: 193 | - ac244e2f-b635-4581-878a-33f4e79a2c13:dd510d6e-1b6e-4655-83f6-f347b363def9 194 | certspotter: [] 195 | passivetotal: 196 | - sample-email@user.com:sample_password 197 | securitytrails: [] 198 | shodan: 199 | - AAAAClP1bJJSRMEYJazgwhJKrggRwKA 200 | github: 201 | - ghp_lkyJGU3jv1xmwk4SDXavrLDJ4dl2pSJMzj4X 202 | - ghp_gkUuhkIYdQPj13ifH4KA3cXRn8JD2lqir2d4 203 | zoomeye: 204 | - zoomeye_username:zoomeye_password 205 | ``` 206 | 207 | --- 208 | 209 | ## Important Notes | Webhook configurations 210 | - Scriptkiddi3 is using webhooks to send notifications to your Discord/MSTeam/Telegram and other services, so make sure to configure the web hooks by addind URL of your webhook in 211 | `/$HOME/.config/notify/provider-config.yaml` 212 | - The default links will send the notifiction to my (thecyberneh's) discord and MSTeam. 213 | - You can paste the URL of your own webhook in following `provider-config.yaml` file ( Do not forget to save it in location :- `/$HOME/.config/notify/provider-config.yaml` 214 | ```yaml 215 | slack: 216 | - id: "slack" 217 | slack_channel: "recon" 218 | slack_username: "test" 219 | slack_format: "{{data}}" 220 | slack_webhook_url: "https://hooks.slack.com/services/XXXXXX" 221 | 222 | - id: "vulns" 223 | slack_channel: "vulns" 224 | slack_username: "test" 225 | slack_format: "{{data}}" 226 | slack_webhook_url: "https://hooks.slack.com/services/XXXXXX" 227 | 228 | discord: 229 | - id: "crawl" 230 | discord_channel: "crawl" 231 | discord_username: "test" 232 | discord_format: "{{data}}" 233 | discord_webhook_url: "https://discord.com/api/webhooks/XXXXXXXX" 234 | 235 | - id: "subs" 236 | discord_channel: "subs" 237 | discord_username: "test" 238 | discord_format: "{{data}}" 239 | discord_webhook_url: "https://discord.com/api/webhooks/XXXXXXXX" 240 | 241 | telegram: 242 | - id: "tel" 243 | telegram_api_key: "XXXXXXXXXXXX" 244 | telegram_chat_id: "XXXXXXXX" 245 | telegram_format: "{{data}}" 246 | telegram_parsemode: "Markdown" # None/Markdown/MarkdownV2/HTML (https://core.telegram.org/bots/api#formatting-options) 247 | 248 | pushover: 249 | - id: "push" 250 | pushover_user_key: "XXXX" 251 | pushover_api_token: "YYYY" 252 | pushover_format: "{{data}}" 253 | pushover_devices: 254 | - "iphone" 255 | 256 | smtp: 257 | - id: email 258 | smtp_server: mail.example.com 259 | smtp_username: test@example.com 260 | smtp_password: password 261 | from_address: from@email.com 262 | smtp_cc: 263 | - to@email.com 264 | smtp_format: "{{data}}" 265 | subject: "Email subject" 266 | smtp_html: false 267 | smtp_disable_starttls: false 268 | 269 | googlechat: 270 | - id: "gc" 271 | key: "XXXXXXXX" 272 | token: "XXXXXX" 273 | space: "XXXXXX" 274 | google_chat_format: "{{data}}" 275 | 276 | teams: 277 | - id: "recon" 278 | teams_webhook_url: "https://.webhook.office.com/webhookb2/xx@xx/IncomingWebhook/xx" 279 | teams_format: "{{data}}" 280 | 281 | custom: 282 | - id: webhook 283 | custom_webhook_url: http://host/api/webhook 284 | custom_method: GET 285 | custom_format: '{{data}}' 286 | custom_headers: 287 | Content-Type: application/json 288 | X-Api-Key: XXXXX 289 | 290 | custom: 291 | - id: webhookJson 292 | custom_webhook_url: http://host/api/webhook 293 | custom_method: GET 294 | custom_format: '{"text":{{dataJsonString}} }' 295 | custom_headers: 296 | Content-Type: application/json 297 | X-Api-Key: XXXXX 298 | 299 | custom: 300 | - id: webhook 301 | custom_webhook_url: http://host/api/webhook 302 | custom_method: GET 303 | custom_sprig: '{"text":"{{ .url }}"}' 304 | custom_headers: 305 | Content-Type: application/json 306 | X-Api-Key: XXXXX 307 | ``` 308 | 309 | --- 310 | 311 | ## For Developers 312 | If you have ideas for new functionality or modes that you would like to see in this tool, you can always submit a pull request (PR) to contribute your changes. 313 | 314 | If you have any other queries, you can always contact me on Twitter(thecyberneh) 315 | 316 | 317 | ## Credits 318 | I would like to express my gratitude to all of the open source projects that have made this tool possible and have made recon tasks easier to accomplish. 319 | -------------------------------------------------------------------------------- /images/scriptkiddi3Nobg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecyberneh/scriptkiddi3/934ea1550d87a3aec2ac32df983a19a377c407ee/images/scriptkiddi3Nobg.png -------------------------------------------------------------------------------- /installer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo apt-get install shc 3 | sudo apt-get install jq 4 | sudo apt-get install unzip 5 | #sudo apt install cargo 6 | go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest 7 | go install -v github.com/owasp-amass/amass/v4/...@master 8 | go install github.com/ffuf/ffuf/v2@latest 9 | go install -v github.com/LukaSikic/subzy@latest 10 | go install -v github.com/projectdiscovery/notify/cmd/notify@latest 11 | wget https://github.com/findomain/findomain/releases/latest/download/findomain-linux.zip 12 | unzip findomain-linux.zip 13 | mv findomain /$HOME/go/bin 14 | chmod 777 /$HOME/go/bin/findomain 15 | go install github.com/tomnomnom/httprobe@latest 16 | go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest 17 | go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest 18 | #wget https://github.com/junnlikestea/vita/releases/download/0.1.16/vita-0.1.16-x86_64-unknown-linux-musl.tar.gz 19 | #tar xsvf vita-0.1.16-x86_64-unknown-linux-musl.tar.gz 20 | #cp vita-0.1.16-x86_64-unknown-linux-musl/vita /$HOME/go/bin/ 21 | #chmod 777 /$HOME/go/bin/vita 22 | 23 | shc -f scriptkiddi3.sh 24 | mv scriptkiddi3.sh.x scriptkiddi3 25 | cp scriptkiddi3 /$HOME/go/bin 26 | chmod 777 /$HOME/go/bin/scriptkiddi3 27 | rm -rf scriptkiddi3.sh 28 | 29 | wget https://wordlists-cdn.assetnote.io/data/automated/httparchive_subdomains_2020_11_18.txt -O subdomains.txt 30 | sudo mv subdomains.txt /usr/share/wordlists/ 31 | sudo chmod 777 /usr/share/wordlists/subdomains.txt 32 | cd /$HOME/.config/ 33 | mkdir notify 34 | 35 | wget "https://raw.githubusercontent.com/projectdiscovery/notify/main/cmd/integration-test/test-config.yaml" 36 | mv test-config.yaml provider-config.yaml 37 | mv provider-config.yaml /$HOME/.config/notify/ 38 | 39 | 40 | echo -e "DO NOT FORGET TO ADD YOUR OWN WEBHOOK URL IN $HOME/.config/notify/provider-config.yaml" 41 | -------------------------------------------------------------------------------- /scriptkiddi3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | dblue="\e[0;94m" 4 | dred="\033[1;31m" 5 | lblue="\e[96m" 6 | lred="\033[31m" 7 | lyellow="\e[93m" 8 | yellow="\e[33m" 9 | reset="\e[0m" 10 | 11 | 12 | 13 | 14 | #--------------------------Functions------------------------------# 15 | #-----------------------------------------------------------------# 16 | 17 | 18 | #forBanner 19 | banner () { 20 | printf ""$lblue" 21 | ███████╗ ██████╗██████╗ ██╗██████╗ ████████╗██╗ ██╗██╗██████╗ ██████╗ ██╗██████╗ 22 | ██╔════╝██╔════╝██╔══██╗██║██╔══██╗╚══██╔══╝██║ ██╔╝██║██╔══██╗██╔══██╗██║╚════██╗ 23 | ███████╗██║ ██████╔╝██║██████╔╝ ██║ █████╔╝ ██║██║ ██║██║ ██║██║ █████╔╝ 24 | ╚════██║██║ ██╔══██╗██║██╔═══╝ ██║ ██╔═██╗ ██║██║ ██║██║ ██║██║ ╚═══██╗ 25 | ███████║╚██████╗██║ ██║██║██║ ██║ ██║ ██╗██║██████╔╝██████╔╝██║██████╔╝ 26 | ╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚═════╝ ╚═════╝ ╚═╝╚═════╝ 27 | 28 | 29 | V0.2.0 (beta) 30 | Coded By Neh Patel with Love <3 ❤ 31 | "$reset"" 32 | 33 | 34 | printf ""$lred" 35 | Twitter :- https://twitter.com/thecyberneh 36 | Instagram :- https://www.instagram.com/thecyberneh/ 37 | Linkedin :- https://linkedin.com/in/thecyberneh 38 | "$reset"" 39 | echo -e "\n" 40 | } 41 | 42 | 43 | 44 | #-----------------------------------------------------------------# 45 | 46 | 47 | #for_print_INFO 48 | fun_info () { 49 | echo -e "[${dblue}INFO${reset}] " 50 | } 51 | 52 | 53 | #-----------------------------------------------------------------# 54 | 55 | 56 | #for_print_INIT 57 | fun_init () { 58 | echo -e "[${dblue}INIT${reset}] " 59 | } 60 | 61 | 62 | #-----------------------------------------------------------------# 63 | 64 | 65 | #for_print_INPUT 66 | fun_input () { 67 | echo -e "[${dblue}INPUT${reset}]" 68 | } 69 | 70 | 71 | #-----------------------------------------------------------------# 72 | 73 | 74 | #for_print_IMP 75 | fun_imp () { 76 | echo -e "[${dred}IMP${reset}] " 77 | } 78 | 79 | 80 | #-----------------------------------------------------------------# 81 | 82 | 83 | #for_print_ERR 84 | fun_err () { 85 | echo -e "[${dred}ERR${reset}] " 86 | } 87 | 88 | 89 | #-----------------------------------------------------------------# 90 | 91 | 92 | #for_create_directory 93 | fun_dir () { 94 | mkdir ${DOMAIN} 95 | cd ${DOMAIN} 96 | sleep .5 97 | echo -e "$(fun_info) Saving all output files in directory: ${DOMAIN}" 98 | sleep .5 99 | echo -e "\n" 100 | } 101 | 102 | 103 | #-----------------------------------------------------------------# 104 | 105 | 106 | #print_flags 107 | fun_flags () { 108 | sleep .5 109 | echo -e "$(fun_info) Target Domain:- $DOMAIN" 110 | echo -e "\n" 111 | sleep .5 112 | echo -e "$(fun_info) Config File:- $CONFIG" 113 | echo -e "\n" 114 | sleep .5 115 | echo -e "$(fun_info) Mode:- $MODE" 116 | echo -e "\n" 117 | } 118 | 119 | 120 | #-----------------------------------------------------------------# 121 | 122 | 123 | #for_help 124 | fun_help () { 125 | banner 126 | echo -e "${lyellow}[ABOUT]${reset}" 127 | echo -e " Streamline your recon and vulnerability detection process with SCRIPTKIDDI3," 128 | echo -e " A recon and initial vulnerability detection tool built using shell script and open source tools." 129 | echo -e "\n" 130 | echo -e "${lyellow}[Usage:]${reset}" 131 | echo -e " scriptkiddi3 [MODE] [FLAGS]" 132 | echo -e " scriptkiddi3 -m EXP -d target.com -c /path/to/config.yaml" 133 | echo -e "\n" 134 | 135 | echo -e "${lyellow}[MODES:]${reset}" 136 | echo -e "${yellow} ['-m'/'--mode']${reset}" 137 | echo -e " Available Options for MODE: " 138 | echo -e " SUB | sub | SUBDOMAIN | subdomain Run scriptkiddi3 in SUBDOMAIN ENUMERATION mode" 139 | echo -e " URL | url Run scriptkiddi3 in URL ENUMERATION mode" 140 | echo -e " EXP | exp | EXPLOIT | exploit Run scriptkiddi3 in Full Exploitation mode" 141 | echo -e "\n" 142 | echo -e " Feature of EXPLOIT mode : subdomain enumaration, URL Enumeration," 143 | echo -e " Vulnerability Detection with Nuclei," 144 | echo -e " and Scan for SUBDOMAINE TAKEOVER" 145 | echo -e "" 146 | 147 | 148 | echo -e "${lyellow}[FLAGS:]${reset}" 149 | echo -e "${yellow} [TARGET:]${reset} -d, --domain target domain to scan" 150 | #echo -e " -d, --domain target domain to scan" 151 | echo -e "\n" 152 | echo -e "${yellow} [CONFIG:]${reset} -c, --config path of your configuration file for subfinder" 153 | #echo -e " -c, --config path of your configuration file for subfinder" 154 | echo -e "\n" 155 | echo -e "${yellow} [HELP:]${reset} -h, --help to get help menu" 156 | #echo -e " -h, --help to get help menu" 157 | echo -e "\n" 158 | echo -e "${yellow} [UPDATE:]${reset} -u, --update to update tool" 159 | echo -e "\n" 160 | echo -e "${lyellow}[Examples:]${reset}" 161 | echo -e " Run scriptkiddi3 in full Exploitation mode" 162 | echo -e "${lyellow} scriptkiddi3 -m EXP -d target.com${reset}" 163 | 164 | echo -e "\n" 165 | echo -e " Use your own CONFIG file for subfinder" 166 | echo -e "${lyellow} scriptkiddi3 -m EXP -d target.com -c /path/to/config.yaml${reset}" 167 | echo -e "\n" 168 | 169 | echo -e " Run scriptkiddi3 in SUBDOMAIN ENUMERATION mode" 170 | echo -e "${lyellow} scriptkiddi3 -m SUB -d target.com${reset}" 171 | echo -e "\n" 172 | 173 | echo -e " Run scriptkiddi3 in URL ENUMERATION mode" 174 | echo -e "${lyellow} scriptkiddi3 -m URL -d target.com${reset}" 175 | echo -e "\n" 176 | } 177 | 178 | 179 | #-----------------------------------------------------------------# 180 | 181 | 182 | #forRunSubzy 183 | run_subzy () { 184 | echo -e "$(fun_info) Checking for Subdomain Takeover " | notify -silent 185 | subzy run --targets allSubdomains.txt | tee subDomain_takeover_Results.txt 186 | echo -e "\n" 187 | } 188 | 189 | 190 | #-----------------------------------------------------------------# 191 | 192 | 193 | #for_run_Subfinder 194 | fun_subFinderEnum () { 195 | if [ "$CONFIG" = '' ] 196 | then 197 | echo -e "$(fun_init) Initializing SUBDOMAIN ENUMERATION from subfinder... " | notify -silent 198 | echo -e "\n" 199 | echo -e "$(fun_info) We are not using API Keys " 200 | echo -e "\n" 201 | echo -e "\n" 202 | subfinder -silent -d $DOMAIN -o subfinderWAPIResults.txt 203 | echo -e "\n" 204 | echo -e "\n" 205 | echo -e "$(fun_info) It will take some time depens on your target size " 206 | echo -e "\n" 207 | echo -e "\n" 208 | echo -e "$(fun_info) Subfider Enumeration Completed, Results saves in file: ${lyellow}subfinderWAPIResults.txt${reset}" | notify -silent 209 | touch subfinderNoAPIResults.txt 210 | echo -e "File touch done" 211 | else 212 | echo -e "$(fun_init) Initializing SUBDOMAIN ENUMERATION from subfinder... " | notify -silent 213 | echo -e "\n" 214 | echo -e "$(fun_info) We are using API Keys " 215 | echo -e "\n" 216 | echo -e "\n" 217 | subfinder -d $DOMAIN -pc $CONFIG -o subfinderNoAPIResults.txt 218 | echo -e "\n" 219 | echo -e "\n" 220 | echo -e "$(fun_info) Subfider Enumeration Completed, Results saves in file: ${lyellow}subfinderNoAPIResults.txt${reset}" | notify -silent 221 | touch subfinderWAPIResults.txt 222 | fi 223 | echo -e "\n" 224 | echo -e "$(fun_info) Removing Duplicates" 225 | echo -e "\n" 226 | sort subfinderWAPIResults.txt subfinderNoAPIResults.txt | uniq | tee subfinerMainResults.txt 227 | 228 | } 229 | 230 | 231 | 232 | 233 | #-----------------------------------------------------------------# 234 | 235 | 236 | #for_run_findomain 237 | fun_findomainEnum () { 238 | echo -e "\n" 239 | echo -e "$(fun_init) Initializing SUBDOMAIN ENUMERATION from findomain... " | notify -silent 240 | echo -e "\n" 241 | echo -e "\n" 242 | findomain --target $DOMAIN --output 243 | echo -e "\n" 244 | echo -e "\n" 245 | echo -e "$(fun_info) Findomain Enumeration Completed, Results saves in file: ${lyellow}${DOMAIN}.txt${reset}" | notify -silent 246 | } 247 | 248 | 249 | #-----------------------------------------------------------------# 250 | 251 | 252 | #for_ownedBy 253 | ownedby () { 254 | echo -e "\n" 255 | read -t 5 -p "$(fun_input) Want to scan on other Domain/Assets owned by company ? " OWNEDBY 256 | echo -e "\n" 257 | if [ "$OWNEDBY" = 'y' ] || [ "$OWNEDBY" = 'Y' ] 258 | then 259 | sleep .5 260 | echo -e "\n" 261 | echo -e "$(fun_init) Initializing SUBDOMAIN ENUMERATION from Amass intel... " | notify -silent 262 | echo -e "\n" 263 | echo -e "\n" 264 | amass intel -whois -d $DOMAIN -o amassIntelResults.txt 265 | echo -e "\n" 266 | echo -e "\n" 267 | echo -e "$(fun_info) Amass [Mode:Intel] Enumeration Completed, Results saves in file: ${lyellow}amassIntelResults.txt${reset}" | notify -silent 268 | else 269 | touch amassIntelResults.txt 270 | fi 271 | } 272 | 273 | 274 | #-----------------------------------------------------------------# 275 | 276 | 277 | #for_run_amassEnum 278 | fun_amassEnum () { 279 | echo -e "\n" 280 | echo -e "$(fun_init) Initializing SUBDOMAIN ENUMERATION from Amass enum... " | notify -silent 281 | echo -e "\n" 282 | echo -e "\n" 283 | amass enum -passive -norecursive -d $DOMAIN | tee amassEnumResults.txt 284 | echo -e "\n" 285 | echo -e "\n" 286 | echo -e "$(fun_info) Amass [Mode:Enum] Enumeration Completed, Results saves in file: ${lyellow}amassEnumResults.txt${reset}" | notify -silent 287 | 288 | ownedby 289 | sort amassEnumResults.txt amassIntelResults.txt | uniq | tee amassMainResults.txt 290 | 291 | } 292 | 293 | 294 | #-----------------------------------------------------------------# 295 | 296 | 297 | #for_run_ffufbrute 298 | fun_ffufBruteEnum () { 299 | echo -e "\n" 300 | read -t 5 -p "$(fun_input) Want to get subdomain with bruteforce ? " FFUFBF 301 | echo -e "\n" 302 | if [ "$FFUFBF" = 'y' ] || [ "$FFUFBF" = 'Y' ] 303 | then 304 | echo -e "\n" 305 | echo -e "$(fun_init) Initializing SUBDOMAIN ENUMERATION from FFUF Bruteforce... " | notify -silent 306 | echo -e "\n" 307 | echo -e "\n" 308 | ffuf -u "https://FUZZ.${DOMAIN}/" -w /usr/share/wordlists/subdomains.txt -v | grep '| URL |' | grep -Po '.*?//\K.*?(?=/)' | tee ffufBruteSubdResults.txt 309 | echo -e "\n" 310 | echo -e "\n" 311 | echo -e "$(fun_info) FFUF Bruteforce Completed, Results saves in file: ${lyellow}ffufBruteSubdResults.txt${reset}" | notify -silent 312 | else 313 | touch ffufBruteSubdResults.txt 314 | fi 315 | } 316 | 317 | 318 | #-----------------------------------------------------------------# 319 | 320 | 321 | #from_crtsh 322 | fun_crtshEnum () { 323 | echo -e "\n" 324 | echo -e "$(fun_init) Initializing SUBDOMAIN ENUMERATION from crt.sh ... " | notify -silent 325 | echo -e "\n" 326 | echo -e "\n" 327 | curl -s "https://crt.sh?q=${DOMAIN}&output=json" | jq ".[].common_name,.[].name_value" | cut -d'"' -f2 | sed 's/\\n/\n/g' | sed 's/\*.//g'| sed -r 's/([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})//g' | sort | uniq | tee crtshResults.txt 328 | echo -e "\n" 329 | echo -e "\n" 330 | echo -e "$(fun_info) CRT SH Bruteforce Completed, Results saves in file: ${lyellow}crtshResults.txt${reset}" | notify -silent 331 | } 332 | 333 | #-----------------------------------------------------------------# 334 | 335 | 336 | #for_gather_all_Subdomain 337 | fun_getAllSubd () { 338 | fun_subFinderEnum 339 | fun_findomainEnum 340 | #fun_amassEnum 341 | fun_ffufBruteEnum 342 | fun_crtshEnum 343 | echo -e "\n" 344 | echo -e "$(fun_info) Removing Duplicates" 345 | echo -e "\n" 346 | sort subfinerMainResults.txt ${DOMAIN}.txt ffufBruteSubdResults.txt crtshResults.txt | uniq | tee allSubdomains.txt 347 | } 348 | 349 | 350 | #-----------------------------------------------------------------# 351 | 352 | 353 | #DomainToUrl 354 | fun_getUrl () { 355 | echo -e "\n" 356 | echo -e "$(fun_init) Getting URLs from httprobe... " | notify -silent 357 | echo -e "\n" 358 | echo -e "\n" 359 | cat allSubdomains.txt | httprobe | tee httprobeResults.txt 360 | echo -e "\n" 361 | echo -e "\n" 362 | echo -e "$(fun_init) Getting URLs from httpx... " | notify -silent 363 | echo -e "\n" 364 | echo -e "\n" 365 | echo -e "$(fun_info) It will take some time depens on your target size " 366 | echo -e "\n" 367 | echo -e "\n" 368 | cat allSubdomains.txt | httpx -silent | tee httpxResults.txt 369 | echo -e "\n" 370 | sort httprobeResults.txt httpxResults.txt | uniq | tee allUrls.txt 371 | echo -e "\n" 372 | echo -e "\n" 373 | echo -e "$(fun_info) URL Enumeration, Results saves in file: ${lyellow}allUrls.txt${reset}" | notify -silent 374 | 375 | } 376 | 377 | 378 | #-----------------------------------------------------------------# 379 | 380 | 381 | #run_nuclei 382 | fun_runNuclei () { 383 | echo -e "\n" 384 | echo -e "$(fun_init) Running Vulnerability detection " | notify -silent 385 | echo -e "\n" 386 | echo -e "\n" 387 | nuclei -silent -l allUrls.txt -t $HOME/nuclei-templates/ -o nucleiResults.txt --stats | notify -silent 388 | } 389 | 390 | 391 | #-----------------------------------------------------------------# 392 | 393 | 394 | #for_update 395 | fun_update () { 396 | git clone https://github.com/thecyberneh/scriptkiddi3.git 397 | cd thecyberneh 398 | bash installer.sh 399 | } 400 | 401 | #-----------------------------------------------------------------# 402 | #-----------------------------------------------------------------# 403 | 404 | while true; do 405 | case "$1" in 406 | '-d'|'--domain') 407 | if [ "$2" = '' ] 408 | then 409 | echo -e "$(fun_err) Value of '-d'\'--domain' must not be blank" 410 | exit 411 | fi 412 | 413 | DOMAIN=$2 414 | shift 2 415 | continue 416 | ;; 417 | '-m'|'--mode') 418 | 419 | if [ "$2" = '' ] 420 | then 421 | echo -e "$(fun_err) Value of '-m'\'--mode' must not be blank" 422 | echo -e "$(fun_info) Prining Help Menu" 423 | 424 | exit 425 | fi 426 | 427 | MODE=$2 428 | shift 2 429 | continue 430 | ;; 431 | '-c'|'--config') 432 | 433 | if [ "$2" = '' ] 434 | then 435 | echo -e "$(fun_err) Value of '-c'/'--config' must not be blank" 436 | echo -e "$(fun_info) Remove '-c'/'--config' flag if you want to run with default config" 437 | echo -e "$(fun_info) Prining Help Menu" 438 | exit 439 | fi 440 | 441 | CONFIG=$2 442 | shift 2 443 | continue 444 | ;; 445 | 446 | '-h'| '--help') 447 | fun_help 448 | exit 1 449 | ;; 450 | 451 | '-u'|'--update') 452 | banner 453 | fun_update 454 | exit 1 455 | ;; 456 | 457 | '') 458 | break 459 | ;; 460 | 461 | *) 462 | echo "Unknown argument: $1" 463 | exit 1 464 | ;; 465 | 466 | 467 | esac 468 | done 469 | 470 | 471 | #-----------------------------------------------------------------# 472 | 473 | 474 | if [ "$MODE" = 'sub' ] || [ "$MODE" = 'SUB' ] || [ "$MODE" = 'subdomain' ] || [ "$MODE" = 'SUBDOMAIN' ] 475 | then 476 | banner 477 | fun_flags 478 | fun_dir 479 | fun_getAllSubd 480 | 481 | elif [ "$MODE" = 'url' ] || [ "$MODE" = 'URL' ] 482 | then 483 | banner 484 | fun_flags 485 | fun_dir 486 | fun_getAllSubd 487 | fun_getUrl 488 | 489 | elif [ "$MODE" = 'exploit' ] || [ "$MODE" = 'EXPLOIT' ] || [ "$MODE" = 'EXP' ] || [ "$MODE" = 'exp' ] 490 | then 491 | banner 492 | fun_flags 493 | fun_dir 494 | fun_getAllSubd 495 | fun_getUrl 496 | fun_runNuclei 497 | run_subzy 498 | 499 | else 500 | echo -e "$(fun_err) Unable to understand ${lyellow}MODE${reset}, Running help Menu" 501 | fun_help 502 | fi 503 | --------------------------------------------------------------------------------