Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [WWW] Strona o bezpieczeństwie komputerowym
Forum PHP.pl > Inne > Oceny
Stron: 1, 2
prowseed
Post #1 w połączeniu z postem #40 wygląda przekomicznie : )

@materkamil
lepszy jest gram dobrej nauki niż kilo byle czego
Nikt Ci nie zabrania się uczyć, ale jak już Ty masz uczyć innych... Wobraź sobie nauczyciela na prawo jazdy, który sam takiego dokumentu nie posiada, więcej- nie wie nawet do końca jak działa skrzynia biegów.

Ciągle coś usprawniasz, ciągle coś poprawiasz, a wystarczy minuta, by namieszać. Widocznie po prostu nie rozumiesz jak to działa.
Niktoś
Cytat
Wymęczyłem się 2 godziny
-dwie godziny to nie męczarnia ,to sport w informatyce-niektórzy siedzą tygodniami ,żeby porządnie zabezpieczyć stronę/ny.Musisz nad tym posiedzieć dłużej.Przed upublicznieniem ,zrób sobie kopie bezpieczeństwa tego co zrobiłeś, aby te BUM mniej bolało.
materkamil
No więc tak:
  1. <?
  2. $plik_tmp = $_FILES['plik']['tmp_name']; // Tymczasowa nazwa uploadowanego pliku
  3. $plik_nazwa = $_FILES['plik']['name']; // Orginalna nazwa pliku uploadowanego przez uzytkownika
  4. $plik_rozmiar = $_FILES['plik']['size']; // Rozmiar pliku w Byte'ach
  5. $rozmiar = $plik_rozmiar / 1000; // A tu zrobimy z nich kB
  6. $is_obrazek = explode('.', $plik_nazwa); // dzielimy nazwe uploadowanego pliku na tablice
  7. $is_obrazek[1] = strtolower($is_obrazek[1]); // zmniejszamy nazwe rozszerzenia
  8.  
  9. if (($is_obrazek[1] == 'jpg')||($is_obrazek[1] == 'jpeg')||($is_obrazek[1] == 'gif')){ // sprawdzamy poprawnosc pliku
  10.  
  11. if(is_uploaded_file($plik_tmp)) { // Jesli plik zostal poprawnie zuploadowany
  12. move_uploaded_file($plik_tmp, "gallery/$plik_nazwa"); // Przenosimy
  13. echo "Plik: $plik_nazwa
  14. został przesłany na serwer!. <br><br>Adres do pliku: <br>http://www.astrouniverse.netii.net/gallery/$plik_nazwa "; // Pokaz dane o pliku
  15. }
  16. } else {
  17. if ($plik_nazwa == NULL) { // Jesli plik jest pusty
  18. return 0;
  19. } else { // Jesli format jest zly
  20. echo 'Niestety ale nie można przesłać tego pliku!';
  21. }
  22. }
  23. ?>


To jest kod tego uploadu. Zabezpieczone jest tak, że przejdą tylko jpg i gif. W moim katalogu znalazłem przesłane pliki: grfa.jpg.php które o dziwo przeszły przez ten skrypt. No więc zdobyto zarządzanie plikami i przez to zmieniono plik index.php. Tylko jakim cudem ten skrypt przepuścił plik ewidentnie php?

Edit: wszystkie kopie są, podejrzewałem że tak się skończy więc bum nie boli tylko cieszy smile.gif
mccd
  1. <?
  2. [...]
  3. $is_obrazek[1] = strtolower($is_obrazek[count($is_obrazek)-1]); // zmniejszamy nazwe rozszerzenia
  4. [...]
  5. ?>

