Upload folder using huggingface_hub
Browse files- .gitattributes +3 -0
- Dockerfile +24 -0
- Dorks/alldorksv3 +513 -0
- Dorks/medium_dorks.txt +240 -0
- GitDorker Help.png +3 -0
- GitDorker Results.png +3 -0
- GitDorker Usage Example - Tesla.png +3 -0
- GitDorker.png +0 -0
- GitDorker.py +632 -0
- README.md +85 -5
- app.py +101 -0
- dummycreds +12 -0
- requirements.txt +7 -0
- tf/TOKENSFILE +0 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
GitDorker[[:space:]]Help.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
GitDorker[[:space:]]Results.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
GitDorker[[:space:]]Usage[[:space:]]Example[[:space:]]-[[:space:]]Tesla.png filter=lfs diff=lfs merge=lfs -text
|
Dockerfile
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Use an official Python runtime as a parent image
|
| 2 |
+
FROM python:3.9-slim
|
| 3 |
+
|
| 4 |
+
# Set the working directory in the container
|
| 5 |
+
WORKDIR /app
|
| 6 |
+
|
| 7 |
+
# Copy the current directory contents into the container at /app
|
| 8 |
+
# This includes GitDorker.py, app.py, Dorks/, requirements.txt, etc.
|
| 9 |
+
COPY . .
|
| 10 |
+
|
| 11 |
+
# Install any needed packages specified in requirements.txt
|
| 12 |
+
# The --no-cache-dir option is used to reduce the image size
|
| 13 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
| 14 |
+
|
| 15 |
+
# Make port 7860 available to the world outside this container
|
| 16 |
+
# This is the default port Hugging Face Spaces uses
|
| 17 |
+
EXPOSE 7860
|
| 18 |
+
|
| 19 |
+
# Define environment variable
|
| 20 |
+
ENV NAME GitDorker
|
| 21 |
+
|
| 22 |
+
# Run app.py when the container launches
|
| 23 |
+
# Uvicorn is the server that will run our FastAPI application
|
| 24 |
+
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
|
Dorks/alldorksv3
ADDED
|
@@ -0,0 +1,513 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.mlab.com password
|
| 2 |
+
WFClient Password extension:ica
|
| 3 |
+
access_key
|
| 4 |
+
access_token
|
| 5 |
+
admin_pass
|
| 6 |
+
admin_user
|
| 7 |
+
algolia_admin_key
|
| 8 |
+
algolia_api_key
|
| 9 |
+
alias_pass
|
| 10 |
+
alicloud_access_key
|
| 11 |
+
amazon_secret_access_key
|
| 12 |
+
amazonaws
|
| 13 |
+
ansible_vault_password
|
| 14 |
+
aos_key
|
| 15 |
+
api_key
|
| 16 |
+
api_key_secret
|
| 17 |
+
api_key_sid
|
| 18 |
+
api_secret
|
| 19 |
+
api.googlemaps AIza
|
| 20 |
+
apidocs
|
| 21 |
+
apikey
|
| 22 |
+
apiSecret
|
| 23 |
+
app_debug
|
| 24 |
+
app_id
|
| 25 |
+
app_key
|
| 26 |
+
app_log_level
|
| 27 |
+
app_secret
|
| 28 |
+
appkey
|
| 29 |
+
appkeysecret
|
| 30 |
+
application_key
|
| 31 |
+
appsecret
|
| 32 |
+
appspot
|
| 33 |
+
auth_token
|
| 34 |
+
authorizationToken
|
| 35 |
+
authsecret
|
| 36 |
+
aws_access
|
| 37 |
+
aws_access_key_id
|
| 38 |
+
aws_bucket
|
| 39 |
+
aws_key
|
| 40 |
+
aws_secret
|
| 41 |
+
aws_secret_key
|
| 42 |
+
aws_token
|
| 43 |
+
AWSSecretKey
|
| 44 |
+
b2_app_key
|
| 45 |
+
bashrc password
|
| 46 |
+
bintray_apikey
|
| 47 |
+
bintray_gpg_password
|
| 48 |
+
bintray_key
|
| 49 |
+
bintraykey
|
| 50 |
+
bluemix_api_key
|
| 51 |
+
bluemix_pass
|
| 52 |
+
browserstack_access_key
|
| 53 |
+
bucket_password
|
| 54 |
+
bucketeer_aws_access_key_id
|
| 55 |
+
bucketeer_aws_secret_access_key
|
| 56 |
+
built_branch_deploy_key
|
| 57 |
+
bx_password
|
| 58 |
+
cache_driver
|
| 59 |
+
cache_s3_secret_key
|
| 60 |
+
cattle_access_key
|
| 61 |
+
cattle_secret_key
|
| 62 |
+
certificate_password
|
| 63 |
+
ci_deploy_password
|
| 64 |
+
client_secret
|
| 65 |
+
client_zpk_secret_key
|
| 66 |
+
clojars_password
|
| 67 |
+
cloud_api_key
|
| 68 |
+
cloud_watch_aws_access_key
|
| 69 |
+
cloudant_password
|
| 70 |
+
cloudflare_api_key
|
| 71 |
+
cloudflare_auth_key
|
| 72 |
+
cloudinary_api_secret
|
| 73 |
+
cloudinary_name
|
| 74 |
+
codecov_token
|
| 75 |
+
config
|
| 76 |
+
conn.login
|
| 77 |
+
connectionstring
|
| 78 |
+
consumer_key
|
| 79 |
+
consumer_secret
|
| 80 |
+
credentials
|
| 81 |
+
cypress_record_key
|
| 82 |
+
database_password
|
| 83 |
+
database_schema_test
|
| 84 |
+
datadog_api_key
|
| 85 |
+
datadog_app_key
|
| 86 |
+
db_password
|
| 87 |
+
db_server
|
| 88 |
+
db_username
|
| 89 |
+
dbpasswd
|
| 90 |
+
dbpassword
|
| 91 |
+
dbuser
|
| 92 |
+
deploy_password
|
| 93 |
+
digitalocean_ssh_key_body
|
| 94 |
+
digitalocean_ssh_key_ids
|
| 95 |
+
docker_hub_password
|
| 96 |
+
docker_key
|
| 97 |
+
docker_pass
|
| 98 |
+
docker_passwd
|
| 99 |
+
docker_password
|
| 100 |
+
dockerhub_password
|
| 101 |
+
dockerhubpassword
|
| 102 |
+
dot-files
|
| 103 |
+
dotfiles
|
| 104 |
+
droplet_travis_password
|
| 105 |
+
dynamoaccesskeyid
|
| 106 |
+
dynamosecretaccesskey
|
| 107 |
+
elastica_host
|
| 108 |
+
elastica_port
|
| 109 |
+
elasticsearch_password
|
| 110 |
+
encryption_key
|
| 111 |
+
encryption_password
|
| 112 |
+
env.heroku_api_key
|
| 113 |
+
env.sonatype_password
|
| 114 |
+
eureka.awssecretkey
|
| 115 |
+
extension:avastlic support.avast.com
|
| 116 |
+
extension:bat
|
| 117 |
+
extension:cfg
|
| 118 |
+
extension:dbeaver-data-sources.xml
|
| 119 |
+
extension:env
|
| 120 |
+
extension:exs
|
| 121 |
+
extension:ini
|
| 122 |
+
extension:json api.forecast.io
|
| 123 |
+
extension:json googleusercontent client_secret
|
| 124 |
+
extension:json mongolab.com
|
| 125 |
+
extension:pem
|
| 126 |
+
extension:pem private
|
| 127 |
+
extension:ppk
|
| 128 |
+
extension:ppk private
|
| 129 |
+
extension:properties
|
| 130 |
+
extension:sh
|
| 131 |
+
extension:sls
|
| 132 |
+
extension:sql
|
| 133 |
+
extension:sql mysql dump
|
| 134 |
+
extension:sql mysql dump password
|
| 135 |
+
extension:yaml mongolab.com
|
| 136 |
+
extension:zsh
|
| 137 |
+
fabricApiSecret
|
| 138 |
+
facebook_secret
|
| 139 |
+
fb_secret
|
| 140 |
+
filename:_netrc password
|
| 141 |
+
filename:.bash_history
|
| 142 |
+
filename:.bash_profile aws
|
| 143 |
+
filename:.bashrc mailchimp
|
| 144 |
+
filename:.bashrc password
|
| 145 |
+
filename:.cshrc
|
| 146 |
+
filename:.dockercfg auth
|
| 147 |
+
filename:.env DB_USERNAME NOT homestead
|
| 148 |
+
filename:.env MAIL_HOSTsmtp.gmail.com
|
| 149 |
+
filename:.esmtprc password
|
| 150 |
+
filename:.ftpconfig
|
| 151 |
+
filename:.git-credentials
|
| 152 |
+
filename:.history
|
| 153 |
+
filename:.htpasswd
|
| 154 |
+
filename:.netrc password
|
| 155 |
+
filename:.npmrc _auth
|
| 156 |
+
filename:.pgpass
|
| 157 |
+
filename:.remote-sync.json
|
| 158 |
+
filename:.s3cfg
|
| 159 |
+
filename:.sh_history
|
| 160 |
+
filename:.tugboat NOT _tugboat
|
| 161 |
+
filename:bash
|
| 162 |
+
filename:bash_history
|
| 163 |
+
filename:bash_profile
|
| 164 |
+
filename:bashrc
|
| 165 |
+
filename:beanstalkd.yml
|
| 166 |
+
filename:CCCam.cfg
|
| 167 |
+
filename:composer.json
|
| 168 |
+
filename:config
|
| 169 |
+
filename:config irc_pass
|
| 170 |
+
filename:config.json auths
|
| 171 |
+
filename:config.php dbpasswd
|
| 172 |
+
filename:configuration.php JConfig password
|
| 173 |
+
filename:connections
|
| 174 |
+
filename:connections.xml
|
| 175 |
+
filename:constants
|
| 176 |
+
filename:credentials
|
| 177 |
+
filename:credentials aws_access_key_id
|
| 178 |
+
filename:cshrc
|
| 179 |
+
filename:database
|
| 180 |
+
filename:dbeaver-data-sources.xml
|
| 181 |
+
filename:deploy.rake
|
| 182 |
+
filename:deployment-config.json
|
| 183 |
+
filename:dhcpd.conf
|
| 184 |
+
filename:dockercfg
|
| 185 |
+
filename:env
|
| 186 |
+
filename:environment
|
| 187 |
+
filename:express.conf
|
| 188 |
+
filename:express.conf path:.openshift
|
| 189 |
+
filename:filezilla.xml
|
| 190 |
+
filename:filezilla.xml Pass
|
| 191 |
+
filename:git-credentials
|
| 192 |
+
filename:gitconfig
|
| 193 |
+
filename:global
|
| 194 |
+
filename:history
|
| 195 |
+
filename:htpasswd
|
| 196 |
+
filename:hub oauth_token
|
| 197 |
+
filename:id_dsa
|
| 198 |
+
filename:id_rsa
|
| 199 |
+
filename:id_rsa or filename:id_dsa
|
| 200 |
+
filename:idea14.key
|
| 201 |
+
filename:known_hosts
|
| 202 |
+
filename:logins.json
|
| 203 |
+
filename:makefile
|
| 204 |
+
filename:master.key path:config
|
| 205 |
+
filename:netrc
|
| 206 |
+
filename:npmrc
|
| 207 |
+
filename:pass
|
| 208 |
+
filename:passwd path:etc
|
| 209 |
+
filename:pgpass
|
| 210 |
+
filename:prod.exs
|
| 211 |
+
filename:prod.exs NOT prod.secret.exs
|
| 212 |
+
filename:prod.secret.exs
|
| 213 |
+
filename:proftpdpasswd
|
| 214 |
+
filename:recentservers.xml
|
| 215 |
+
filename:recentservers.xml Pass
|
| 216 |
+
filename:robomongo.json
|
| 217 |
+
filename:s3cfg
|
| 218 |
+
filename:secrets.yml password
|
| 219 |
+
filename:server.cfg
|
| 220 |
+
filename:server.cfg rcon password
|
| 221 |
+
filename:settings
|
| 222 |
+
filename:settings.py SECRET_KEY
|
| 223 |
+
filename:sftp-config.json
|
| 224 |
+
filename:sftp.json path:.vscode
|
| 225 |
+
filename:shadow
|
| 226 |
+
filename:shadow path:etc
|
| 227 |
+
filename:spec
|
| 228 |
+
filename:sshd_config
|
| 229 |
+
filename:tugboat
|
| 230 |
+
filename:ventrilo_srv.ini
|
| 231 |
+
filename:WebServers.xml
|
| 232 |
+
filename:wp-config
|
| 233 |
+
filename:wp-config.php
|
| 234 |
+
filename:zhrc
|
| 235 |
+
firebase
|
| 236 |
+
flickr_api_key
|
| 237 |
+
fossa_api_key
|
| 238 |
+
ftp
|
| 239 |
+
ftp_password
|
| 240 |
+
gatsby_wordpress_base_url
|
| 241 |
+
gatsby_wordpress_client_id
|
| 242 |
+
gatsby_wordpress_user
|
| 243 |
+
gh_api_key
|
| 244 |
+
gh_token
|
| 245 |
+
ghost_api_key
|
| 246 |
+
github_api_key
|
| 247 |
+
github_deploy_hb_doc_pass
|
| 248 |
+
github_id
|
| 249 |
+
github_key
|
| 250 |
+
github_password
|
| 251 |
+
github_token
|
| 252 |
+
gitlab
|
| 253 |
+
gmail_password
|
| 254 |
+
gmail_username
|
| 255 |
+
google_maps_api_key
|
| 256 |
+
google_private_key
|
| 257 |
+
google_secret
|
| 258 |
+
google_server_key
|
| 259 |
+
gpg_key_name
|
| 260 |
+
gpg_keyname
|
| 261 |
+
gpg_passphrase
|
| 262 |
+
HEROKU_API_KEY language:json
|
| 263 |
+
HEROKU_API_KEY language:shell
|
| 264 |
+
heroku_oauth
|
| 265 |
+
heroku_oauth_secret
|
| 266 |
+
heroku_oauth_token
|
| 267 |
+
heroku_secret
|
| 268 |
+
heroku_secret_token
|
| 269 |
+
herokuapp
|
| 270 |
+
HOMEBREW_GITHUB_API_TOKEN language:shell
|
| 271 |
+
htaccess_pass
|
| 272 |
+
htaccess_user
|
| 273 |
+
incident_channel_name
|
| 274 |
+
internal
|
| 275 |
+
irc_pass
|
| 276 |
+
JEKYLL_GITHUB_TOKEN
|
| 277 |
+
jsforce extension:js conn.login
|
| 278 |
+
jwt_client_secret_key
|
| 279 |
+
jwt_lookup_secert_key
|
| 280 |
+
jwt_password
|
| 281 |
+
jwt_secret
|
| 282 |
+
jwt_secret_key
|
| 283 |
+
jwt_token
|
| 284 |
+
jwt_user
|
| 285 |
+
jwt_web_secert_key
|
| 286 |
+
jwt_xmpp_secert_key
|
| 287 |
+
key
|
| 288 |
+
keyPassword
|
| 289 |
+
language:yaml -filename:travis
|
| 290 |
+
ldap_password
|
| 291 |
+
ldap_username
|
| 292 |
+
linux_signing_key
|
| 293 |
+
ll_shared_key
|
| 294 |
+
location_protocol
|
| 295 |
+
log_channel
|
| 296 |
+
login
|
| 297 |
+
lottie_happo_api_key
|
| 298 |
+
lottie_happo_secret_key
|
| 299 |
+
lottie_s3_api_key
|
| 300 |
+
lottie_s3_secret_key
|
| 301 |
+
magento password
|
| 302 |
+
mail_password
|
| 303 |
+
mail_port
|
| 304 |
+
mailchimp
|
| 305 |
+
mailchimp_api_key
|
| 306 |
+
mailchimp_key
|
| 307 |
+
mailgun
|
| 308 |
+
mailgun apikey
|
| 309 |
+
mailgun_key
|
| 310 |
+
mailgun_password
|
| 311 |
+
mailgun_priv_key
|
| 312 |
+
mailgun_secret_api_key
|
| 313 |
+
manage_key
|
| 314 |
+
mandrill_api_key
|
| 315 |
+
mapbox api key
|
| 316 |
+
master_key
|
| 317 |
+
mg_api_key
|
| 318 |
+
mg_public_api_key
|
| 319 |
+
mh_apikey
|
| 320 |
+
mh_password
|
| 321 |
+
mile_zero_key
|
| 322 |
+
minio_access_key
|
| 323 |
+
minio_secret_key
|
| 324 |
+
mix_pusher_app_cluster
|
| 325 |
+
mix_pusher_app_key
|
| 326 |
+
msg nickserv identify filename:config
|
| 327 |
+
mydotfiles
|
| 328 |
+
mysql
|
| 329 |
+
mysql password
|
| 330 |
+
mysql_root_password
|
| 331 |
+
netlify_api_key
|
| 332 |
+
nexus password
|
| 333 |
+
nexus_password
|
| 334 |
+
node_env
|
| 335 |
+
node_pre_gyp_accesskeyid
|
| 336 |
+
node_pre_gyp_secretaccesskey
|
| 337 |
+
npm_api_key
|
| 338 |
+
npm_password
|
| 339 |
+
npm_secret_key
|
| 340 |
+
npmrc _auth
|
| 341 |
+
nuget_api_key
|
| 342 |
+
nuget_apikey
|
| 343 |
+
nuget_key
|
| 344 |
+
oauth_token
|
| 345 |
+
object_storage_password
|
| 346 |
+
octest_app_password
|
| 347 |
+
octest_password
|
| 348 |
+
okta_key
|
| 349 |
+
omise_key
|
| 350 |
+
onesignal_api_key
|
| 351 |
+
onesignal_user_auth_key
|
| 352 |
+
openwhisk_key
|
| 353 |
+
org_gradle_project_sonatype_nexus_password
|
| 354 |
+
org_project_gradle_sonatype_nexus_password
|
| 355 |
+
os_password
|
| 356 |
+
ossrh_jira_password
|
| 357 |
+
ossrh_pass
|
| 358 |
+
ossrh_password
|
| 359 |
+
pagerduty_apikey
|
| 360 |
+
parse_js_key
|
| 361 |
+
pass
|
| 362 |
+
passwd
|
| 363 |
+
password
|
| 364 |
+
password travis
|
| 365 |
+
passwords
|
| 366 |
+
path:sites databases password
|
| 367 |
+
paypal_secret
|
| 368 |
+
paypal_token
|
| 369 |
+
pem private
|
| 370 |
+
personal_key
|
| 371 |
+
playbooks_url
|
| 372 |
+
plotly_apikey
|
| 373 |
+
plugin_password
|
| 374 |
+
postgres_env_postgres_password
|
| 375 |
+
postgresql_pass
|
| 376 |
+
preprod
|
| 377 |
+
private
|
| 378 |
+
private -language:java
|
| 379 |
+
private_key
|
| 380 |
+
private_signing_password
|
| 381 |
+
prod
|
| 382 |
+
prod_password
|
| 383 |
+
prod.access.key.id
|
| 384 |
+
prod.secret.key
|
| 385 |
+
PT_TOKEN language:bash
|
| 386 |
+
publish_key
|
| 387 |
+
pusher_app_id
|
| 388 |
+
pwd
|
| 389 |
+
queue_driver
|
| 390 |
+
rabbitmq_password
|
| 391 |
+
rds.amazonaws.com password
|
| 392 |
+
redis_password
|
| 393 |
+
response_auth_jwt_secret
|
| 394 |
+
rest_api_key
|
| 395 |
+
rinkeby_private_key
|
| 396 |
+
root_password
|
| 397 |
+
ropsten_private_key
|
| 398 |
+
route53_access_key_id
|
| 399 |
+
rtd_key_pass
|
| 400 |
+
rtd_store_pass
|
| 401 |
+
s3_access_key
|
| 402 |
+
s3_access_key_id
|
| 403 |
+
s3_key
|
| 404 |
+
s3_key_app_logs
|
| 405 |
+
s3_key_assets
|
| 406 |
+
s3_secret_key
|
| 407 |
+
salesforce_password
|
| 408 |
+
sandbox_aws_access_key_id
|
| 409 |
+
sandbox_aws_secret_access_key
|
| 410 |
+
sauce_access_key
|
| 411 |
+
secret
|
| 412 |
+
secret access key
|
| 413 |
+
secret_access_key
|
| 414 |
+
secret_bearer
|
| 415 |
+
secret_key
|
| 416 |
+
secret_key_base
|
| 417 |
+
secret_token
|
| 418 |
+
secret.password
|
| 419 |
+
secretaccesskey
|
| 420 |
+
secretkey
|
| 421 |
+
secrets
|
| 422 |
+
secure
|
| 423 |
+
security_credentials
|
| 424 |
+
send_keys
|
| 425 |
+
send.keys
|
| 426 |
+
sendgrid_api_key
|
| 427 |
+
sendgrid_key
|
| 428 |
+
sendgrid_password
|
| 429 |
+
sendkeys
|
| 430 |
+
ses_access_key
|
| 431 |
+
ses_secret_key
|
| 432 |
+
setdstaccesskey
|
| 433 |
+
setsecretkey
|
| 434 |
+
sf_username
|
| 435 |
+
SF_USERNAME salesforce
|
| 436 |
+
shodan_api_key language:python
|
| 437 |
+
sid_token
|
| 438 |
+
signing_key_password
|
| 439 |
+
signing_key_secret
|
| 440 |
+
slack_api
|
| 441 |
+
slack_channel
|
| 442 |
+
slack_key
|
| 443 |
+
slack_outgoing_token
|
| 444 |
+
slack_signing_secret
|
| 445 |
+
slack_token
|
| 446 |
+
slack_webhook
|
| 447 |
+
slash_developer_space_key
|
| 448 |
+
snoowrap_password
|
| 449 |
+
socrata_password
|
| 450 |
+
sonar_organization_key
|
| 451 |
+
sonar_project_key
|
| 452 |
+
sonatype_password
|
| 453 |
+
sonatype_token_password
|
| 454 |
+
soundcloud_password
|
| 455 |
+
sql_password
|
| 456 |
+
sqsaccesskey
|
| 457 |
+
square_access_token
|
| 458 |
+
square_token
|
| 459 |
+
squareSecret
|
| 460 |
+
ssh
|
| 461 |
+
ssh2_auth_password
|
| 462 |
+
sshpass
|
| 463 |
+
staging
|
| 464 |
+
stg
|
| 465 |
+
storePassword
|
| 466 |
+
stormpath_api_key_id
|
| 467 |
+
stormpath_api_key_secret
|
| 468 |
+
strip_key
|
| 469 |
+
strip_secret_key
|
| 470 |
+
stripe
|
| 471 |
+
stripe_key
|
| 472 |
+
stripe_secret
|
| 473 |
+
stripToken
|
| 474 |
+
svn_pass
|
| 475 |
+
swagger
|
| 476 |
+
tesco_api_key
|
| 477 |
+
tester_keys_password
|
| 478 |
+
testuser
|
| 479 |
+
thera_oss_access_key
|
| 480 |
+
token
|
| 481 |
+
trusted_hosts
|
| 482 |
+
twilio_account_sid
|
| 483 |
+
twilio_accountsid
|
| 484 |
+
twilio_api_key
|
| 485 |
+
twilio_api_secret
|
| 486 |
+
twilio_secret
|
| 487 |
+
twilio_secret_token
|
| 488 |
+
TWILIO_SID NOT env
|
| 489 |
+
twilio_token
|
| 490 |
+
twilioapiauth
|
| 491 |
+
twiliosecret
|
| 492 |
+
twine_password
|
| 493 |
+
twitter_secret
|
| 494 |
+
twitterKey
|
| 495 |
+
x-api-key
|
| 496 |
+
xoxb
|
| 497 |
+
xoxp
|
| 498 |
+
zen_tkn
|
| 499 |
+
zen_token
|
| 500 |
+
zendesk_url
|
| 501 |
+
twilio secret
|
| 502 |
+
twilio_account_id
|
| 503 |
+
twilio_account_secret
|
| 504 |
+
twilio_acount_sid NOT env
|
| 505 |
+
twilio_api
|
| 506 |
+
twilio_api_auth
|
| 507 |
+
twilio_api_sid
|
| 508 |
+
twilio_api_token
|
| 509 |
+
zen_key
|
| 510 |
+
zendesk_api_token
|
| 511 |
+
zendesk_key
|
| 512 |
+
zendesk_token
|
| 513 |
+
zendesk_username
|
Dorks/medium_dorks.txt
ADDED
|
@@ -0,0 +1,240 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
".mlab.com password"
|
| 2 |
+
"AWSSecretKey"
|
| 3 |
+
"JEKYLL_GITHUB_TOKEN"
|
| 4 |
+
"SF_USERNAME salesforce"
|
| 5 |
+
"access_key"
|
| 6 |
+
"access_token"
|
| 7 |
+
"amazonaws"
|
| 8 |
+
"apiSecret"
|
| 9 |
+
"api_key"
|
| 10 |
+
"api_secret"
|
| 11 |
+
"apidocs"
|
| 12 |
+
"apikey"
|
| 13 |
+
"app_key"
|
| 14 |
+
"app_secret"
|
| 15 |
+
"appkey"
|
| 16 |
+
"appkeysecret"
|
| 17 |
+
"application_key"
|
| 18 |
+
"appsecret"
|
| 19 |
+
"appspot"
|
| 20 |
+
"auth"
|
| 21 |
+
"auth_token"
|
| 22 |
+
"authorizationToken"
|
| 23 |
+
"aws_access"
|
| 24 |
+
"aws_access_key_id"
|
| 25 |
+
"aws_key"
|
| 26 |
+
"aws_secret"
|
| 27 |
+
"aws_token"
|
| 28 |
+
"bashrc password"
|
| 29 |
+
"bucket_password"
|
| 30 |
+
"client_secret"
|
| 31 |
+
"cloudfront"
|
| 32 |
+
"codecov_token"
|
| 33 |
+
"config"
|
| 34 |
+
"conn.login"
|
| 35 |
+
"connectionstring"
|
| 36 |
+
"consumer_key"
|
| 37 |
+
"credentials"
|
| 38 |
+
"database_password"
|
| 39 |
+
"db_password"
|
| 40 |
+
"db_username"
|
| 41 |
+
"dbpasswd"
|
| 42 |
+
"dbpassword"
|
| 43 |
+
"dbuser"
|
| 44 |
+
"dot-files"
|
| 45 |
+
"dotfiles"
|
| 46 |
+
"encryption_key"
|
| 47 |
+
"fabricApiSecret"
|
| 48 |
+
"fb_secret"
|
| 49 |
+
"firebase"
|
| 50 |
+
"ftp"
|
| 51 |
+
"gh_token"
|
| 52 |
+
"github_key"
|
| 53 |
+
"github_token"
|
| 54 |
+
"gitlab"
|
| 55 |
+
"gmail_password"
|
| 56 |
+
"gmail_username"
|
| 57 |
+
"api.googlemaps AIza"
|
| 58 |
+
"herokuapp"
|
| 59 |
+
"internal"
|
| 60 |
+
"irc_pass"
|
| 61 |
+
"key"
|
| 62 |
+
"keyPassword"
|
| 63 |
+
"ldap_password"
|
| 64 |
+
"ldap_username"
|
| 65 |
+
"login"
|
| 66 |
+
"mailchimp"
|
| 67 |
+
"mailgun"
|
| 68 |
+
"master_key"
|
| 69 |
+
"mydotfiles"
|
| 70 |
+
"mysql"
|
| 71 |
+
"node_env"
|
| 72 |
+
"npmrc _auth"
|
| 73 |
+
"oauth_token"
|
| 74 |
+
"pass"
|
| 75 |
+
"passwd"
|
| 76 |
+
"password"
|
| 77 |
+
"passwords"
|
| 78 |
+
"pem private"
|
| 79 |
+
"preprod"
|
| 80 |
+
"private_key"
|
| 81 |
+
"prod"
|
| 82 |
+
"pwd"
|
| 83 |
+
"pwds"
|
| 84 |
+
"rds.amazonaws.com password"
|
| 85 |
+
"redis_password"
|
| 86 |
+
"root_password"
|
| 87 |
+
"secret"
|
| 88 |
+
"secret.password"
|
| 89 |
+
"secret_access_key"
|
| 90 |
+
"secret_key"
|
| 91 |
+
"secret_token"
|
| 92 |
+
"secrets"
|
| 93 |
+
"secure"
|
| 94 |
+
"security_credentials"
|
| 95 |
+
"send.keys"
|
| 96 |
+
"send_keys"
|
| 97 |
+
"sendkeys"
|
| 98 |
+
"sf_username"
|
| 99 |
+
"slack_api"
|
| 100 |
+
"slack_token"
|
| 101 |
+
"sql_password"
|
| 102 |
+
"ssh"
|
| 103 |
+
"ssh2_auth_password"
|
| 104 |
+
"sshpass"
|
| 105 |
+
"staging"
|
| 106 |
+
"stg"
|
| 107 |
+
"storePassword"
|
| 108 |
+
"stripe"
|
| 109 |
+
"swagger"
|
| 110 |
+
"testuser"
|
| 111 |
+
"token"
|
| 112 |
+
"x-api-key"
|
| 113 |
+
"xoxp"
|
| 114 |
+
"xoxb "
|
| 115 |
+
HEROKU_API_KEY language:json
|
| 116 |
+
HEROKU_API_KEY language:shell
|
| 117 |
+
HOMEBREW_GITHUB_API_TOKEN language:shell
|
| 118 |
+
PT_TOKEN language:bash
|
| 119 |
+
[WFClient] Password= extension:ica
|
| 120 |
+
extension:avastlic "support.avast.com"
|
| 121 |
+
extension:bat
|
| 122 |
+
extension:cfg
|
| 123 |
+
extension:env
|
| 124 |
+
extension:exs
|
| 125 |
+
extension:ini
|
| 126 |
+
extension:json api.forecast.io
|
| 127 |
+
extension:json googleusercontent client_secret
|
| 128 |
+
extension:json mongolab.com
|
| 129 |
+
extension:pem
|
| 130 |
+
extension:pem private
|
| 131 |
+
extension:ppk
|
| 132 |
+
extension:ppk private
|
| 133 |
+
extension:properties
|
| 134 |
+
extension:sh
|
| 135 |
+
extension:sls
|
| 136 |
+
extension:sql
|
| 137 |
+
extension:sql mysql dump
|
| 138 |
+
extension:sql mysql dump password
|
| 139 |
+
extension:yaml mongolab.com
|
| 140 |
+
extension:zsh
|
| 141 |
+
filename:.bash_history
|
| 142 |
+
filename:.bash_profile aws
|
| 143 |
+
filename:.bashrc mailchimp
|
| 144 |
+
filename:.bashrc password
|
| 145 |
+
filename:.cshrc
|
| 146 |
+
filename:.dockercfg auth
|
| 147 |
+
filename:.env DB_USERNAME NOT homestead
|
| 148 |
+
filename:.env MAIL_HOST=smtp.gmail.com
|
| 149 |
+
filename:.esmtprc password
|
| 150 |
+
filename:.ftpconfig
|
| 151 |
+
filename:.git-credentials
|
| 152 |
+
filename:.history
|
| 153 |
+
filename:.htpasswd
|
| 154 |
+
filename:.netrc password
|
| 155 |
+
filename:.npmrc _auth
|
| 156 |
+
filename:.pgpass
|
| 157 |
+
filename:.remote-sync.json
|
| 158 |
+
filename:.s3cfg
|
| 159 |
+
filename:.sh_history
|
| 160 |
+
filename:.tugboat NOT _tugboat
|
| 161 |
+
filename:CCCam.cfg
|
| 162 |
+
filename:WebServers.xml
|
| 163 |
+
filename:_netrc password
|
| 164 |
+
filename:bash
|
| 165 |
+
filename:bash_history
|
| 166 |
+
filename:bash_profile
|
| 167 |
+
filename:bashrc
|
| 168 |
+
filename:beanstalkd.yml
|
| 169 |
+
filename:composer.json
|
| 170 |
+
filename:config
|
| 171 |
+
filename:config irc_pass
|
| 172 |
+
filename:config.json auths
|
| 173 |
+
filename:config.php dbpasswd
|
| 174 |
+
filename:configuration.php JConfig password
|
| 175 |
+
filename:connections
|
| 176 |
+
filename:connections.xml
|
| 177 |
+
filename:constants
|
| 178 |
+
filename:credentials
|
| 179 |
+
filename:credentials aws_access_key_id
|
| 180 |
+
filename:cshrc
|
| 181 |
+
filename:database
|
| 182 |
+
filename:dbeaver-data-sources.xml
|
| 183 |
+
filename:deploy.rake
|
| 184 |
+
filename:deployment-config.json
|
| 185 |
+
filename:dhcpd.conf
|
| 186 |
+
filename:dockercfg
|
| 187 |
+
filename:environment
|
| 188 |
+
filename:express.conf
|
| 189 |
+
filename:express.conf path:.openshift
|
| 190 |
+
filename:filezilla.xml
|
| 191 |
+
filename:filezilla.xml Pass
|
| 192 |
+
filename:git-credentials
|
| 193 |
+
filename:gitconfig
|
| 194 |
+
filename:global
|
| 195 |
+
filename:history
|
| 196 |
+
filename:htpasswd
|
| 197 |
+
filename:hub oauth_token
|
| 198 |
+
filename:id_dsa
|
| 199 |
+
filename:id_rsa
|
| 200 |
+
filename:id_rsa or filename:id_dsa
|
| 201 |
+
filename:idea14.key
|
| 202 |
+
filename:known_hosts
|
| 203 |
+
filename:logins.json
|
| 204 |
+
filename:makefile
|
| 205 |
+
filename:master.key path:config
|
| 206 |
+
filename:netrc
|
| 207 |
+
filename:npmrc
|
| 208 |
+
filename:pass
|
| 209 |
+
filename:passwd path:etc
|
| 210 |
+
filename:pgpass
|
| 211 |
+
filename:prod.exs
|
| 212 |
+
filename:prod.exs NOT prod.secret.exs
|
| 213 |
+
filename:prod.secret.exs
|
| 214 |
+
filename:proftpdpasswd
|
| 215 |
+
filename:recentservers.xml
|
| 216 |
+
filename:recentservers.xml Pass
|
| 217 |
+
filename:robomongo.json
|
| 218 |
+
filename:s3cfg
|
| 219 |
+
filename:secrets.yml password
|
| 220 |
+
filename:server.cfg
|
| 221 |
+
filename:server.cfg rcon password
|
| 222 |
+
filename:settings
|
| 223 |
+
filename:settings.py SECRET_KEY
|
| 224 |
+
filename:sftp-config.json
|
| 225 |
+
filename:sftp.json path:.vscode
|
| 226 |
+
filename:shadow
|
| 227 |
+
filename:shadow path:etc
|
| 228 |
+
filename:spec
|
| 229 |
+
filename:sshd_config
|
| 230 |
+
filename:tugboat
|
| 231 |
+
filename:ventrilo_srv.ini
|
| 232 |
+
filename:wp-config
|
| 233 |
+
filename:wp-config.php
|
| 234 |
+
filename:zhrc
|
| 235 |
+
jsforce extension:js conn.login
|
| 236 |
+
language:yaml -filename:travis
|
| 237 |
+
msg nickserv identify filename:config
|
| 238 |
+
path:sites databases password
|
| 239 |
+
private -language:java
|
| 240 |
+
shodan_api_key language:python
|
GitDorker Help.png
ADDED
|
Git LFS Details
|
GitDorker Results.png
ADDED
|
Git LFS Details
|
GitDorker Usage Example - Tesla.png
ADDED
|
Git LFS Details
|
GitDorker.png
ADDED
|
GitDorker.py
ADDED
|
@@ -0,0 +1,632 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/python3
|
| 2 |
+
|
| 3 |
+
# Credits: Modified GitHub Dorker using GitAPI and my personal compiled list of dorks across multiple resources. API Request structure modeled and modified and modified from Gwendal Le Coguic's scripts.
|
| 4 |
+
# Author: Omar Bheda
|
| 5 |
+
# Version: 1.1.3
|
| 6 |
+
print("""
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
/$$$$$$ /$$ /$$ /$$$$$$$ /$$
|
| 10 |
+
/$$__ $$|__/ | $$ | $$__ $$ | $$
|
| 11 |
+
| $$ \__/ /$$ /$$$$$$ | $$ \ $$ /$$$$$$ /$$$$$$ | $$ /$$ /$$$$$$ /$$$$$$
|
| 12 |
+
| $$ /$$$$| $$|_ $$_/ | $$ | $$ /$$__ $$ /$$__ $$| $$ /$$/ /$$__ $$ /$$__ $$
|
| 13 |
+
| $$|_ $$| $$ | $$ | $$ | $$| $$ \ $$| $$ \__/| $$$$$$/ | $$$$$$$$| $$ \__/
|
| 14 |
+
| $$ \ $$| $$ | $$ /$$ | $$ | $$| $$ | $$| $$ | $$_ $$ | $$_____/| $$
|
| 15 |
+
| $$$$$$/| $$ | $$$$/ | $$$$$$$/| $$$$$$/| $$ | $$ \ $$| $$$$$$$| $$
|
| 16 |
+
\______/ |__/ \___/ |_______/ \______/ |__/ |__/ \__/ \_______/|__/
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
Find GitHub secrets utilizing a vast list of GitHub dorks and the GitHub search api. The
|
| 20 |
+
purpose of this tool is to enumerate interesting users,repos, and files to provide an
|
| 21 |
+
easy to read overview of where a potential sensitive information exposure may reside.
|
| 22 |
+
|
| 23 |
+
HELP: python3 GitDorker.py -h
|
| 24 |
+
""")
|
| 25 |
+
|
| 26 |
+
# IMPORTS
|
| 27 |
+
import sys
|
| 28 |
+
import json
|
| 29 |
+
import time
|
| 30 |
+
import argparse
|
| 31 |
+
import random
|
| 32 |
+
import requests
|
| 33 |
+
import csv
|
| 34 |
+
from itertools import zip_longest
|
| 35 |
+
from termcolor import colored
|
| 36 |
+
from multiprocessing.dummy import Pool
|
| 37 |
+
|
| 38 |
+
# API CONFIG
|
| 39 |
+
GITHUB_API_URL = 'https://api.github.com'
|
| 40 |
+
|
| 41 |
+
# PARSER CONFIG
|
| 42 |
+
parser = argparse.ArgumentParser()
|
| 43 |
+
parser.add_argument("-d", "--dorks", help="dorks file (required)")
|
| 44 |
+
parser.add_argument("-k", "--keyword", help="search on a keyword instead of a list of dorks")
|
| 45 |
+
parser.add_argument("-q", "--query", help="query (required or -q)")
|
| 46 |
+
parser.add_argument("-qf", "--queryfile", help="query (required or -q)")
|
| 47 |
+
parser.add_argument("-ri", "--recentlyindexed", action='store_true', help="sort results of queries from most recent first")
|
| 48 |
+
parser.add_argument("-lb", "--limitbypass", action='store_true', help="increase requests per minute when using multiple tokens from UNIQUE accounts")
|
| 49 |
+
parser.add_argument("-pf", "--patternfilter", action='store_true', help="filter out noise/patterns for test/example keys")
|
| 50 |
+
parser.add_argument("-u", "--users", help="users to perform dork or keyword search on (comma separated).")
|
| 51 |
+
parser.add_argument("-uf", "--userfile", help="file containing new line separated users")
|
| 52 |
+
parser.add_argument("-org", "--organization",
|
| 53 |
+
help="organization's GitHub name (required or -org if query not specified)")
|
| 54 |
+
parser.add_argument("-t", "--token", help="your github token (required if token file not specififed)")
|
| 55 |
+
parser.add_argument("-tf", "--tokenfile", help="file containing new line separated github tokens ")
|
| 56 |
+
parser.add_argument("-e", "--threads", help="maximum n threads, default 1")
|
| 57 |
+
parser.add_argument("-p", "--positiveresults", action='store_true', help="display positive results only")
|
| 58 |
+
parser.add_argument("-o", "--output", help="output to file name (required or -o)")
|
| 59 |
+
|
| 60 |
+
parser.parse_args()
|
| 61 |
+
args = parser.parse_args()
|
| 62 |
+
|
| 63 |
+
# DECLARE LISTS
|
| 64 |
+
tokens_list = []
|
| 65 |
+
dorks_list = []
|
| 66 |
+
queries_list = []
|
| 67 |
+
organizations_list = []
|
| 68 |
+
users_list = []
|
| 69 |
+
keywords_list = []
|
| 70 |
+
|
| 71 |
+
# TOKEN ARGUMENT LOGIC
|
| 72 |
+
if args.token:
|
| 73 |
+
tokens_list = args.token.split(',')
|
| 74 |
+
|
| 75 |
+
if args.tokenfile:
|
| 76 |
+
with open(args.tokenfile) as f:
|
| 77 |
+
tokens_list = [i.strip() for i in f.read().splitlines() if i.strip()]
|
| 78 |
+
|
| 79 |
+
# if not len(tokens_list):
|
| 80 |
+
# parser.error('auth token is missing')
|
| 81 |
+
|
| 82 |
+
# USER ARGUMENT LOGIC
|
| 83 |
+
if args.users:
|
| 84 |
+
users_list = args.users.split(',')
|
| 85 |
+
|
| 86 |
+
if args.userfile:
|
| 87 |
+
with open(args.userfile) as f:
|
| 88 |
+
users_list = [i.strip() for i in f.read().splitlines() if i.strip()]
|
| 89 |
+
|
| 90 |
+
if args.query:
|
| 91 |
+
queries_list = args.query.split(',')
|
| 92 |
+
|
| 93 |
+
if args.queryfile:
|
| 94 |
+
with open(args.queryfile) as f:
|
| 95 |
+
queries_list = [i.strip() for i in f.read().splitlines() if i.strip()]
|
| 96 |
+
|
| 97 |
+
if args.patternfilter:
|
| 98 |
+
patternfilter = " -fake -example -test -XXXX -1234 -ABCD"
|
| 99 |
+
|
| 100 |
+
# if args.query and args.keyword:
|
| 101 |
+
# parser.error('you cannot specify both a query and a keyword, please specify one or the other.')
|
| 102 |
+
#
|
| 103 |
+
# if args.query and args.organization:
|
| 104 |
+
# parser.error('you cannot specify both a query and a organization, please specify one or the other.')
|
| 105 |
+
|
| 106 |
+
if args.organization:
|
| 107 |
+
organizations_list = args.organization.split(',')
|
| 108 |
+
|
| 109 |
+
if args.threads:
|
| 110 |
+
threads = int(args.threads)
|
| 111 |
+
else:
|
| 112 |
+
threads = 1
|
| 113 |
+
|
| 114 |
+
# if not args.query and not args.queryfile and not args.organization and not args.users and not args.userfile:
|
| 115 |
+
# parser.error('query or organization missing or users missing')
|
| 116 |
+
|
| 117 |
+
if args.dorks:
|
| 118 |
+
fp = open(args.dorks, 'r')
|
| 119 |
+
for line in fp:
|
| 120 |
+
dorks_list.append(line.strip())
|
| 121 |
+
|
| 122 |
+
if args.keyword:
|
| 123 |
+
keywords_list = args.keyword.split(',')
|
| 124 |
+
|
| 125 |
+
if not args.dorks and not args.keyword:
|
| 126 |
+
parser.error('dorks file or keyword is missing')
|
| 127 |
+
|
| 128 |
+
# NUMBER OF REQUESTS PER MINUTE (TOKENS MUST BE UNIQUE)
|
| 129 |
+
requests_per_minute = (len(tokens_list) * 30) - 1
|
| 130 |
+
|
| 131 |
+
# TOKEN ROUND ROBIN
|
| 132 |
+
n = -1
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
def token_round_robin():
|
| 136 |
+
global n
|
| 137 |
+
n = n + 1
|
| 138 |
+
if n == len(tokens_list):
|
| 139 |
+
n = 0
|
| 140 |
+
current_token = tokens_list[n]
|
| 141 |
+
return current_token
|
| 142 |
+
|
| 143 |
+
|
| 144 |
+
# API SEARCH FUNCTION
|
| 145 |
+
def api_search(url):
|
| 146 |
+
if args.dorks: # UNDO COMPLETE! :)
|
| 147 |
+
if args.keyword:
|
| 148 |
+
sys.stdout.write(colored(
|
| 149 |
+
'\r[#] $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Dorking with Keyword In Progress $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ %d/%d\r' % (stats_dict['n_current'], stats_dict['n_total_urls']),
|
| 150 |
+
"green"))
|
| 151 |
+
sys.stdout.flush()
|
| 152 |
+
else:
|
| 153 |
+
sys.stdout.write(
|
| 154 |
+
colored('\r[#] $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Dorking In Progress $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ %d/%d\r' % (stats_dict['n_current'], stats_dict['n_total_urls']), "green"))
|
| 155 |
+
sys.stdout.flush()
|
| 156 |
+
|
| 157 |
+
elif args.keyword and not args.dorks:
|
| 158 |
+
sys.stdout.write(
|
| 159 |
+
colored('\r[#] $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Keyword Search In Progress $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ %d/%d\r' % (stats_dict['n_current'], stats_dict['n_total_urls']),
|
| 160 |
+
"green"))
|
| 161 |
+
sys.stdout.flush()
|
| 162 |
+
|
| 163 |
+
stats_dict['n_current'] = stats_dict['n_current'] + 1
|
| 164 |
+
headers = {"Authorization": "token " + token_round_robin()}
|
| 165 |
+
|
| 166 |
+
try:
|
| 167 |
+
r = requests.get(url, headers=headers)
|
| 168 |
+
json = r.json()
|
| 169 |
+
if args.limitbypass:
|
| 170 |
+
if stats_dict['n_current'] % requests_per_minute == 0:
|
| 171 |
+
for remaining in range(63, 0, -1):
|
| 172 |
+
sys.stdout.write("\r")
|
| 173 |
+
sys.stdout.write(colored(
|
| 174 |
+
"\r[#] (-_-)zzZZzzZZzzZZzzZZ sleeping to avoid rate limits. GitDorker will resume soon (-_-)zzZZzzZZzzZZzzZZ | {:2d} seconds remaining.\r".format(
|
| 175 |
+
remaining), "blue"))
|
| 176 |
+
sys.stdout.flush()
|
| 177 |
+
time.sleep(1)
|
| 178 |
+
else:
|
| 179 |
+
if stats_dict['n_current'] % 29 == 0:
|
| 180 |
+
for remaining in range(63, 0, -1):
|
| 181 |
+
sys.stdout.write("\r")
|
| 182 |
+
sys.stdout.write(colored(
|
| 183 |
+
"\r[#] (-_-)zzZZzzZZzzZZzzZZ sleeping to avoid rate limits. GitDorker will resume soon (-_-)zzZZzzZZzzZZzzZZ | {:2d} seconds remaining.\r".format(
|
| 184 |
+
remaining), "blue"))
|
| 185 |
+
sys.stdout.flush()
|
| 186 |
+
time.sleep(1)
|
| 187 |
+
|
| 188 |
+
if 'documentation_url' in json:
|
| 189 |
+
print(colored("[-] error occurred: %s" % json['documentation_url'], 'red'))
|
| 190 |
+
else:
|
| 191 |
+
url_results_dict[url] = json['total_count']
|
| 192 |
+
|
| 193 |
+
except Exception as e:
|
| 194 |
+
print(colored("[-] error occurred: %s" % e, 'red'))
|
| 195 |
+
return 0
|
| 196 |
+
|
| 197 |
+
|
| 198 |
+
# URL ENCODING FUNCTION
|
| 199 |
+
def __urlencode(str):
|
| 200 |
+
str = str.replace(':', '%3A');
|
| 201 |
+
str = str.replace('"', '%22');
|
| 202 |
+
str = str.replace(' ', '+');
|
| 203 |
+
return str
|
| 204 |
+
|
| 205 |
+
|
| 206 |
+
# DECLARE DICTIONARIES
|
| 207 |
+
url_dict = {}
|
| 208 |
+
results_dict = {}
|
| 209 |
+
url_results_dict = {}
|
| 210 |
+
stats_dict = {
|
| 211 |
+
'l_tokens': len(tokens_list),
|
| 212 |
+
'n_current': 0,
|
| 213 |
+
'n_total_urls': 0
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
# CREATE QUERIES
|
| 217 |
+
for query in queries_list:
|
| 218 |
+
results_dict[query] = []
|
| 219 |
+
for dork in dorks_list:
|
| 220 |
+
if not args.patternfilter:
|
| 221 |
+
if ":" in query:
|
| 222 |
+
dork = "{}".format(query) + " " + dork
|
| 223 |
+
else:
|
| 224 |
+
dork = "{}".format(query) + " " + dork
|
| 225 |
+
url = 'https://api.github.com/search/code?q=' + __urlencode(dork)
|
| 226 |
+
results_dict[query].append(url)
|
| 227 |
+
url_dict[url] = 0
|
| 228 |
+
else:
|
| 229 |
+
if ":" in query:
|
| 230 |
+
dork = "{}".format(query) + " " + dork + patternfilter
|
| 231 |
+
else:
|
| 232 |
+
dork = "{}".format(query) + " " + dork + patternfilter
|
| 233 |
+
url = 'https://api.github.com/search/code?q=' + __urlencode(dork)
|
| 234 |
+
results_dict[query].append(url)
|
| 235 |
+
url_dict[url] = 0
|
| 236 |
+
|
| 237 |
+
|
| 238 |
+
|
| 239 |
+
# CREATE ORGS
|
| 240 |
+
for organization in organizations_list:
|
| 241 |
+
results_dict[organization] = []
|
| 242 |
+
for dork in dorks_list:
|
| 243 |
+
if not args.patternfilter:
|
| 244 |
+
dork = 'org:' + organization + ' ' + dork
|
| 245 |
+
url = 'https://api.github.com/search/code?q=' + __urlencode(dork)
|
| 246 |
+
results_dict[organization].append(url)
|
| 247 |
+
url_dict[url] = 0
|
| 248 |
+
else:
|
| 249 |
+
dork = 'org:' + organization + ' ' + dork + patternfilter
|
| 250 |
+
url = 'https://api.github.com/search/code?q=' + __urlencode(dork)
|
| 251 |
+
results_dict[organization].append(url)
|
| 252 |
+
url_dict[url] = 0
|
| 253 |
+
|
| 254 |
+
#Create Users
|
| 255 |
+
for user in users_list:
|
| 256 |
+
results_dict[user] = []
|
| 257 |
+
if args.dorks:
|
| 258 |
+
if args.keyword:
|
| 259 |
+
for dork in dorks_list:
|
| 260 |
+
for keyword in keywords_list:
|
| 261 |
+
if not args.patternfilter:
|
| 262 |
+
keyword_dork = 'user:' + user + ' ' + keyword + ' ' + dork
|
| 263 |
+
url = 'https://api.github.com/search/code?q=' + __urlencode(keyword_dork)
|
| 264 |
+
results_dict[user].append(url)
|
| 265 |
+
url_dict[url] = 0
|
| 266 |
+
else:
|
| 267 |
+
keyword_dork = 'user:' + user + ' ' + keyword + ' ' + dork + patternfilter
|
| 268 |
+
url = 'https://api.github.com/search/code?q=' + __urlencode(keyword_dork)
|
| 269 |
+
results_dict[user].append(url)
|
| 270 |
+
url_dict[url] = 0
|
| 271 |
+
|
| 272 |
+
if not args.keyword:
|
| 273 |
+
for dork in dorks_list:
|
| 274 |
+
if not args.patternfilter:
|
| 275 |
+
dork = 'user:' + user + ' ' + dork
|
| 276 |
+
url = 'https://api.github.com/search/code?q=' + __urlencode(dork)
|
| 277 |
+
results_dict[user].append(url)
|
| 278 |
+
url_dict[url] = 0
|
| 279 |
+
else:
|
| 280 |
+
dork = 'user:' + user + ' ' + dork + patternfilter
|
| 281 |
+
url = 'https://api.github.com/search/code?q=' + __urlencode(dork)
|
| 282 |
+
results_dict[user].append(url)
|
| 283 |
+
url_dict[url] = 0
|
| 284 |
+
|
| 285 |
+
if args.keyword and not args.dorks:
|
| 286 |
+
for keyword in keywords_list:
|
| 287 |
+
if not args.patternfilter:
|
| 288 |
+
keyword = 'user:' + user + ' ' + keyword
|
| 289 |
+
url = 'https://api.github.com/search/code?q=' + __urlencode(keyword)
|
| 290 |
+
results_dict[user].append(url)
|
| 291 |
+
url_dict[url] = 0
|
| 292 |
+
else:
|
| 293 |
+
keyword = 'user:' + user + ' ' + keyword + patternfilter
|
| 294 |
+
url = 'https://api.github.com/search/code?q=' + __urlencode(keyword)
|
| 295 |
+
results_dict[user].append(url)
|
| 296 |
+
url_dict[url] = 0
|
| 297 |
+
|
| 298 |
+
# STATS
|
| 299 |
+
stats_dict['n_total_urls'] = len(url_dict)
|
| 300 |
+
print("""
|
| 301 |
+
______ __
|
| 302 |
+
/ __/ /____ _/ /____
|
| 303 |
+
_\ \/ __/ _ `/ __(_-<
|
| 304 |
+
/___/\__/\_,_/\__/___/
|
| 305 |
+
**********************
|
| 306 |
+
""")
|
| 307 |
+
sys.stdout.write(colored('[#] %d organizations found.\n' % len(organizations_list), 'cyan'))
|
| 308 |
+
sys.stdout.write(colored('[#] %d users found.\n' % len(users_list), 'cyan'))
|
| 309 |
+
sys.stdout.write(colored('[#] %d dorks found.\n' % len(dorks_list), 'cyan'))
|
| 310 |
+
sys.stdout.write(colored('[#] %d keywords found.\n' % len(keywords_list), 'cyan'))
|
| 311 |
+
sys.stdout.write(colored('[#] %d queries ran.\n' % len(queries_list), 'cyan'))
|
| 312 |
+
sys.stdout.write(colored('[#] %d urls generated.\n' % len(url_dict), 'cyan'))
|
| 313 |
+
sys.stdout.write(colored('[#] %d tokens being used.\n' % len(tokens_list), 'cyan'))
|
| 314 |
+
sys.stdout.write(colored('[#] running %d threads.\n' % threads, 'cyan'))
|
| 315 |
+
if args.limitbypass:
|
| 316 |
+
sys.stdout.write(colored('[#] %d requests per minute allowed\n' % requests_per_minute, 'cyan'))
|
| 317 |
+
else:
|
| 318 |
+
sys.stdout.write(colored('[#] 29 requests per minute allowed\n', 'cyan'))
|
| 319 |
+
print("")
|
| 320 |
+
# SLEEP
|
| 321 |
+
time.sleep(1)
|
| 322 |
+
|
| 323 |
+
# POOL FUNCTION TO RUN API SEARCH
|
| 324 |
+
pool = Pool(threads)
|
| 325 |
+
pool.map(api_search, url_dict)
|
| 326 |
+
pool.close()
|
| 327 |
+
pool.join()
|
| 328 |
+
|
| 329 |
+
# SET COUNT
|
| 330 |
+
count = 0
|
| 331 |
+
keyword_count = 0
|
| 332 |
+
|
| 333 |
+
# SHOW RESULTS
|
| 334 |
+
print("")
|
| 335 |
+
print("""
|
| 336 |
+
___ ____
|
| 337 |
+
/ _ \___ ___ __ __/ / /____
|
| 338 |
+
/ , _/ -_|_-</ // / / __(_-<
|
| 339 |
+
/_/|_|\__/___/\_,_/_/\__/___/
|
| 340 |
+
*****************************
|
| 341 |
+
""")
|
| 342 |
+
|
| 343 |
+
new_url_list = []
|
| 344 |
+
result_number_list = []
|
| 345 |
+
dork_name_list = []
|
| 346 |
+
keyword_name_list = []
|
| 347 |
+
user_list = []
|
| 348 |
+
|
| 349 |
+
# DEFINE CONDITIONAL OUTPUT MARKERS
|
| 350 |
+
sys.stdout.write(colored('[+] SUCCESS | RESULTS RETURNED ', 'green'))
|
| 351 |
+
print("")
|
| 352 |
+
normal = sys.stdout.write(colored('[#] NEUTRAL | NO RESULTS RETURNED', 'yellow'))
|
| 353 |
+
print("")
|
| 354 |
+
failure = sys.stdout.write(colored('[-] FAILURE | RATE LIMITS OR API FAILURE ', 'red'))
|
| 355 |
+
print("")
|
| 356 |
+
|
| 357 |
+
# RESULTS LOGIC FOR QUERIES
|
| 358 |
+
for query in queries_list:
|
| 359 |
+
print("")
|
| 360 |
+
sys.stdout.write(colored('QUERY PROVIDED: %s' % (query), 'cyan'))
|
| 361 |
+
print("")
|
| 362 |
+
print("")
|
| 363 |
+
|
| 364 |
+
for url in results_dict[query]:
|
| 365 |
+
|
| 366 |
+
if url in url_results_dict:
|
| 367 |
+
if args.recentlyindexed:
|
| 368 |
+
new_url = url.replace('https://api.github.com/search/code',
|
| 369 |
+
'https://github.com/search') + '&s=indexed&type=Code&o=desc'
|
| 370 |
+
elif not args.recentlyindexed:
|
| 371 |
+
new_url = url.replace('https://api.github.com/search/code',
|
| 372 |
+
'https://github.com/search') + '&type=Code'
|
| 373 |
+
dork_name = dorks_list[count]
|
| 374 |
+
dork_info = 'DORK = ' + dork_name + ' | '
|
| 375 |
+
result_info = dork_info + new_url
|
| 376 |
+
if count < len(dorks_list)-1:
|
| 377 |
+
count = count + 1
|
| 378 |
+
else:
|
| 379 |
+
count = 0
|
| 380 |
+
|
| 381 |
+
if url_results_dict[url] == 0:
|
| 382 |
+
if args.positiveresults == False:
|
| 383 |
+
result_number = url_results_dict[url]
|
| 384 |
+
normal = sys.stdout.write(colored('[#] ', 'yellow'))
|
| 385 |
+
sys.stdout.write(colored('(%d) ' % (result_number), 'cyan'))
|
| 386 |
+
sys.stdout.write(colored('%s' % (result_info), 'white'))
|
| 387 |
+
new_url_list.append(new_url)
|
| 388 |
+
result_number_list.append(result_number)
|
| 389 |
+
dork_name_list.append(dork_name)
|
| 390 |
+
print('')
|
| 391 |
+
|
| 392 |
+
else:
|
| 393 |
+
result_number = url_results_dict[url]
|
| 394 |
+
success = sys.stdout.write(colored('[+] ', 'green'))
|
| 395 |
+
sys.stdout.write(colored('(%d) ' % (result_number), 'cyan'))
|
| 396 |
+
sys.stdout.write(colored('%s' % (result_info), 'white'))
|
| 397 |
+
new_url_list.append(new_url)
|
| 398 |
+
result_number_list.append(result_number)
|
| 399 |
+
dork_name_list.append(dork_name)
|
| 400 |
+
print('')
|
| 401 |
+
|
| 402 |
+
else:
|
| 403 |
+
failure = sys.stdout.write(colored('[-] ', 'red'))
|
| 404 |
+
sys.stdout.write(colored('%s' % new_url, 'white'))
|
| 405 |
+
count = count + 1
|
| 406 |
+
print('')
|
| 407 |
+
|
| 408 |
+
|
| 409 |
+
# ADD KEYWORD TO OUTPUT TO BOTH DORKS AND ARGS
|
| 410 |
+
for user in users_list:
|
| 411 |
+
print("")
|
| 412 |
+
sys.stdout.write(colored('USER PROVIDED: %s' % (user), 'cyan'))
|
| 413 |
+
print("")
|
| 414 |
+
|
| 415 |
+
if args.keyword and not args.dorks:
|
| 416 |
+
for url in results_dict[user]:
|
| 417 |
+
if url in url_results_dict:
|
| 418 |
+
if args.recentlyindexed:
|
| 419 |
+
new_url = url.replace('https://api.github.com/search/code',
|
| 420 |
+
'https://github.com/search') + '&s=indexed&type=Code&o=desc'
|
| 421 |
+
elif not args.recentlyindexed:
|
| 422 |
+
new_url = url.replace('https://api.github.com/search/code',
|
| 423 |
+
'https://github.com/search') + '&type=Code'
|
| 424 |
+
|
| 425 |
+
keyword_name = keywords_list[keyword_count]
|
| 426 |
+
keyword_info = 'KEYWORD = ' + keyword_name + ' | '
|
| 427 |
+
result_info = keyword_info + new_url
|
| 428 |
+
if len(keywords_list) - 1 != keyword_count:
|
| 429 |
+
keyword_count = keyword_count + 1
|
| 430 |
+
else:
|
| 431 |
+
keyword_count = 0
|
| 432 |
+
|
| 433 |
+
if url_results_dict[url] == 0:
|
| 434 |
+
if args.positiveresults == False:
|
| 435 |
+
result_number = url_results_dict[url]
|
| 436 |
+
normal = sys.stdout.write(colored('[#] ', 'yellow'))
|
| 437 |
+
sys.stdout.write(colored('(%d) ' % (result_number), 'cyan'))
|
| 438 |
+
sys.stdout.write(colored('%s' % (result_info), 'white'))
|
| 439 |
+
new_url_list.append(new_url)
|
| 440 |
+
result_number_list.append(result_number)
|
| 441 |
+
keyword_name_list.append(keyword_name)
|
| 442 |
+
user_list.append(user)
|
| 443 |
+
print('')
|
| 444 |
+
|
| 445 |
+
else:
|
| 446 |
+
result_number = url_results_dict[url]
|
| 447 |
+
success = sys.stdout.write(colored('[+] ', 'green'))
|
| 448 |
+
sys.stdout.write(colored('(%d) ' % (result_number), 'cyan'))
|
| 449 |
+
sys.stdout.write(colored('%s' % (result_info), 'white'))
|
| 450 |
+
new_url_list.append(new_url)
|
| 451 |
+
result_number_list.append(result_number)
|
| 452 |
+
keyword_name_list.append(keyword_name)
|
| 453 |
+
user_list.append(user)
|
| 454 |
+
print('')
|
| 455 |
+
|
| 456 |
+
else:
|
| 457 |
+
failure = sys.stdout.write(colored('[-] ', 'red'))
|
| 458 |
+
keyword_name = keywords_list[keyword_count]
|
| 459 |
+
sys.stdout.write(colored('No KEYWORD: %s found for %s' % (keyword_name, user), 'white'))
|
| 460 |
+
if len(keywords_list) - 1 != keyword_count:
|
| 461 |
+
keyword_count = keyword_count + 1
|
| 462 |
+
else:
|
| 463 |
+
keyword_count = 0
|
| 464 |
+
# Potentially code in removal from list to prevent query offset
|
| 465 |
+
print('')
|
| 466 |
+
|
| 467 |
+
|
| 468 |
+
elif args.dorks:
|
| 469 |
+
count = 0
|
| 470 |
+
for url in results_dict[user]:
|
| 471 |
+
if url in url_results_dict:
|
| 472 |
+
if args.recentlyindexed:
|
| 473 |
+
new_url = url.replace('https://api.github.com/search/code',
|
| 474 |
+
'https://github.com/search') + '&s=indexed&type=Code&o=desc'
|
| 475 |
+
elif not args.recentlyindexed:
|
| 476 |
+
new_url = url.replace('https://api.github.com/search/code',
|
| 477 |
+
'https://github.com/search') + '&type=Code'
|
| 478 |
+
dork_name = dorks_list[count]
|
| 479 |
+
|
| 480 |
+
if args.keyword:
|
| 481 |
+
keyword_name = keywords_list[keyword_count]
|
| 482 |
+
dork_info = 'DORK = ' + dork_name + ' | KEYWORD = ' + keyword_name + ' | '
|
| 483 |
+
result_info = dork_info + new_url
|
| 484 |
+
if len(keywords_list) - 1 != keyword_count:
|
| 485 |
+
keyword_count = keyword_count + 1
|
| 486 |
+
else:
|
| 487 |
+
keyword_count = 0
|
| 488 |
+
count = count + 1
|
| 489 |
+
|
| 490 |
+
elif not args.keyword:
|
| 491 |
+
count = count + 1
|
| 492 |
+
dork_info = 'DORK = ' + dork_name + ' | '
|
| 493 |
+
result_info = dork_info + new_url
|
| 494 |
+
|
| 495 |
+
if len(dorks_list) == count:
|
| 496 |
+
count = 0
|
| 497 |
+
|
| 498 |
+
if url_results_dict[url] == 0:
|
| 499 |
+
if args.positiveresults == False:
|
| 500 |
+
result_number = url_results_dict[url]
|
| 501 |
+
normal = sys.stdout.write(colored('[#] ', 'yellow'))
|
| 502 |
+
sys.stdout.write(colored('(%d) ' % (result_number), 'cyan'))
|
| 503 |
+
sys.stdout.write(colored('%s' % (result_info), 'white'))
|
| 504 |
+
new_url_list.append(new_url)
|
| 505 |
+
result_number_list.append(result_number)
|
| 506 |
+
dork_name_list.append(dork_name)
|
| 507 |
+
if args.keyword:
|
| 508 |
+
keyword_name_list.append(keyword_name)
|
| 509 |
+
user_list.append(user)
|
| 510 |
+
print('')
|
| 511 |
+
|
| 512 |
+
else:
|
| 513 |
+
result_number = url_results_dict[url]
|
| 514 |
+
success = sys.stdout.write(colored('[+] ', 'green'))
|
| 515 |
+
sys.stdout.write(colored('(%d) ' % (result_number), 'cyan'))
|
| 516 |
+
sys.stdout.write(colored('%s' % (result_info), 'white'))
|
| 517 |
+
new_url_list.append(new_url)
|
| 518 |
+
result_number_list.append(result_number)
|
| 519 |
+
dork_name_list.append(dork_name)
|
| 520 |
+
if args.keyword:
|
| 521 |
+
keyword_name_list.append(keyword_name)
|
| 522 |
+
user_list.append(user)
|
| 523 |
+
print('')
|
| 524 |
+
|
| 525 |
+
else:
|
| 526 |
+
failure = sys.stdout.write(colored('[-] ', 'red'))
|
| 527 |
+
sys.stdout.write(colored('%s' % new_url, 'white'))
|
| 528 |
+
if args.keyword:
|
| 529 |
+
if len(keywords_list) - 1 != keyword_count:
|
| 530 |
+
keyword_count = keyword_count + 1
|
| 531 |
+
count = count + 1
|
| 532 |
+
if len(dorks_list) == count:
|
| 533 |
+
count = 0
|
| 534 |
+
print('')
|
| 535 |
+
|
| 536 |
+
# RESULTS LOGIC FOR ORGANIZATIONS
|
| 537 |
+
for organization in organizations_list:
|
| 538 |
+
print("ORGANIZATION PROVIDED: " + '%s' % organization)
|
| 539 |
+
print("")
|
| 540 |
+
for url in results_dict[organization]:
|
| 541 |
+
|
| 542 |
+
if url in url_results_dict:
|
| 543 |
+
if args.recentlyindexed:
|
| 544 |
+
new_url = url.replace('https://api.github.com/search/code',
|
| 545 |
+
'https://github.com/search') + '&s=indexed&type=Code&o=desc'
|
| 546 |
+
elif not args.recentlyindexed:
|
| 547 |
+
new_url = url.replace('https://api.github.com/search/code',
|
| 548 |
+
'https://github.com/search') + '&type=Code'
|
| 549 |
+
dork_name = dorks_list[count]
|
| 550 |
+
dork_info = ' DORK = ' + dork_name + ' | '
|
| 551 |
+
result_info = dork_info + new_url
|
| 552 |
+
count = count + 1
|
| 553 |
+
|
| 554 |
+
if url_results_dict[url] == 0:
|
| 555 |
+
if args.positiveresults == False:
|
| 556 |
+
result_number = url_results_dict[url]
|
| 557 |
+
normal = sys.stdout.write(colored('[#] ', 'yellow'))
|
| 558 |
+
sys.stdout.write(colored('(%d) ' % (result_number), 'cyan'))
|
| 559 |
+
sys.stdout.write(colored('%s' % (result_info), 'white'))
|
| 560 |
+
new_url_list.append(new_url)
|
| 561 |
+
result_number_list.append(result_number)
|
| 562 |
+
dork_name_list.append(dork_name)
|
| 563 |
+
print('')
|
| 564 |
+
|
| 565 |
+
else:
|
| 566 |
+
result_number = url_results_dict[url]
|
| 567 |
+
success = sys.stdout.write(colored('[+] ', 'green'))
|
| 568 |
+
sys.stdout.write(colored('(%d) ' % (result_number), 'cyan'))
|
| 569 |
+
sys.stdout.write(colored('%s' % (result_info), 'white'))
|
| 570 |
+
new_url_list.append(new_url)
|
| 571 |
+
result_number_list.append(result_number)
|
| 572 |
+
dork_name_list.append(dork_name)
|
| 573 |
+
print('')
|
| 574 |
+
|
| 575 |
+
else:
|
| 576 |
+
failure = sys.stdout.write(colored('[-] ', 'red'))
|
| 577 |
+
sys.stdout.write(colored('%s' % new_url, 'white'))
|
| 578 |
+
count = count + 1
|
| 579 |
+
print('')
|
| 580 |
+
|
| 581 |
+
# CSV OUTPUT TO FILE
|
| 582 |
+
if args.output:
|
| 583 |
+
# FILE NAME USER INPUT
|
| 584 |
+
file_name = args.output
|
| 585 |
+
|
| 586 |
+
# DEFINE ROWS FOR KEYWORDS AND WITHOUT
|
| 587 |
+
query_with_dorks_rows = zip(dork_name_list, new_url_list, result_number_list)
|
| 588 |
+
organization_with_dorks_row = zip(dork_name_list, new_url_list, result_number_list)
|
| 589 |
+
user_with_keyword_only_rows = zip(user_list, keyword_name_list, new_url_list, result_number_list)
|
| 590 |
+
user_with_keyword_and_dorks_rows = zip(user_list, dork_name_list, keyword_name_list, new_url_list,
|
| 591 |
+
result_number_list)
|
| 592 |
+
user_with_dorks_only_rows = zip(user_list, dork_name_list, new_url_list, result_number_list)
|
| 593 |
+
|
| 594 |
+
# DEFINE FIELDS FOR KEYWORDS AND WITHOUT
|
| 595 |
+
query_with_dorks_fields = ['DORK', 'URL', 'NUMBER OF RESULTS']
|
| 596 |
+
organization_with_dorks_fields = ['DORK', 'URL', 'NUMBER OF RESULTS']
|
| 597 |
+
user_with_keyword_only_fields = ['USER', 'KEYWORD', 'URL', 'NUMBER OF RESULTS']
|
| 598 |
+
user_with_keyword_and_dorks_fields = ['USER', 'DORK', 'KEYWORD', 'URL', 'NUMBER OF RESULTS']
|
| 599 |
+
user_with_dorks_only_fields = ['USER', 'DORK', 'URL', 'NUMBER OF RESULTS']
|
| 600 |
+
|
| 601 |
+
# OUTPUT FOR ROWS WITH KEYWORDS AND DORKS
|
| 602 |
+
with open(file_name + '_gh_dorks' + '.csv', "w") as csvfile:
|
| 603 |
+
wr = csv.writer(csvfile)
|
| 604 |
+
if args.query or args.queryfile:
|
| 605 |
+
wr.writerow(query_with_dorks_fields)
|
| 606 |
+
for row in query_with_dorks_rows:
|
| 607 |
+
wr.writerow(row)
|
| 608 |
+
if args.organization:
|
| 609 |
+
wr.writerow(organization_with_dorks_fields)
|
| 610 |
+
for row in organization_with_dorks_row:
|
| 611 |
+
wr.writerow(row)
|
| 612 |
+
elif args.users or args.userfile:
|
| 613 |
+
if args.keyword and args.dorks:
|
| 614 |
+
wr.writerow(user_with_keyword_and_dorks_fields)
|
| 615 |
+
for row in user_with_keyword_and_dorks_rows:
|
| 616 |
+
wr.writerow(row)
|
| 617 |
+
elif args.keyword and not args.dorks:
|
| 618 |
+
wr.writerow(user_with_keyword_only_fields)
|
| 619 |
+
for row in user_with_keyword_only_rows:
|
| 620 |
+
wr.writerow(row)
|
| 621 |
+
elif args.dorks and not args.keyword:
|
| 622 |
+
wr.writerow(user_with_dorks_only_fields)
|
| 623 |
+
for row in user_with_dorks_only_rows:
|
| 624 |
+
wr.writerow(row)
|
| 625 |
+
|
| 626 |
+
csvfile.close()
|
| 627 |
+
print("")
|
| 628 |
+
sys.stdout.write(
|
| 629 |
+
colored("Results have been outputted into the current working directory as " + file_name + "_gitdorker",
|
| 630 |
+
'green'))
|
| 631 |
+
print("")
|
| 632 |
+
print("")
|
README.md
CHANGED
|
@@ -1,10 +1,90 @@
|
|
| 1 |
---
|
| 2 |
title: GitDorker
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: docker
|
| 7 |
-
|
| 8 |
---
|
|
|
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
title: GitDorker
|
| 3 |
+
emoji: 🕵️
|
| 4 |
+
colorFrom: blue
|
| 5 |
+
colorTo: green
|
| 6 |
sdk: docker
|
| 7 |
+
app_port: 7860
|
| 8 |
---
|
| 9 |
+

|
| 10 |
|
| 11 |
+
# GitDorker
|
| 12 |
+
GitDorker is a tool that utilizes the GitHub Search API and an extensive list of GitHub dorks that I've compiled from various sources to provide an overview of sensitive information stored on github given a search query.
|
| 13 |
+
|
| 14 |
+
The Primary purpose of GitDorker is to provide the user with a clean and tailored attack surface to begin harvesting sensitive information on GitHub. GitDorker can be used with additional tools such as GitRob or Trufflehog on interesting repos or users discovered from GitDorker to produce best results.
|
| 15 |
+
|
| 16 |
+
## In Depth How to Video and Use Cases
|
| 17 |
+
https://youtu.be/UwzB5a5GrZk
|
| 18 |
+
|
| 19 |
+
## Rate Limits
|
| 20 |
+
GitDorker utilizes the GitHub Search API and is limited to 30 requests per minute. In order to prevent rate limites a sleep function is built into GitDorker after every 30 requests to prevent search failures. Therefore, if one were to run use the alldorks.txt file with GitDorker, the process will take roughly 5 minutes to complete.
|
| 21 |
+
|
| 22 |
+
## Requirements
|
| 23 |
+
** Python3
|
| 24 |
+
|
| 25 |
+
** GitHub Personal Access Token
|
| 26 |
+
|
| 27 |
+
** Install requirements inside of the requirements.txt file of this repo (pip3 install -r requirements.txt)
|
| 28 |
+
|
| 29 |
+
Please follow the guide below if you are unsure of how to create a personal access token:
|
| 30 |
+
https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token
|
| 31 |
+
|
| 32 |
+
## Recommendations
|
| 33 |
+
It is recommended to provide GitDorker with at least two GitHub personal access tokens so that it may alternate between the two during the dorking process and reduce the likelihood of being rate limited. Using multiple tokens from separate GitHub accounts will provide the best results.
|
| 34 |
+
|
| 35 |
+
## Dorks
|
| 36 |
+
Within the dorks folder are a list of dorks. It is recommended to use the "alldorks.txt" file when mapping out your github secrets attack surface. The "alldorks.txt" is my collection of dorks that i've pulled from various resources, totalling to 239 individual dorks of sensitive github information.
|
| 37 |
+
|
| 38 |
+
## Usage
|
| 39 |
+
I've created a blog post with far more detail in how to use GitDorker and potential use cases here: https://medium.com/@obheda12/gitdorker-a-new-tool-for-manual-github-dorking-and-easy-bug-bounty-wins-92a0a0a6b8d5
|
| 40 |
+
|
| 41 |
+
For a full detailed look of use cases and how to use GitDorker's most updated features please see the BlackHat Presentation below:
|
| 42 |
+
https://youtu.be/UwzB5a5GrZk
|
| 43 |
+
|
| 44 |
+
Help Output:
|
| 45 |
+
|
| 46 |
+

|
| 47 |
+
|
| 48 |
+
## Docker
|
| 49 |
+
|
| 50 |
+
```bash
|
| 51 |
+
|
| 52 |
+
## Build Command
|
| 53 |
+
docker build -t gitdorker .
|
| 54 |
+
|
| 55 |
+
## Basic Run Command
|
| 56 |
+
docker run -it gitdorker
|
| 57 |
+
|
| 58 |
+
## Run Command
|
| 59 |
+
docker run -it -v $(pwd)/tf:/tf gitdorker -tf tf/TOKENSFILE -q tesla.com -d dorks/DORKFILE -o tesla
|
| 60 |
+
|
| 61 |
+
## Run Command
|
| 62 |
+
docker run -it -v $(pwd)/tf:/tf xshuden/gitdorker -tf tf/TOKENSFILE -q tesla.com -d dorks/DORKFILE -o tesla
|
| 63 |
+
|
| 64 |
+
```
|
| 65 |
+
|
| 66 |
+
## Screenshots
|
| 67 |
+
Below is an example of the results from running the query "tesla.com" with a small list of dorks.
|
| 68 |
+
|
| 69 |
+
The following command was run to query for "tesla.com" against a list of dorks:
|
| 70 |
+
|
| 71 |
+
`python3 GitDorker.py -tf TOKENSFILE -q tesla.com -d Dorks/DORKFILE -o tesla`
|
| 72 |
+
|
| 73 |
+

|
| 74 |
+
|
| 75 |
+
Note: The more advanced queries you put (i.e incorporation of user, org, endpoint information, etc. the more succint results you will achieve)
|
| 76 |
+
|
| 77 |
+
## If you like GitDorker and want to see more cool tools!
|
| 78 |
+
<a href="https://www.buymeacoffee.com/obheda12" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>
|
| 79 |
+
|
| 80 |
+
# Credits
|
| 81 |
+
Reference points for creating GitDorker and compiling dorks lists
|
| 82 |
+
|
| 83 |
+
- [@gwendallecoguic](https://github.com/gwen001) - special thank you to gwendall and his scripts that provided me with the framework for creating GitDorker.
|
| 84 |
+
- [@techgaun](https://github.com/techgaun) - His list of dorks provided a fantastic base for the dorks file
|
| 85 |
+
- [@Shashank-In](https://github.com/Shashank-In) - His list of Travis leaks helped add additional dorks
|
| 86 |
+
- [@Jhaddix](https://github.com/jhaddix) - Methodology and reference for dorks
|
| 87 |
+
|
| 88 |
+
# Disclaimer
|
| 89 |
+
|
| 90 |
+
This project is made for educational and ethical testing purposes only. Usage of this tool for attacking targets without prior mutual consent is illegal. Developers assume no liability and are not responsible for any misuse or damage caused by this tool.
|
app.py
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import subprocess
|
| 3 |
+
from fastapi import FastAPI, Form, Request
|
| 4 |
+
from fastapi.responses import HTMLResponse
|
| 5 |
+
from fastapi.templating import Jinja2Templates
|
| 6 |
+
import asyncio
|
| 7 |
+
|
| 8 |
+
app = FastAPI()
|
| 9 |
+
|
| 10 |
+
# We use Jinja2Templates to render the HTML. This is a bit cleaner than a multiline string.
|
| 11 |
+
templates = Jinja2Templates(directory=".")
|
| 12 |
+
|
| 13 |
+
HTML_FORM = """
|
| 14 |
+
<!DOCTYPE html>
|
| 15 |
+
<html>
|
| 16 |
+
<head>
|
| 17 |
+
<title>GitDorker Interface</title>
|
| 18 |
+
<style>
|
| 19 |
+
body { font-family: sans-serif; background-color: #f4f4f9; color: #333; margin: 2em; }
|
| 20 |
+
.container { max-width: 800px; margin: auto; background: white; padding: 2em; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
|
| 21 |
+
h1 { color: #4a4a4a; }
|
| 22 |
+
form { display: flex; flex-direction: column; gap: 1em; }
|
| 23 |
+
input[type=text], select { padding: 10px; border-radius: 4px; border: 1px solid #ccc; font-size: 1em; }
|
| 24 |
+
input[type=submit] { padding: 10px 20px; border: none; border-radius: 4px; background-color: #007bff; color: white; font-size: 1em; cursor: pointer; }
|
| 25 |
+
input[type=submit]:hover { background-color: #0056b3; }
|
| 26 |
+
.results { margin-top: 2em; background-color: #282c34; color: #abb2bf; padding: 1em; border-radius: 4px; white-space: pre-wrap; word-wrap: break-word; }
|
| 27 |
+
.running { color: #ffa500; }
|
| 28 |
+
</style>
|
| 29 |
+
</head>
|
| 30 |
+
<body>
|
| 31 |
+
<div class="container">
|
| 32 |
+
<h1>GitDorker Hugging Face Interface</h1>
|
| 33 |
+
<form action="/run" method="post">
|
| 34 |
+
<label for="query">Query (e.g., tesla.com):</label>
|
| 35 |
+
<input type="text" id="query" name="query" required>
|
| 36 |
+
|
| 37 |
+
<label for="dork_file">Dorks File:</label>
|
| 38 |
+
<select id="dork_file" name="dork_file">
|
| 39 |
+
<option value="Dorks/alldorksv3">All Dorks (alldorksv3)</option>
|
| 40 |
+
<option value="Dorks/medium_dorks.txt">Medium Dorks</option>
|
| 41 |
+
</select>
|
| 42 |
+
|
| 43 |
+
<input type="submit" value="Run GitDorker">
|
| 44 |
+
</form>
|
| 45 |
+
|
| 46 |
+
<div id="results-container">
|
| 47 |
+
{% if result %}
|
| 48 |
+
<h2>Results:</h2>
|
| 49 |
+
<pre class="results">{{ result }}</pre>
|
| 50 |
+
{% endif %}
|
| 51 |
+
{% if running %}
|
| 52 |
+
<h2 class="running">Running... please wait. This can take several minutes.</h2>
|
| 53 |
+
{% endif %}
|
| 54 |
+
</div>
|
| 55 |
+
</div>
|
| 56 |
+
</body>
|
| 57 |
+
</html>
|
| 58 |
+
"""
|
| 59 |
+
|
| 60 |
+
# Create a template from the string
|
| 61 |
+
templates.env.from_string(HTML_FORM)
|
| 62 |
+
|
| 63 |
+
@app.get("/", response_class=HTMLResponse)
|
| 64 |
+
async def read_root(request: Request):
|
| 65 |
+
return templates.TemplateResponse("", {"request": request})
|
| 66 |
+
|
| 67 |
+
@app.post("/run", response_class=HTMLResponse)
|
| 68 |
+
async def run_dorker(request: Request, query: str = Form(...), dork_file: str = Form(...)):
|
| 69 |
+
github_tokens = os.environ.get("GHA_TOKENS")
|
| 70 |
+
|
| 71 |
+
if not github_tokens:
|
| 72 |
+
error_message = "Error: GHA_TOKENS is not set in the Space secrets."
|
| 73 |
+
return templates.TemplateResponse("", {"request": request, "result": error_message})
|
| 74 |
+
|
| 75 |
+
# The command needs to be run from the context of the script's directory
|
| 76 |
+
# Arguments must be separated for subprocess
|
| 77 |
+
command = [
|
| 78 |
+
"python3",
|
| 79 |
+
"GitDorker.py",
|
| 80 |
+
"-t", github_tokens,
|
| 81 |
+
"-q", query,
|
| 82 |
+
"-d", dork_file,
|
| 83 |
+
"-o", f"output_{query.replace('.', '_')}" # Add output to a file
|
| 84 |
+
]
|
| 85 |
+
|
| 86 |
+
# Show a running message first
|
| 87 |
+
response = templates.TemplateResponse("", {"request": request, "running": True})
|
| 88 |
+
|
| 89 |
+
# Run the process in the background
|
| 90 |
+
proc = await asyncio.create_subprocess_exec(
|
| 91 |
+
*command,
|
| 92 |
+
stdout=subprocess.PIPE,
|
| 93 |
+
stderr=subprocess.PIPE
|
| 94 |
+
)
|
| 95 |
+
|
| 96 |
+
stdout, stderr = await proc.communicate()
|
| 97 |
+
|
| 98 |
+
# Decode and combine output
|
| 99 |
+
result_output = stdout.decode('utf-8', errors='ignore') + stderr.decode('utf-8', errors='ignore')
|
| 100 |
+
|
| 101 |
+
return templates.TemplateResponse("", {"request": request, "result": result_output})
|
dummycreds
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
These are GitDorker Credentials
|
| 2 |
+
password = 123456
|
| 3 |
+
test = test
|
| 4 |
+
supersecret = secret
|
| 5 |
+
youwillneverfindme
|
| 6 |
+
api_key = o123y1houejnduqedgbij
|
| 7 |
+
apikey = 1oi2egquewfihacoju9dfd
|
| 8 |
+
AWS_KEY = nou9W7E89U0I3PDQONP4FOVDFSFSG
|
| 9 |
+
ftp login = ftp://127.0.0.1
|
| 10 |
+
db_user = admin
|
| 11 |
+
db_password = password
|
| 12 |
+
connectionstring = Provider=SQLNCLI11;Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;Initial Catalog=myDataBase;Integrated Security=True;
|
requirements.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
termcolor
|
| 2 |
+
tqdm
|
| 3 |
+
requests
|
| 4 |
+
fastapi
|
| 5 |
+
uvicorn
|
| 6 |
+
python-multipart
|
| 7 |
+
jinja2
|
tf/TOKENSFILE
ADDED
|
File without changes
|