Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Włamanie do oprogramowania.
Forum PHP.pl > Forum > PHP
luis2luis
Witam.

W ostatnim czasie ktoś włamał się do aplikacji, podmienił pewne dane w administracji.
Teraz okaząło sie, że na serwerze pojawiły sie jakieś nowe pliki php.

Jeden zmienia chmod w pewnych plikach na 777

a drugi wygląda tak:


  1.  
  2. <?php
  3.  
  4. $language='pl';
  5. $auth = 0;
  6. $name='aaabb';
  7. $pass='aaabb';
  8.  
  9. @ini_restore("safe_mode");
  10. @ini_restore("open_basedir");
  11. @ini_restore("safe_mode_include_dir");
  12. @ini_restore("safe_mode_exec_dir");
  13. @ini_restore("disable_functions");
  14. @ini_restore("allow_url_fopen");
  15. @ini_set('error_log',NULL);
  16. @ini_set('log_errors',0);
  17.  
  18. ?>



Czy te ustawienia moga pomóc w dostaniu się do zawartości serwera/plików php?
W oprogramowaniu jest dużo różnych bibliotek, nie wszystkei sa najnowsze. Jakie funkcje php mogą posłużyć za podmiane zawartości pliku php, lub wstawienie nowego pliku na serwer?
Damonsson
Tutaj mamy do czynienia z czasem przeszłym, więc pytanie czy mogą pomóc w dostaniu jest bezzasadne, to już się stało.

Tu trzeba jakiegoś post audytu. Możesz szukać ewentualnie po dacie edycji plików, logach serwera/php (które pewnie i tak zostały usunięte).
luis2luis
Cytat(Damonsson @ 25.11.2015, 14:54:21 ) *
Tutaj mamy do czynienia z czasem przeszłym, więc pytanie czy mogą pomóc w dostaniu jest bezzasadne, to już się stało.

Tu trzeba jakiegoś post audytu. Możesz szukać ewentualnie po dacie edycji plików, logach serwera/php (które pewnie i tak zostały usunięte).



Jeszcze jest opcja, że mogli znac hasło do ftp, nie było zmeiniane od kilku lat z tego co widze, mogł zostac wgrany jeszcze jakis plik na serwer.

Chciałem znaleźć tą luke i zabezpieczyc to. Sporo zmian już wprowadziłem.
Damonsson
Cóż można Ci poradzić, tylko "szukaj luki", jest tyle możliwych opcji, że nawet ciężko coś sensownego poradzić. Logi FTP musisz przejrzeć (w sieci znajdziesz na pewno jakieś narzędzia żeby odfiltrować wyniki) jeżeli podejrzewasz, że to przez FTP.

Prewencyjnie, zmiana wszystkich haseł do wszystkiego, jeżeli ataki ustaną to dobrze, jeżeli nie, to gdzieś masz lukę w kodzie/uprawnieniach.
luis2luis
Cytat(Damonsson @ 25.11.2015, 15:32:51 ) *
Cóż można Ci poradzić, tylko "szukaj luki", jest tyle możliwych opcji, że nawet ciężko coś sensownego poradzić. Logi FTP musisz przejrzeć (w sieci znajdziesz na pewno jakieś narzędzia żeby odfiltrować wyniki) jeżeli podejrzewasz, że to przez FTP.

Prewencyjnie, zmiana wszystkich haseł do wszystkiego, jeżeli ataki ustaną to dobrze, jeżeli nie, to gdzieś masz lukę w kodzie/uprawnieniach.



ok rozumie. Hasła pozmieniane.

Mam pytanie tylko. w jaki sposób mógł na serwer zostac wgrany plik php do katalogu głównego. Jaka funkcja mogła zostac do tego użyta? file_put_content i co jeszcze?
andrew654
Można normalnie uploadować plik php przez formularz wink.gif Nie trzeba do tego specjalnych funkcji. Można też zapisać trochę skryptu php w bazie danych a później go wykonać. Możliwości jest wiele. Skrypty zabezpiecza się tak, żeby w danym polu można było przesłać wymagane minimum danych, a wszystko inne usuwać.

Jest taki skrypt php, nazywa się WSO chyba. Jak go się wrzuci na serwer to można zrobić na nim [serwerze] praktycznie wszystko. Może nawet zmieniać daty modyfikacji plików, więc szukanie po ostatnio zmodyfikowanych nic nie da (oczywiście jeśli ktoś mocno chciał to ukryć). Zazwyczaj jest mocno zaszyty w kilku plikach. Widziałem już różne kombinacje. Łączenie stringów jako nazwa pliku gdzie znajduje się skrypt WSO, wszystko kilkukrotnie ukryte wszystkimi funkcjami o których mało kto wie do czego się je używa. Przeważnie wrzucony w kilka miejsc rozsianych po serwerze i trzeba się nieźle naszukać żeby odnaleźć wszystkie pliki, bo inaczej zostawisz backdoora którym ktoś będzie mógł znowu zrobić co mu się podoba.
luis2luis
Cytat(andrew654 @ 25.11.2015, 20:38:12 ) *
Można normalnie uploadować plik php przez formularz wink.gif Nie trzeba do tego specjalnych funkcji. Można też zapisać trochę skryptu php w bazie danych a później go wykonać. Możliwości jest wiele. Skrypty zabezpiecza się tak, żeby w danym polu można było przesłać wymagane minimum danych, a wszystko inne usuwać.

