Căutăm shell-uri php pentru găzduire (shell web php)

Se întâmplă adesea ca site-ul să nu înțeleagă de ce nu funcționează așa cum avem nevoie. De exemplu, dacă mergem de la căutarea Google, ajungem la site-ul altcuiva în loc de al nostru. Sau începem să observăm frânările îngrozitoare în munca locului. E timpul să faceți un audit de securitate. Căutarea pe webshells (viruși pe site) nu este o sarcină atât de dificilă, dar este nevoie de timp și de îngrijire. Aceste rețete nu sunt un panaceu pentru toate relele, ci doar soluții la problemă. Puteți fi deschis să experimentați și să vă testați ideile. În plus, aceste consilii vor fi actualizate periodic cu noi informații.

Deci, condițiile problemei: avem un shell pe server și trebuie să-l găsim. Avem ssh.

Următoarea comandă ne va arăta toate fișierele php modificate în ultimele 7 zile. Adică, dacă site-ul este destul de matur și a fost încărcat în cursul săptămânii trecute, această echipă va fi excelentă în cercetarea noastră.

găsi. -type f -name '* .php' -mtime -7

Avem nevoie de următoarea comandă:
găsi. -name \ * | xargs -n 1 grep -Hn "implicit_acțiune"
Se caută toate fișierele care conțin subrețea implicit_acțiune

În loc de default_action, trebuie să înlocuim un substring pentru shell. De exemplu, aceasta ar putea fi HTTP_USER_AGENT:
găsi. -name \ * | xargs -n 1 grep -Hn "HTTP_USER_AGENT"

preg_replace ("
găsi. -name \ * | xargs -n 1 grep -Hn "preg_replace ("

default_action = "FilesMan"
găsi. -name \ * | xargs -n 1 grep -Hn "" FilesMan ""

eval (base64_decode
găsi. -name \ * | xargs -n 1 Grep -Hn "eval (base64_decode"

Iată câteva comenzi utile:
egrep -rlZ -e "eval \ (gzinflate \ (" / usr / home
egrep -rlZ -e "gzinflate" / usr / home
egrep -rlZ -e "eval \ (str_replace" / usr / home
grep -Rl "r57shell | c99madshell | eval \ | base64_decode" / home
grep -RPn "(passthru | shell_exec | Sistem | phpinfo | base64_decode | chmod | mkdir | fopen | fclose | readfile) * \ (" public_html /

Căutați textul "eval" în toate fișierele cu extensia .php din directorul specificat:
găsi / dir / to / find / -type f -iname "* .php" -exec grep -Him1 'eval' <> \;

Căutați "eval" printre fișierele care au drepturi 777
găsi / dir / to / găsi / -perm 2-tip f -iname "* .php" -exec grep -Him1 'eval' <> \;

Căutarea simplă a script-urilor php în dosarul specificat
găsiți / dir / to / find / -perm 2-type f -iname "* .php"

Căutați fișierele .php create sau modificate în ultimele 7 zile
găsiți / dir / to / find / -type f -iname "* .php" -mtime -7

Bash script
#! / bin / bash
cd / var / www
grep -rl "FilesMan" *
grep -rl "auth" *
grep -rl "coajă" *
grep -rl "FilesMan" *
grep -rl "Îndepărtați-vă" *
grep -rl "phpinfo" *
grep -rl "Exec" *
grep -rl "face dir" *
grep -rl "r57" *
ieșire 0

Mai mult:
#! / bin / bash

grep -rl "eval (" *> log
grep -rl "(" *> log
grep -rl "phpinfo" *> log
grep -rl "debug" *> log
grep -rl "auth" *> log
grep -rl "FilesMan" *> jurnal
grep -rl "base64_decode" *> log
somn 1.0
echo "l".
somn 0.3
echo "lo .."
somn 0.3
echo "loa".
somn 0.3
ecou "."
somn 0.3
echo "loadi."
somn 0.3
echo "loadin."
somn 0.3
ecou "de încărcare."
somn 0.3

ecou "Scanarea este completă"

găsi. \ (-name "* .php" \) grep exec -Hn "[\ t] * eval (base64_decode (*).);" <> \; -execad -i 's / [\ t] * eval (base64_decode (. *)); // g' <> \;
găsi. \ (-name "* .php") -exec grep -Hn "[\ t] * phpinfo (. *);" <> \; -execad -i 's / [\ t] * phpinfo (. *); // g' <> \;
găsi. \ (-name "* .php") -exec grep -Hn "[\ t] * FișiereMan *;" <> \; -execad -i 's / [\ t] * FilesMan *; // g' <> \;
echo "Toate fișierele au fost actualizate, verificați jurnalul"