Bierzesz nie 2., ale ostatni element tablicy.
Niktoś
To nie jest rozwiązanie ,a jak plik będzie normalnie nazwany?
  1. <?
  2. $plik_tmp = $_FILES['plik']['tmp_name']; // Tymczasowa nazwa uploadowanego pliku
  3. $plik_nazwa = $_FILES['plik']['name']; // Orginalna nazwa pliku uploadowanego przez uzytkownika
  4. $plik_rozmiar = $_FILES['plik']['size']; // Rozmiar pliku w Byte'ach
  5. $rozmiar = $plik_rozmiar / 1000; // A tu zrobimy z nich kB
  6. $is_obrazek = explode('.', $plik_nazwa); // dzielimy nazwe uploadowanego pliku na tablice
  7. $rozszerzenie="";
  8. foreach($is_obrazek as $extension)
  9. {
  10. $rozszerzenie= strtolower($extension);
  11. }
  12. if (($rozszerzenie== 'jpg')||($rozszerzenie == 'jpeg')||($rozszerzenie == 'gif')){ // sprawdzamy poprawnosc pliku
  13.  
  14. if(is_uploaded_file($plik_tmp)) { // Jesli plik zostal poprawnie zuploadowany
  15. move_uploaded_file($plik_tmp, "gallery/$plik_nazwa"); // Przenosimy
  16. echo "Plik: $plik_nazwa
  17. zosta� przes�any na serwer!. <br><br>Adres do pliku: <br>http://www.astrouniverse.netii.net/gallery/$plik_nazwa "; // Pokaz dane o pliku
  18. }
  19. } else {
  20. if ($plik_nazwa == NULL) { // Jesli plik jest pusty
  21. return 0;
  22. } else { // Jesli format jest zly
  23. echo 'Niestety ale nie mo�na przes�a� tego pliku!';
  24. }
  25. }
  26. ?>

@DOWN Prowseeda przykład robi to co mój ,tylko znaczenie wydajniejszy.
prowseed
  1. $is_obrazek = strtolower(end(explode('.', $plik_nazwa)));


oglądał ktoś te filmiki?
Polecam pierwszy smile.gif
Wiesz @materkamil - wydajem i się, że jeszcze troche musisz nad tym php posiedzieć. Może nagrywaj to jako dziennik progress'u?

//EDIT
@down
No nie? Z głosu taki sympatyczny, aż szkoda jeździć...

//EDIT2
http://www.scanit.be/uploads/php-file-upload.pdf
https://www.owasp.org/index.php/Unrestricted_File_Upload
http://www.acunetix.com/websitesecurity/up...orms-threat.htm
http://www.gnucitizen.org/blog/cross-site-...upload-attacks/

na dobry poczatek : )
xxdrago
http://php.webtutor.pl/pl/2011/04/11/code-...w-obrazku-jpeg/ - poczytaj o tym jeszcze biggrin.gif (tak dla bezpieczeństwa)...

Biedny chłopak ;/ faktycznie bardzo ciekawy film.
mccd
Cytat(Niktoś @ 26.04.2012, 19:30:35 ) *
To nie jest rozwiązanie ,a jak plik będzie normalnie nazwany?

@DOWN Prowseeda przykład robi to co mój ,tylko znaczenie wydajniejszy.

  1. $is_obrazek = explode('.', $plik_nazwa);
  2. $is_obrazek = strtolower($is_obrazek[count($is_obrazek)-1]);


  1. $is_obrazek = strtolower(end(explode('.', $plik_nazwa)));

To te 2 sposoby nie są równoważne? wstydnis.gif
materkamil
Ale jazda. Zabezpieczyłem przesyłanie danych uploadu a tam dalej strona zdeformowana:
http://astrouniverse.netii.net/
!*!
1. rozszerzenia pliku sprawdza się dzięki pathinfo a nie explode
2. sprawdzaj nazwę pliku, jakie zawiera znaki

to na początek wystarczy. poza tym nie wiem po co na głównej stronie dajesz możliwość wgrywania plików.
materkamil
Na głównej bo to ma być hosting. Ok zabezpiecze przesyłanie, aby nie było znaków ale jakim cudem na stronie głównej jest informacja? takie coś można tylko dodać w PA
!*!
Bo nie zabezpieczyłeś PA.
Niktoś
Cytat
To te 2 sposoby nie są równoważne?

