Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Prawidłowy kod
Forum PHP.pl > Forum > Przedszkole
materkamil
Wściekłem się i zrobiłem tak: http://astrouniverse.netii.net/
No i nowa strona dalej rozwalona!
http://www.astrohosting.web44.net/

I teraz wytłumaczę jak zrobiłem tą stronkę:

zrobiłem na stronie głównej formularz do przesyłania hasła do skryptu.

if (hasło poprawne) {
pokaż formularz do przesyłania plików
}
else
{
}

Jednak ten "ktoś" przesłał pliki, a ja nie wiem jakim cudem. Oto kody strony dzięki której pokazuje się formularz:

  1. <body background=omega.jpg>
  2. <?
  3. $tagizyja = $_POST["haslo"];
  4. $tagikaput = strip_tags($tagizyja);
  5. if($tagikaput == "tego nie powiem") { // TUTAJ WYŚWIETLA SIĘ TEN FORMULARZ PRZESYŁANIA PLIKÓW
  6. echo("<center><font size=6 color=blue face=arial>Upload plików forum <a href=http://www.astrouniverse.pl>ASTROUNIVERSE</a></font><br><br><font size=4 color=Navy>Przypominam że na ten serwer ze względów bezpieczeństwa można przesyłać jedynie pliki z rozszerzeniem: jpg oraz gif. Wykonanie strony <b>materkamil</b><br></font>
  7. <br><form enctype=multipart/form-data action=tu jest jakis plik ale nie powiem nazwy.php method=POST>
  8. <input type=hidden name=MAX_FILE_SIZE value=5000000 />
  9. <input name=plik type=file />
  10. <input type=submit value=Wyslij plik />
  11. </form><br><br><a href=tego tez nie powiem.php>Panel Administratora</a> ");
  12. }
  13. else
  14. {
  15. if(empty($tagikaput)) {
  16. echo("<center><font size=5>Dlaczego nic nie wpisałes?</font>");
  17.  
  18. }
  19. else
  20. {
  21.  
  22. echo("<center><font size=5>Wpisane przez ciebie hasło <b>$tagikaput</b> jest nieprawidłowe</font>");
  23. }
  24. }
  25. ?>


Nie mam pojęcia jak przesłał te pliki? Przecież do przesłania trzeba.
!*!
1. musisz sprawdzić czy formularz został wysłany
2. nie przypisuj zmiennych supergloblanych do zmiennych
3. sprawdzaj czy dane istnieją, empty to trochę za mało
4. dlaczego nie sprawdzasz typu danych jakie otrzymujesz?
5. gdzie i jak sprawdzasz przesyłane pliki?
6. dlaczego uważasz że aby przesłać cokolwiek do serwera trzeba użyć tego formularza.
materkamil
OK. Widzę że zawaliłem z tymi 6 punktami twoimi. Zaraz to poprawię i dam znów kod, a powiedzcie czy przy wykorzystaniu tych błędów, jakim cudem można dostać się do PA?
!*!
Cytat(materkamil @ 28.04.2012, 15:50:36 ) *
OK. Widzę że zawaliłem z tymi 6 punktami twoimi. Zaraz to poprawię i dam znów kod, a powiedzcie czy przy wykorzystaniu tych błędów, jakim cudem można dostać się do PA?


Jeśli plik jest zewnętrzny, ten od wgrywania pliku i ma błędy, to nie musisz być w PA żeby wysłać cokolwiek. A jak poznać nazwę pliku? hmm zapytaj tego kogoś... możliwe że użyłeś starego mechanizmu wgrywania pliku, i po prostu wystarczyło się do niego odwołać.
materkamil
I własnie problem jest większy. Nie ma "tego kogoś". Jest więcej "tych". "ten ktoś 1" pisze mi teraz ale mówi że nie wysłał plików hauru, a pliki sa więc jest "ten ktoś 2". Do tego ten ktoś 2 i ten ktoś 1 ma całkiem inny charakter i na pewno to całkiem dwie inne osoby.

Ten ktoś 1 mówi że nie pisze z PA, tylko z własnego skryptu, a ten ktoś 2 wysłał mi screena z panelu administratora (tego nowego)
lobopol
1. Masz dziurawy skrypt pozwalający się zalogować do panelu od tak
2. Jak ktoś ci wgrał swój plik na serwer to ma dostęp do praktycznie wszystkich danych na twoim serwerze i może robić co chce
Substr
To ja Ci może trochę naświetle problem, bawiłem się z Twoim starym skryptem i mogę powiedzieć, że:

- nie kodujesz haseł, ktoś patrzy w źródło pliku *.php i juz zna smile.gif
- brak sesji, wystarczy wysłać POSTem informacje do pliku który nazywał się wcześniej w stylu "dodaj.php"
- cały czas prowokujesz, pisząc głupoty smile.gif
- do tego słabe hasła, mam nadzieję, że ten cytat trochę Ci wyjaśni o co mi chodzi smile.gif
Cytat
Hosting został "zhakowany" i jest nowy - niezniszczalny. Hasła będą przesłane jaknajszybciej na PW, a do panelu administracyjnego - jeszcze szybciej. Niestety ale komputery i strony to tylko sprzęt, a jedna wpadka programisty i strona zostaje na zawsze przejęta.

Edit: Hasło na pierwsze wrzucanie dla normalnych userów to: my@#%$my a na panel: as#$%5%^el


Zgadnij skąd to mam? tongue.gif

btw. wydaje mi się, że tych osób piszących było więcej niż 2 smile.gif
materkamil
Cytat
-nie kodujesz haseł, ktoś patrzy w źródło pliku *.php i juz zna


Jak ktoś patrzy? Nie można zobaczyć źródła pliku *.php? Jakim cudem je widzicie?
http://forum.php.pl/index.php?showtopic=54514

Cytat
- brak sesji, wystarczy wysłać POSTem informacje do pliku który nazywał się wcześniej w stylu "dodaj.php"


Skąd macie nazwę pliku? Przecież można ją zobaczyć jedynie w PA do którego nie da się dostać bo jest if, czyli wpisujesz hasło i ok.

Cytat
- cały czas prowokujesz, pisząc głupoty


Wydaje mi się że te zabezpieczenia są nie do przejścia, bez jakiejś "nieczystej" gry np: jeśli ktoś z tych userów, co jest włamywaczem to admin hostingu UGU i wtedy widzi pliki.

Cytat
- do tego słabe hasła, mam nadzieję, że ten cytat trochę Ci wyjaśni o co mi chodzi


Niektórzy nasi użytkownicy mają problem z pisaniem cyfr na klawiaturze, nie wspominając znaków specjalnych

Cytat
Zgadnij skąd to mam


Nie zgadnę? Jakim cudem dostałeś się do działu na forum zablokowanego?
!*!
Cytat(materkamil @ 29.04.2012, 10:24:58 ) *
Jak ktoś patrzy? Nie można zobaczyć źródła pliku *.php? Jakim cudem je widzicie?


Pierwsza wersja "ataku" pozwalała na to, był nieograniczony dostęp do serwera FTP. Poza tym sam pokazałeś Nam źródła, pamiętasz?

Cytat(materkamil @ 29.04.2012, 10:24:58 ) *
Skąd macie nazwę pliku? Przecież można ją zobaczyć jedynie w PA do którego nie da się dostać bo jest if, czyli wpisujesz hasło i ok.


Patrz wyżej, ale skoro to "załatałeś" to nie postarałeś się żeby wgrać pliki i nazwa byłą ta sama lub podobna. Wystarczyło wgrać swój plik który wyświetlał nazwę wszystkich plików, a później sam siebie kasował.

Cytat(materkamil @ 29.04.2012, 10:24:58 ) *
Wydaje mi się że te zabezpieczenia są nie do przejścia, bez jakiejś "nieczystej" gry np: jeśli ktoś z tych userów, co jest włamywaczem to admin hostingu UGU i wtedy widzi pliki.


Głosisz herezje, nie ma zabezpieczeń nie do obejścia, już Ci to pisałem.

Cytat(materkamil @ 29.04.2012, 10:24:58 ) *
Nie zgadnę? Jakim cudem dostałeś się do działu na forum zablokowanego?


Zgadł hasło? biggrin.gif Lub się zarejestrował, pogadał, popraosił itd.
materkamil
1. Ale on napisał o hasłach w źródle skryptu, których nie dawałem!

Cytat
Patrz wyżej, ale skoro to "załatałeś" to nie postarałeś się żeby wgrać pliki i nazwa byłą ta sama lub podobna. Wystarczyło wgrać swój plik który wyświetlał nazwę wszystkich plików, a później sam siebie kasował.


Nie rozumię, nazwy plików pozmieniałem na całkiem inne, a nie da się wgrać swój plik, bo jest to "załatane" poprzez brak przesyłania plików .php i do tego hasło na str. głównej

Cytat
Zgadł hasło? Lub się zarejestrował, pogadał, popraosił itd.


Nie ma mowy. To hakerzy to zgadywacze? Na pewno się nie zarejestrował, nie poprosił bo to też sprawdziłem i dałem hasło userom, którzy byli zarejestrowani dłużej niż miesiąc.

Ale zmienie hasło na dział adminów
!*!
Cytat
To hakerzy to zgadywacze?


W dużej mierze tak. Łatwiej jest zapytać o hasło, niż dłubać przy komputerze, aby je złamać.

Cytat
1. Ale on napisał o hasłach w źródle skryptu, których nie dawałem!

Cytat
Nie rozumię, nazwy plików pozmieniałem na całkiem inne, a nie da się wgrać swój plik, bo jest to "załatane" poprzez brak przesyłania plików .php i do tego hasło na str. głównej


Co z tego że pozmieniałeś, skoro były do odgadnięcia? A przesłanie pliku .php to jak widzisz, nie problem.
lobopol
1. Najprostsza metoda poznania adresów do konkretnych akcji to po prostu metoda prób i błędów, są prościutkie skrypty sprawdzające najpopularniejsze adresy dostępowe takie jak: domena.pl/admin, /_admin, _panel, dodaj, add, pa itp. W taki sposób można dostać bardzo szybko najważniejsze adresy w bardzo wielu systemach. Jeżeli nie ma w nich żadnej metody autoryzacji (z cyklu nie masz w sesji uprawnień to nie wgrasz pliku) albo w zły sposób jest przeprowadzona autoryzacja (np. puszczany redirect bez zatrzymania skryptu gdy brak autoryzacji) to "hakier" już ma dostęp do konta admina
2. Jeżeli ktoś wgrał plik php na serwer i był w stanie go uruchomić to za jego pomocą może:
-odczytać wszystkie pliki php i np. skopiować je sobie aby je podejrzeć
-dostać się do wszystkich zmiennych w serwisie (np. podejrzeć hasło do bazy)
-zaciągnąć bazę danych i z niej pobrać hasło admina bądź podmienić mu hasło i się na jego konto zalogować (choć mając bazę i dostęp do skryptu to jest zbędne)
3. Jak poznać hasło admina gdy nie masz dostępu do wgrywania pliku czy luk pozwalających na najprostszy dostęp:
-bruteforce na najczęstsze hasła typu 12345, qwerty itp.
-zebranie informacji o adminie często hasła są powiązane z osobą np. data urodzin, imię dziewczyny etc.
-jakaś luka xss pozwalająca na kradzież sesji
-atak typu "man in the middle"
-i jeszcze cała masa innych technik


Dalej załóżmy, że ktoś już wcześniej wgrał ci plik php i za jego pomocą zmodyfikował jeden z twoich plików dodają mu opcje pozwalającą na wykonanie evala na danych przesłanych do tego pliku, możliwości są setki
Substr
Na starej stronie po wgraniu shella mogłem zobaczyć źródło każdego pliku. Więc widziałem też hasło do panelu. Potem byłem na nowej stronie, gdzie widziałem, iż ktoś zostawił wiadomość o tym że wystarczyło mu 30 sekund. Ja przypadkiem odwiedziłem Twoje forum, na którym widziałem nieukryty dział administracyjny a w nim temat o hasłach do skryptu. Chciałem go otworzyć, ale był zabezpieczony.. wpisałem hasło jakie miałeś w pierwszym skrypcie do PA i mogłem przeglądać już cały zablokowany dział.

Nie wiem jak inna osoba która zostawiła wiadomość, ale ja wgrać pliku już nie mogłem, nawet zmieniając nagłówki pliku php na jpg. sad.gif
!*!
I jeszcze jedno. Wgranie czegokolwiek na Twój serwer było tak proste jak napisanie
  1. <?php
  2.  
  3. echo 'hello world';
  4.  
  5. ?>


Dlatego nie może być tu mowy o żadnym włamaniu itd. bo po prostu nie było do czego się włamać, wszytko było na tacy. Dlatego bulwersik Niktosia w innym temacie tak mnie teraz bawi biggrin.gif
materkamil
Czyli wypowiedzi "dalej niezabezpieczone" są nie trafne, bo wszystko się łączy z tym 1 skryptem który miał dziurę. Oczywiście hasła już pozmieniane.

Czyli ty wgrałeś tego "hauru". smile.gif Dobra przynajmniej przyda mi się taki skrypt smile.gif
usb2.0
Wykonanie strony: materkamil
to mnie rozwala ; D
sie lepiej nie chwal bo nie ma czym zdaje sie:P
materkamil
Cytat
Wykonanie strony: materkamil
to mnie rozwala ; D
sie lepiej nie chwal bo nie ma czym zdaje sie:P


Chwal? Przypominam, że strona nie obraca się w kręgu informatyków takich jak wy, lecz jedynie zwykłych pasjonatów astronomii, którzy o PHP nie mają zielonego, czerwonego ani niebieskiego pojęcia. Więc: wykonanie strony - materkamil, przechodzi tu z wielkim podziwem
!*!
Pokaż kod, czy teraz zrobiłeś to dobrze.
materkamil
Zmienie nazwy plików i hasła i gotowe. Ten skrypt ogólnie jest dobry, jednak hasła były słabe.
!*!
Cytat(materkamil @ 29.04.2012, 12:01:29 ) *
Zmienie nazwy plików i hasła i gotowe. Ten skrypt ogólnie jest dobry, jednak hasła były słabe.


Nie jest, już Ci pisałem dlaczego.
materkamil
Cytat
Najprostsza metoda poznania adresów do konkretnych akcji to po prostu metoda prób i błędów, są prościutkie skrypty sprawdzające najpopularniejsze adresy dostępowe takie jak: domena.pl/admin, /_admin, _panel, dodaj, add, pa itp.


Możesz podać przykład takiego skryptu?

  1. <?
  2. $haslo = strip_tags($_POST["haslo"]);
  3. if($haslo == "tu jest trudne hasło i nikt go nie odgadnie") {
  4. echo("<center><font size=6 color=blue face=arial>Upload plików forum <a href=http://www.astrouniverse.pl>ASTROUNIVERSE</a></font><br><br><font size=4 color=Navy>Przypominam że na ten serwer ze względów bezpieczeństwa można przesyłać jedynie pliki z rozszerzeniem: jpg oraz gif. Wykonanie strony <b>materkamil</b><br></font>
  5. <br><form enctype=multipart/form-data action=tego niepodam.php method=POST>
  6. <input type=hidden name=MAX_FILE_SIZE value=5000000 />
  7. <input name=plik type=file />
  8. <input type=submit value=Wyslij plik />
  9. </form><br><br><a href=niepodam.php>Panel Administratora</a> ");
  10. }
  11. else
  12. {
  13. if(empty($haslo)) {
  14. echo("<center><font size=5>Dlaczego nic nie wpisałes?</font>");
  15.  
  16. }
  17. else
  18. {
  19.  
  20. echo("<center><font size=5>Wpisane przez ciebie hasło jest nieprawidłowe</font>");
  21. }
  22. }
  23. ?>


Skrypt jest dalej taki sam. Bez if-a nie zrobisz nic. Haseł ani nazw plików nie zgadniesz. Hasła nie są związane z astronomią kompletnie i nie da się tego rozwalić.

A jeśli jest tu coś, co łatwo można złamać - powiedzcie proszę jak, bo ja tu nic nie widzę. Po co sprawdzać treść zmiennej POST jak tagi są wycięte. A nawet jak puści jakiś kod to tu jest if który ładnie wywali mu błąd. Pliku nie da się dodać żadnego php ani w jpg, ani w niczym.

EDit: http://forum.php.pl/top_20.html
tongue.gif
!*!
Cytat(materkamil @ 29.04.2012, 12:19:48 ) *
Skrypt jest dalej taki sam. Bez if-a nie zrobisz nic. Haseł ani nazw plików nie zgadniesz. Hasła nie są związane z astronomią kompletnie i nie da się tego rozwalić.

A jeśli jest tu coś, co łatwo można złamać - powiedzcie proszę jak, bo ja tu nic nie widzę. Po co sprawdzać treść zmiennej POST jak tagi są wycięte. A nawet jak puści jakiś kod to tu jest if który ładnie wywali mu błąd. Pliku nie da się dodać żadnego php ani w jpg, ani w niczym.


Poprzednio też wiele razy mówiłeś że WSZYTKO JEST BEZPIECZNE, a nie było. Na serio myślisz że "złamanie" poprzednich wersji było nie wiadomo czym? Takie coś może wykonać każdy kto zna PHP od pół roku i to z palcem w nosie. Myślisz ze wycięcie tagów przed czymś Cie broni? Jakie to ma w ogóle znaczenie odnośnie hasła, w dodatku które jest jawnie przesyłane.

Nikt nie poświęci swojego czasu na obejście tego co przedstawiłeś, bo nie dostanie za to pieniędzy wink.gif chyba że dla własnej satysfakcji.

W skrypcie wyżej NICZEGO nie sprawdzasz. Jeden if == string?

materkamil
A mógłbyś mi powiedzieć dlaczego i po co sprawdzać coś?
Co mi daje sprawdzanie? Przecież jak ktoś wpisze błędne dane to wyświetli mu się błąd
!*!
A po co Ci zamek w drzwiach, skoro służą do otwierania.
materkamil
Drzwi można kopnąć z użyciem jakiegoś ciężkiego czegoś i łamią się na pół. Serwer nie.

No więc czy możesz odpowiedzieć mi na to pytanie?
!*!
Cytat(materkamil @ 29.04.2012, 12:35:50 ) *
Drzwi można kopnąć z użyciem jakiegoś ciężkiego czegoś i łamią się na pół. Serwer nie.


A chcesz się założyć?

Odpowiedziałem Ci już nie raz.
- skrypt Twój nie jest w żaden sposób zabezpieczony,
- hasło jest jawne,
- wycinasz tagi nie wiadomo po co.
- hasło jest stringiem, słowem czy czymś? A wiesz w ogóle jak hasła powinny być budowane i sprawdzane? Po coś wymyślono hasze, md5, sha1
- gdzie sprawdzasz czy formularz został wysłany?

W takiej formie jaką przedstawiasz, mogę ze swojego komputera czy serwera przesyłać tysiące odwołań które za każdym razem sprawdzą z tablicy słów jakie posiadam czy nie pasują do Twojego "hasła". < w dużym uproszczeniu.
materkamil
Cytat
W takiej formie jaką przedstawiasz, mogę ze swojego komputera czy serwera przesyłać tysiące odwołań które za każdym razem sprawdzą z tablicy słów jakie posiadam czy nie pasują do Twojego "hasła". < w dużym uproszczeniu.


Aaa, czyli chodzi o taki typ ataku. Sprawdzanie różnych kombinacji. Więc muszę w sprawdzaniu hasła, sprawdzać czy formularz do przesyłania (na str głównej) był wysłany aby odbierać hasła jedynie z tego formularza a nie z innych które prześlą postem dane do mojego skryptu tak?

A o co chodzi z zabezpieczeniem hasła? Możesz podać przykład bo nie rozumię o co chodzi. Jeśli wpiszemy (nie pamiętam dobrze tej funkcji i nie wiem czy to poprawne)

base64_decode("dsfgdfgdsf");

O to chodzi? Przecież wpisuję hasło do dowolnego dekodera i już go mam
usb2.0
a ja zapytam, tylko czy to haslo to wymyslony przez Ciebie string czy trzymasz w bazie zakodowane jakkolwiek?
materkamil
Zwykły najprostszy string trzymany w skrypcie bez żadnego kodowania w postaci:

<?
if (haslo = string) {
echo("formularz przesyłania plików");
}
?>
usb2.0
o chopie
;d

polecam spojrzec na np jakis framework czy cos, jak to sie robi i jak kolega wyzej pisal poczytaj o kodowaniu sha1 np
redeemer
Cytat(materkamil @ 29.04.2012, 12:45:03 ) *
...
A o co chodzi z zabezpieczeniem hasła? Możesz podać przykład bo nie rozumię o co chodzi. Jeśli wpiszemy (nie pamiętam dobrze tej funkcji i nie wiem czy to poprawne)

base64_decode("dsfgdfgdsf");

O to chodzi? Przecież wpisuję hasło do dowolnego dekodera i już go mam

!*! już Ci napisał o md5, sh1 itp. Są to funkcje jednostronne (bez możliwości odwrócenia)
!*!
materkamil - zacznij od jakiegoś kursu PHP i google odnośnie bepziecznego hasła.

  1. sha1('haslo'); // zwróci ciąg znaków i to już jest lepsze od tego co masz
  2. sha1('haslo'.'sól'); // posolone hasło tzn ze do hasła dodajesz ciąg znaków które tylko Ty znasz np. stałą w php


Z mojej strony to tyle. Dalsza dyskusja jest bez celowa, brakuje Ci podstaw co już niejednokrotnie zostało potwierdzone w innych tematach. Nie odróżniasz kodowania hasła od hashowania i nie wiesz w ogóle od czego te funkcje są, oraz jak powinny być użyte.
greycoffey
Ijeee, o bezpieczeństwo pyta sam nauczyciel bezpiecznego i prostego programowania.
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.