Jest taki skrypt php, nazywa się WSO chyba. Jak go się wrzuci na serwer to można zrobić na nim [serwerze] praktycznie wszystko. Może nawet zmieniać daty modyfikacji plików, więc szukanie po ostatnio zmodyfikowanych nic nie da (oczywiście jeśli ktoś mocno chciał to ukryć). Zazwyczaj jest mocno zaszyty w kilku plikach. Widziałem już różne kombinacje. Łączenie stringów jako nazwa pliku gdzie znajduje się skrypt WSO, wszystko kilkukrotnie ukryte wszystkimi funkcjami o których mało kto wie do czego się je używa. Przeważnie wrzucony w kilka miejsc rozsianych po serwerze i trzeba się nieźle naszukać żeby odnaleźć wszystkie pliki, bo inaczej zostawisz backdoora którym ktoś będzie mógł znowu zrobić co mu się podoba.



Ok rozumie, czyli trzeba nadpisać wszystko czystą wersją skryptu i wykasowac to co jest teraz po prostu.

a jak wygląda sprawa nadawanai chmod na pliki? Czy 0755 (Wszystkie prawa dla właściciela, odczyt i wykonanie dla innych) będzie ok dla wszystkich plików php + dla katalogu w kórym znajduje sie cały skrypt?
viking
Zależy od uprawnień na jakich pracuje PHP. Standardowe 755 dla katalogów, 644 dla plików ale niekoniecznie grupa ostatnia musi mieć dostęp.
luis2luis
Cytat(viking @ 26.11.2015, 10:57:11 ) *
Zależy od uprawnień na jakich pracuje PHP. Standardowe 755 dla katalogów, 644 dla plików ale niekoniecznie grupa ostatnia musi mieć dostęp.




Ostatni cyfra to "Wszyscy", wiec moze zostac 0 ?


FOLDERY: 750
FOLDERY W KtÓRYCH SKRYPT DOKONUJE ZAPISU: 770

PLIKI PHP: 640
PLIKI W KtÓRYCH SKRYPT DOKONUJE ZAPISU (np CONFIG): 770

mam jeszcze pytanie, ten kod php, widze, że zmienia ustawienia serwera i na co zezwala?

  1. HP] pobierz, plaintext
  2.  
  3. <?php
  4.  
  5. $language='pl';
  6. $auth = 0;
  7. $name='aaabb';
  8. $pass='aaabb';
  9.  
  10. @ini_restore("safe_mode");
  11. @ini_restore("open_basedir");
  12. @ini_restore("safe_mode_include_dir");
  13. @ini_restore("safe_mode_exec_dir");
  14. @ini_restore("disable_functions");
  15. @ini_restore("allow_url_fopen");
  16. @ini_set('error_log',NULL);
  17. @ini_set('log_errors',0);
  18.  
  19. ?>
viking
Przywraca domyślną konfigurację oraz ukrywa logowanie. Przy dobrze skonfigurowanym serwerze szczególnie dużo to nie zrobi.
luis2luis
Cytat(viking @ 26.11.2015, 17:14:31 ) *
Przywraca domyślną konfigurację oraz ukrywa logowanie. Przy dobrze skonfigurowanym serwerze szczególnie dużo to nie zrobi.


Tu może być problem, bo serwer jeszcze niedawno pozwalał na użycie polecenie set_time_limit(0) i skrypt mogl wykonywać się bardzo długo, z reszta moze byc podobnie :/

Co do chmod, ostatecznie zostawiłbym tak:

550: FOLDERY Z PLIKAMI PHP - (wykonywanie i odczyt)
770: FOLDERY W KTÓRYCH SKRYPT DOKONUJE ZAPISU, SA TAM PLIKI PHP (wykonywanie, odczyt i zapisywanie)
660: FOLDER DO ZAPISU ZE ZDJECIAMI, DO WYKONYWANIA BACKUPU I KAŻDY INNY FOLDER, KTÓRY NIE ZAWIERA PLIKÓW PHP (zapisywanie i odczyt)

550: PLIKI PHP (wykonywanie i odczyt)
770: PLIKI W KTÓRYCH SKRYPT DOKONUJE ZAPISU (np CONFIG) (wykonywanie, odczyt i zapisywanie)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.