Faktycznie-błąd w wyliczeniach. tongue.gif
materkamil
Na FTP pojawiają mi się pliki - coś takiego: plik'/'<script>.jpg
Jednak czy nazwa pliku coś daje? Można racja włożyć w obrazek kod PHP, ale nazwa? O czym to świadczy?
!*!
Cytat
Ważna informacja: Teraz już skrypt jest napisany i zabezpieczony inaczej, więc nie dostaniesz się do niego w życiu
Ważna informacja: NIGDY NIE MOW NIGDY biggrin.gif
Ważna informacja: PHP.pl smile.gif
Ważna informacja: by !*!
Ważna informacja: Dobra widzę że dodajesz pliki z cudzysłowiami. Dlatego też zaraz wprowadzę ograniczenie nazwy jedynie do polskich znaków

laugh.gif psotniki jedne

Cytat
Na FTP pojawiają mi się pliki - coś takiego: plik'/'<script>.jpg
Jednak czy nazwa pliku coś daje? Można racja włożyć w obrazek kod PHP, ale nazwa? O czym to świadczy?


Zła nazwa pliku to zła nazwa pliku. Widziałeś kiedyś u siebie na dysku plik z krzakami? Jak, myślisz dlaczego takich się nie tworzy.
materkamil
Tak, widziałem. Nie można używać >, < ale można używać ' i właśnie te. Teraz wymyśliłem nową metodę zabezpieczeń. I to skomplikowaną. Opisze ci ją na PW
!*!
Pisz w tym temacie, więcej osób się wypowie.
Poza tym skupiłeś się wyłącznie na wygrywaniu plików, wydaje mi się że niepotrzebnie tzn. nie zapominaj o panelu bo to w nim może być problem i zaraz ktoś Ci coś tam może napisać.
materkamil
Aha i jeszcze jedno pytanie:
Mam problem z kasowaniem plików FTP tych, co przesłane zostały. To screen:
http://s6.ifotos.pl/img/Beztytuup_reehnxh.png

Co to może być. Je nie można skasować

Edit: PA jest 100% bezpieczny. Przynajmniej dziś, gdy to zabezpieczyłem go całkiem inną metodą która wg. mnie bez znania hasła PA lub dostępu do FTP jest nie do przejścia. A wcześniej został mi przesłany "hauru.php" czyli klient ftp na stronę
Niktoś
Cytat
Co to może być. Je nie można skasować

Sprawdź uprawnienia tych ,plików czy nie mają czasami flagi "tylko do odczytu".
Może z następnym problemem załóż nowy wątek w odpowiednim dziale.
materkamil
I tu drugi problem. Nazwy plików są tak dziwne, że nie da się ustawić uprawnień. Przy każdej próbie pisze:

