Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zabezpieczenie skryptu - sHACKUJ MÓJ SKRYPT!
Forum PHP.pl > Forum > PHP
firex
jako, że nie mogę zabezpieczać danych odbieranych z formularza w sposób "normalny" tj. funkcjami typu htmlspecialchars. Moje pytanie brzmi: Jakie muszę znaczniki zabezpieczać oprócz <script....>....</script> oraz <? ...... ?>
questionmark.gif
qqrq
Wytłumacz dokładnie o co ci chodzi. Co to znaczy "zabezpieczać" znaczniki?
rolnix
Chcesz wykopać wszystkie tagi poza <script> i <? ?>? Ale jak chcesz wykopać <?, skoro są one abstrakcyjne, tzn. php ich nie widzi?
firex
Cytat
Chcesz wykopać wszystkie tagi poza <script> i <? ?>?
odwrotnie. Robię skrypt do generowania formularzy. Przykładowo wpiszę w specjalne pole {memo=super} i utworzy się <textarea name="super"></textarea> (w podglądzie). ale oprócz specjalnych znaczników, zdefiniowanych przeze mnie chcę dać też możliwość używania HTMLa.

Moim pytaniem jest jakie znaczniki HTMLa powinienem zablokować (usuwać), inaczej mówiąc jakie znaczniki są stwarzają potencjalne zagrożenie dla strony?
bełdzio
blokada samych znaczników Ci nic nie da, JS można wykonać z każdym znacznikiem np korzystając z onload etc
firex
ok, o to mi właśnie chodziło zadając to pytanie.

Czyli na razie na liście blokowanych jest <script.....>....</script> oraz <?......?> oraz zdarzenia typu onload=..... Coś jeszcze?
jang
http://dev.ellislab.com/svn/CodeIgniter/tr...aries/Input.php

Zobacz sobie -> function xss_clean($str)
marcio
a nie mozna zrobci funkcje filtrujaca znaki za pomoca eregi lub preg_match()
firex
Kod
  $zle=array(
             '/<script.*>.*<\/script>/is',
             '/<\?.*\?>/s',
             '/onAbort=.*/i',
             '/onBlur=.*/i',
             '/onChange=.*/i',
             '/onClick=.*/i',
             '/onDblClick=.*/i',
             '/onDragDrop=.*/i',
             '/onError=.*/i',
             '/onFocus=.*/i',
             '/onKeyDown=.*/i',
             '/onKeyPress=.*/i',
             '/onKeyUp=.*/i',
             '/onLoad=.*/i',
             '/onMouseDown=.*/i',
             '/onMouseOut=.*/i',
             '/onMouseOver=.*/i',
             '/onMouseUp=.*/i',
             '/onMove=.*/i',
             '/onReset=.*/i',
             '/onResize=.*/i',
             '/onSelect=.*/i',
             '/onSubmit=.*/i',
             '/onUnload=.*/i'
             );

  $tekst=preg_replace($zle, '', $dane);

wykombinowałem coś takiego. mam nadzieję, że się przyda komuś winksmiley.jpg

i po / oznacza, że wielkość znaków w porównywanym ciągu nie ma znaczenia
s oznacza, że porównywanie będzie wieloliniowe
marcio
no widzisz wcale takie trudne to to nie bylo prawie to samo by wyszlo za pomoca eregi()
firex
trudne nie, ale potrzebowałem dowiedzieć się jakie znaczniki mogą by niebezpieczne dla mojej strony...
marcio
a czego sie tu dowiadywac znaczniki script i wszystkie zdarzenia js biggrin.gif
firex
przez znacznik img też można się włamać, ale to już wyższa technologia <roftl>
marcio
tak zapomnialem atak sie nazywa CSRF czy jakos tak
rolnix
@jang: jestem ci wdzięczny do końca życia za ten link winksmiley.jpg
jang
Cała przyjemność po mojej stronie smile.gif
firex
proszę o przetestowanie i próbę zhackowania (i opisanie tutaj w jaki sposób zostało zhackowane)...

http://firex.ugu.pl/
nospor
wpisalem sobie:
Kod
<a href="javascript:alert('No i cie shakowalem');">nic hakującego</a>

