2012-06-14 14 views
5

Wiem, że zabezpieczenie jakiejkolwiek strony internetowej jest bardzo trudnym i szerokim tematem do omówienia, ale chcę odnieść to pytanie do mojej konkretnej strony internetowej, nad którą pracowałem. Został zakodowany w php przez jakiegoś innego programistę około 2004 roku i jestem odpowiedzialny za jego zarządzanie. Mój problem polega na tym, że jest hackowany raz po raz. Zauważyłem następujące rzeczy, gdy zostały zhakowane.jak zabezpieczyć moją stronę internetową?

  1. .htaccess plik został zmodyfikowany
  2. index.php i config.php pliki zostały zmodyfikowane
  3. Admin hasło zostało zmienione
  4. przesyłaniu plików w serwerze
  5. zmieniających uprawnienia plików plików i folderów

Pracowałem nad kodem, został on poprawnie usunięty z a i myślę, że nie ma prawdopodobieństwa wstrzyknięcia sql. Ponieważ większość problemu związana jest z plikami i uprawnieniami mam wątpliwość co do bezpieczeństwa serwera, ale z tego powodu, że został zakodowany w 2004 roku, na pewno nie będzie miał żadnych zabezpieczeń, więc o co mi jeszcze chodzi w moim kodzie do uniemożliwić włamanie do mojej strony w przypadku wyżej wymienionych problemów?

Z góry dziękuję.

+1

Wypróbuj kilka rozwiązań na to pytanie: http://serverfault.com/questions/12847/penetration-testing. Istnieje wiele narzędzi testowych, które powiedzą Ci, gdzie są problemy ... – R4D4

+1

W jaki sposób zostały zmodyfikowane? Co zostało dodane? Powinieneś poprosić administratora serwera o wykonanie skanowania antywirusowego na komputerze. Możliwe, że zostałeś dotknięty jakimś brutalnym atakiem siłowym, który wszedł do systemu i uzyskał dostęp do roota. –

+0

jaki jest twój hosting? Udostępnione? VDS czy dedykowane? Jeśli jest udostępniony, to pierwszym przystankiem jest twój serwer. – Nick

Odpowiedz

5

Ponieważ pliki zostały zmodyfikowane, jest to mało prawdopodobne z powodu błędów iniekcji SQL.

możliwości dostać się do plików:

  • Guess/kraść hasła FTP
  • Hack serwer (tak naprawdę nie można robić nic na ten temat)
  • Niedostateczna izolacja na serwerze, co oznacza, inni klienci mogą zmienić swoje pliki (naprawdę nie można nic zrobić, że obaj)
  • zdalne wykonanie kodu błędów

Teraz, odkąd mówisz, że strona pochodzi z 2004 roku, może to oznaczać, że używa ona eval do szablonów lub include dla rzeczy takich jak site.php?section=foo, a następnie dodaje foo.php w kodzie gdzieś, co było robione często w 2004 roku. Zrobiłbym szybki wyszukiwanie plików dla eval i regex include(.*\$.*), a także require(.*\$.*). Są to pierwszorzędni podejrzani w zależności od tego, w jaki sposób zostali wykorzystani.

+2

"Naprawdę nie możesz nic zrobić", zmień hosting, poinformuj dostawcę o problemach lub napraw serwer konfiguracja. –

+0

Chciałbym dodać "lub hasło SSH" do "Zgadnij/wykradnij swoje hasło FTP". –

+0

@mensi Miałeś rację, ponieważ plik do uwzględnienia jest przekazywany w adresie URL, tak jak powiedziałeś, i jest tam używana funkcja 'eval', ale nie mogę znaleźć' regex' dla dołączania plików. W każdym razie dzięki za odpowiedź będę dbać o kod i mam nadzieję, że mogę to naprawić. – uttam

4

Ktoś prawdopodobnie ma bezpośredni dostęp do serwera, a nie do (a) w szczególności skryptów. To nie brzmi jak problem bezpieczeństwa, który ma swoje źródło w bazie kodu.

Być może warto rozważyć przeniesienie całej witryny do innego dostawcy, jeśli zdarza się to raz po raz. Zacznij od nowa, korzystając ze świeżych haseł, kontroli dostępu itd.

2

OWASP top 10 jest bardzo dobrze przeczytać. Moje domysły.

  • przestarzały system operacyjny, który ma luki w zabezpieczeniach.
  • Wtryskiwać MySQL i być może wszystkie hasła przechowywane w czystym tekście są bardzo złe. Do uwierzytelnienia powinieneś używać czegoś takiego jak openID.Również, jeśli masz wstrzyknięcie MySQL, powinieneś zaktualizować kod tak, aby używał PDO (przygotowanych instrukcji), jeśli to możliwe.
  • uprawnienia do odczytu/zapisu nie są ustawione poprawnie lub APACHE/PHP działa na podwyższonym poziomie?

Moja rada dla Ciebie jest:

  • przeczytać w sprawie informacji o OWASP. Następnie spójrz na luki w kodzie. Każda linia może być źródłem problemu ze źródłami. Może powinieneś zrezygnować ze starego kodu, ponieważ jest bardzo niepewny?
  • ponownie zainstalować system operacyjny, ponieważ możesz mieć rootkita nawet?
+0

CHNP lub mysqli - wolę sam mysqli;) –

1
  • Nigdy nie używać tylko dzielonego hostingu, należy przynajmniej zarządzanych serwerów/utrzymać system na bieżąco
  • Sprawdź php.ini do spraw zabezpieczenia (które można google)
  • Sprawdź Apache/nginx/... configs do nadpisania
  • nigdy niezaszyfrowanej komunikować się z serwerem (wykorzystanie SFTP, SSH, ...)
  • Nigdy nie ufaj wartości zewnętrznych (również z plików cookie), zawsze uciec/cast te
  • Internetu Po wprowadzeniu danych przez użytkownika (usuń podziały wierszy, znaki 0x00, znaczniki, ... gdzie niepożądane)
  • Sprawdź wszystkie możliwe konta użytkowników dla serwera/bazy danych/...
  • Sprawdź, czy wszystkie usługi działają jako właściwy użytkownik
  • Sprawdź plik (write/execute) uprawnienia w folderach internetowych
  • Ucieczka wszystko co pokazać na stronie internetowej, nawet nie ufać swojemu danych bazy danych, aby być bezpieczne w żaden sposób
  • w przypadku korzystania z 3rd oprogramowania, uważaj w przypadku ostrzeżeń o bezpieczeństwie
  • ponownie zainstaluj serwer, być może zostałeś rootowany
  • Zastosowanie sporządziły sprawozdania

To wszystko;) To zwiększy Twoje bezpieczeństwo dużo, ale doświadczeni napastnicy są trudne.

Powiązane problemy