553 Prohibited file name: pap<script>alert(\'zxc\')a.php.jpg

I do tego znów jest info na stronie głównej.

PS: Zaraz dam skrypt strony

Skrypt logowania wygląda tak:
Kod
<?

if($_POST["haslo"] == "tego nie podam") {
    
    include("tutajjestadrespaneluadmina");
    setcookie("tego nie podam","tego tez nie", time()+3600);
}
else
{
}
?>

<html>
<form method=post>
<input type=text name=haslo>
<input type=submit>
</form>
</html>


Jak mamy już cookiesa idziemy do PA

skrypt PA
Kod
<?
if(!isset($_COOKIE["klucz"])) {
echo("<script src=index.js></script>");
}
?>

Czyli jak ktoś nie wpisze hasła, nie ma ciasteczka, a bez ciasteczka go wyrzuca. I potem jest obsługa plików - dodawanie newsów:

Kod
<form method="post" action="tamgdziesiedoda"><input name="dodaj" type="text"><input type="submit"></form>


I "tamgdziesiedoda":

Kod
<?
$trescc = $_POST["dodaj"];
$tresccx = strip_tags($trescc);
$tresc = "<br><center><b><font size=6 color=red>Ważna informacja: $tresccx</font></b>";

$plik = "tujestenplikcododaje.txt";

$open = fopen($plik,"a");
fputs($open,$tresc);
fclose($open);
?>
!*!
Czyli na oko trzeba wysłać cookie z czymkolwiek i już mam dostęp... nie no weź to jakoś zabezpiecz bardziej bo wstyd że strona o bezpieczeństwie, jest od kilku dni "hackowana".
materkamil
Nie bo cookie wprowadziłem dopiero dziś. Wczoraj było to zrobione inaczej i znów przeszło. A do tego jak agresor mógł wiedzieć że strona opiera się na ciasteczkach, jeśli ciasteczko zostało wysyłane tylko po poprawnym warunku?

Edit: Niektóre dane zamazałem "tego nie podam" bo wg. mnie nie są potrzebne a mogą ułatwić "atak"
!*!
Cytat(materkamil @ 27.04.2012, 13:21:02 ) *
Nie bo cookie wprowadziłem dopiero dziś. Wczoraj było to zrobione inaczej i znów przeszło. A do tego jak agresor mógł wiedzieć że strona opiera się na ciasteczkach, jeśli ciasteczko zostało wysyłane tylko po poprawnym warunku?


Nie musi, wystarczą podstawowe dane o serwerze, zresztą... nie chce mi się tego tłumaczyć. Ściągnij jakiś gotowiec, będzie to bezpieczniejsze niż to co sam piszesz.
materkamil
Spróbuję jeszcze raz to zabezpieczyć inaczej i ciekawe i wtedy nie powinno się dać tego przejąć
Niktoś
Cytat
Nie bo cookie wprowadziłem dopiero dziś. Wczoraj było to zrobione inaczej i znów przeszło. A do tego jak agresor mógł wiedzieć że strona opiera się na ciasteczkach, jeśli ciasteczko zostało wysyłane tylko po poprawnym warunku?

Jeśli już chcesz używać coockies to hashuj w nim dane.Agresor będzie wiedział ,że twoja strona generuje cookies,można to w łatwy sposób sprawdzić w przeglądarce.Cookies to zwykły plik tekstowy generowany po stronie klenta.Ktoś może w nim napisać złośliwy kod np. w js.Ty na tomiast sprawdzasz istnienie cookies ,ale co w nim jest już nie.
Może faktycznie poczytaj jakieś tutoriale.
materkamil
No ale wpisując java script:alert ... nie pokaże mu cookiesa, bo on zostanie wysłany dopiero po wpisaniu hasła:

if ($haslo = "poprawne") {
wyślij cokies
}
else
{
nic nie wyślij
}

Niktoś
Zapraszam,do lektury -google is ur master-poszukaj.Nie pomyślałeś że ktoś może sam sobie cookies stworzyć i nie musi ono koniecznie pochodzić z twojego skryptu?
materkamil
Ważna informacja: Wyleciał i już nie wróci. Do widzenia w piekle. Teraz już nie ma możliwości żebyś coś zrobił smile.gif
Ważna informacja: To zabezpieczenie co zaprogramowałem jest nie do obejścia. Nigdy już nie napiszesz tu nic
Ważna informacja: spoko smile.gif
Ważna informacja: Jakim cudem piszesz? Czyżby własny skrypt z obsługą tego pliku tekstowego?
Ważna informacja: mhm ukryty w jednym z plikow z grafika
Ważna informacja: i jeszcze jeden plik z grafika ktory pozwala na podglad twoich plikow php smile.gif
Ważna informacja: W takim razie jakim cudem? Przecież wysłałeś mi pliki *jpg ohmy.gif

Co wy na to?
phpion
@materkamil:
Zauważ, że piszesz w dziale "Oceny". Jeśli chcesz się doedukować to załóż nowy wątek w dziale "Przedszkole".

Uwaga do wszystkich:
Proszę zakończyć rozmowy na temat sposobów zabezpieczeń. Do takich celów są inne działy. Tutaj proszę skupić się tylko i wyłącznie na ocenie samej strony.
greycoffey
"PHP to człowiek."
"funkcja echo składa się zawsze z echo, nawiasów i średnika" - a ja myślałem, że echo to struktura językowa, nawiasy śa niepotrzebne oraz funkcja się z nich nie składa, a średnik oddziela procedury - widać głupi byłem wink.gif
"korzystamy z tej oto przeglądarki" - woooow!
"zauważmy że pomiędzy dwoamia takimi znakamiii...."
"możemy tutaj cuda robić", "możemy zarządzać wszystkim!" (o przesyłaniu tagów html przez $_GET)
"atak XSS który wykorzystuje błąd w filtrowaniu zmiennej" - eeee... ale nie ma żadnego filtrowania, to jaki błąd ma wykorzystywać?
Niktoś
OMG,ktoś się dobrze bawi,ale czy Ten ktoś wie ,że manipulowanie w kodzie czyjegoś autorstwa jest niezgodne z prawem?
Czy ten ktoś wie ,że każdy request,żądanie zapisywany jest w logach Apache?Mam nadzieje ,że jechałeś przez proxy,bo jak autor posprawdza logi i Ciebie chytnie ,to będziesz mógł mieć nie lada problemy.
Poza tym dostał lekcje ,więc pytanie po co jedziesz mu po stronce?Daj se siana(tutaj zwrot do tego kogoś).

A do autora ,wykasuj wszystkie linki z tej strony i zmień ponownie adres i nazwę hosta i sam testuj-a jak będziesz uważał ,że faktycznie jest dobre to dopiero poproś o sprawdzenie pod względem bezpieczeństwa w dziale oceny innych forumowiczów.
!*!
Cytat(Niktoś @ 27.04.2012, 21:12:22 ) *
OMG,ktoś się dobrze bawi,ale czy Ten ktoś wie ,że manipulowanie w kodzie czyjegoś autorstwa jest niezgodne z prawem?
Czy ten ktoś wie ,że każdy request,żądanie zapisywany jest w logach Apache?Mam nadzieje ,że jechałeś przez proxy,bo jak autor posprawdza logi i Ciebie chytnie ,to będziesz mógł mieć nie lada problemy.
Poza tym dostał lekcje ,więc pytanie po co jedziesz mu po stronce?Daj se siana(tutaj zwrot do tego kogoś).


Przesadzasz, nikt nigdzie nie manipuluje, to jest wykorzystywanie danych/możliwości ogólnie dostępnych,autor witryny nie zrobił nic żeby ją zabezpieczyć.

Logi co wykażą? kilka adresów z tego forum + wysyłanie formularza? łał po prostu łał biggrin.gif
Niktoś
Cytat
Przesadzasz, nikt nigdzie nie manipuluje, to jest wykorzystywanie danych/możliwości ogólnie dostępnych,autor witryny nie zrobił nic żeby ją zabezpieczyć.

Wstrzyknięcie jakiegokolwiek kodu,do źródła strony jest manipulacją.A tam wstrzykniętą <h4> lub <span> z treścią.
Cytat
Logi co wykażą? kilka adresów z tego forum + wysyłanie formularza? łał po prostu łał

Ip komputera,z którego nadszedł request-to nie wystarczy?-nie wiem jak dokładnie wyglądają logi Apache,w IIS jest wszystko fajnie rozpisane, (IP/domena/host) nawet jakie dane ktoś wysłał.No chyba ,że ktoś jechał przez proxy tak jak wspomnialem.
!*!
Jakie wstrzyknięto? Jak to jest opcja panelu do którego ktoś miał hasło. Logi serwera głównie są od tego żeby pokazać dane z ip, hostem itp. tylko nie widzę tu zastosowania. to tak jakbyś miał pretensje że widzisz tło strony i wiesz jaki to plik bo zajrzałeś w źródło.
Fifi209
Zauważ, że poza dodaniem tekstu strona nie ucierpiała, a sam autor tematu powinien być wdzięczny za możliwość nauki smile.gif
Autor wydaje się być dociekliwy, testuje zabezpieczenia i daje testować. Zrobił backup, nakręcił filmik o błędzie w uploadzie.

Logi w Apache pokazują typ GET/POST, IP, jaki url został wywołany i parametry, oczywiście czas.
Niktoś
Cytat
Zauważ, że poza dodaniem tekstu strona nie ucierpiała, a sam autor tematu powinien być wdzięczny za możliwość nauki smile.gif
Autor wydaje się być dociekliwy, testuje zabezpieczenia i daje testować. Zrobił backup, nakręcił filmik o błędzie w uploadzie.


Najlepiej ,niech się autor wypowie czy mu ta zabawa odpowiada.Poprzednią stronę tak mu ktoś zjechał,że musiał adres hosta zmienić,nie wiem może ktoś wciąż mu w tej chwili coś tam skrobie.
vieri_pl
Autor troszkę sam sobie szkodzi pisząc takie rzeczy na starej stronie... widzę, że "NIEZŁAMALNA" nowa strona już wita nas pozdrowieniami z php.pl wink.gif
Niktoś
Wiesz chcialbym, żeby mi tak zjechali strone.Kiedyś zamieszczałem tutaj serwis ,ale jakoś nikt nie mógł,a wręcz błagałem o to-gadałem zniszczcie mi strone i nic.On jest nowicjuszem ,uczy się,po co mu niszczyć kolejną stronę.Niech ten napis,będzie ostatnim krokiem ,a nie żeby kolejny raz ktoś mu zniszczył stronkę.
Fifi209
Cytat(Niktoś @ 27.04.2012, 21:55:13 ) *
Najlepiej ,niech się autor wypowie czy mu ta zabawa odpowiada



Cytat(Niktoś @ 27.04.2012, 22:41:13 ) *
.Niech ten napis,będzie ostatnim krokiem ,a nie żeby kolejny raz ktoś mu zniszczył stronkę.


Zdecyduj się.
Niktoś
Jutro poprawie część kodu i rzucę podobnym hasełkiem i udostępnie.Ciekawe czy ktoś tak będzie mądry.
Cytat
Zdecyduj się.

Odpowiadałem tylko na poprzedni post,już się nie udzielam.
!*!
Próżność Was zjada.
materkamil
Oczywiście na tych "atakach" strasznie się uczę i jestem z tego zadowolony. Przynajmniej mam chęć do wymyślania kolejnych zabezpieczeń smile.gif
Do tego kogoś: spoko! W logach nie zamierzam grzebać, namierzać itp. Możecie kombinować, to jest jedynie serwer testowy. Dlatego spoko, nie bój się. FBI nie przyjdzie do ciebie autorze "włamań" Lkingsmiley.png Jedynie kiedyś możesz nie dać rady przejść, moich zabezpieczeń i tyle. A ja nie odpuszczę. Tylko ciekawi mnie gdzie tkwi największy błąd. Już założyłem inny wątek

Edit: Napisy są dodawane i kasowane w PA więc spokojnie, nie niszczy żadnego indexu, a jedynie dodaje dane do pliku
mls
Cytat(materkamil @ 28.04.2012, 15:34:18 ) *
Jedynie kiedyś możesz nie dać rady przejść, moich zabezpieczeń i tyle. A ja nie odpuszczę.


No, to dłuuugie dzieciństwo Cię czeka... Skoro zakładasz, że kiedyś uda Ci się zrobić zabezpieczenia nie do złamania... Nie odpuszczaj, to oczywiste, abyś zajął się zabezpieczeniem serwisu a nie pisaniem na forum, dzięki czemu mniej tu będzie takich wątków wink.gif
Valik
Równie dobrze mogłeś zrobić bloga i ściągnąć darmową templatkę z neta... Wyglądałoby 100x lepiej, a nie jak by robił to ktoś z gimnazjum...
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.