Zgadnij jaki byl efekt winksmiley.jpg
phpion
A ja Ci "wyczyściłem" okno winksmiley.jpg
firex
ok, dodałem obcinanie
Kod
javascript:.*
oraz
style=".*"

próbujcie dalej winksmiley.jpg
Ertai
Nie chcialo mi sie wysilac wiec skopiowalem powyzszy fragment "kodu" i zmienilem jedna literke smile.gif i zgadnij co smile.gif

<a href="java script:alert('No i cie shakowalem');">nic hakującego</a>

EDIT: Jako, ze uparcie forum zamienia mi javascriPt na javascript to po prostu wystarczy zmienic jedna literke w "komendach js" na duza i juz mamy dzialajace js.
firex
ten kod nic nie robi ze stroną - nie hackuje.
Ertai
To co to jest hacking tej strony? Ja wkleilem ten kod, zmienilem literke z malego p na duze P i wyswietlilo mi link z dzialajacym java scriptem... to nie jest hack?
firex
poprawione, nie przeczytałem wcześniej twojego edita...
phpion
Cytat(firex @ 7.11.2007, 14:59:04 ) *
próbujcie dalej winksmiley.jpg

Wedle życzenia!
  1. <style type="text/css">* {display: none}</style>

smile.gif
firex
następny prosze... winksmiley.jpg
Tibod
no to może tak:

  1. <a href="vb script:msgbox(szit)">123</a>


tongue.gif

EDIT: Działa tylko pod IE. Pod Firefox-em jest ok.
bełdzio
<p onclick = "alert(1)">fds</p>

<IMG SRC=javascript:alert('XSS')>

<IMG SRC="jav ascript:alert('XSS');">

<IMG SRC="jav&#x09;ascript:alert('XSS');">


i inne :-)
phpion
Cytat(firex @ 7.11.2007, 16:24:39 ) *
następny prosze... winksmiley.jpg

Jeśli sam nie wiesz w jaki sposób można obejść Twoje "zabezpieczenia" to może wróc do roli "grafika" w innyportal.cba bo na razie to poprawiasz tylko to, co zostało zgłoszone. A może nie wszystko zostało zgłoszone?...

EDIT:
już przestaje mnie bawić odwalanie roli testera więc na koniec coś specjalnego, taka wisieńka na torciku:
  1. <div style = "background-color: #FFF; left: 0px; top: 0px; position: absolute; width: 100%; height: 100%;" onmouseover = "document.location.href='http://gejowo.pl';"></div>
firex
okrutna ta wisieńka...
Blodo
http://namb.la/popular/tech.html

Fajny artykul o tym jak gosciu wlamal sie na myspace przy uzyciu JS, ofcoz z pomoca IE i jego nieprawdopodobnej ilosci sposobow dodania JS do tagow. Mozna sie wiele nauczyc jesli chodzi o obrone przed takim czyms.
firex
dzięki Blodo, przyda się.

Właściwie to obiegliśmy od tematu, bo mnie interesuje tylko zabezpieczenie serwisu, a to, że ktoś mi wyczyści stronę to mnie nie obchodzi, bo każdy użytkownik będzie "dostawał" swoje id, które będzie przekazane w GET do skryptu i zapisze wygenerowany formularz do danego pliku podglądu. Więc np. wyświetlając 1000 razy alert'a wyświetlając wielką białą warstwę... sam sobie szkodzi, bo tylko on będzie widział daną stronę podglądu.
starach
Zdaje się że w ogóle nie rozumiesz istoty przykładów z użyciem alert-a.
Ludzie tutaj pokazują ci że można użyć JavaScript-u. Funkcja alert() sama w sobie jest w zasadzie nieszkodliwa.
Pogłówkuj jaki inny kod możesz wstawić ZAMIAST funkcji alert.
Zresztą zdaje się że phpion już naświetlił wystarczająco sprawę swoim przykładem,
a to nie najgorsze co może spotkać osobę która wejdzie na taką stronę.

Najbezpieczniejsza metoda to wywalać wszystkie tagi i używać BBCODE.
Ewentualnie możesz najpierw pobierać tagi na które zezwalasz, a usuwać pozostałe preg_match_all() i preg_replace().
cicik
Nie żebym marudny był ale po to chyba właśnie wymyślono bbcode żeby się chronić.
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.