2015-10-07 19 views
5

Po prostu znalazłem kilka niepokojących kodów jednocześnie w klasycznym kodzie ASP, a także w PHP.Bezpieczeństwo: co może być nie tak, gdy użytkownicy mogą wymieniać zmienne sesji?

Klasyczne ASP:

Dim id 
id = request.form("id") 

Session(id) = id 

PHP

$_SESSION[$_GET["id"]] = $_GET["id"]; 

Więc, co może pójść źle tutaj? Uwaga, oczywiście usunę je i wykorzystam lepszy przepływ pracy.

EDYCJA: Oczywistymi problemami mogą być SQLi, XSS, nadpisywanie istniejących i niezbędnych zmiennych sesji. Tak naprawdę nie wiem, jakie są wewnętrzne działania tego języka w obsłudze zmiennych sesyjnych.

EDYCJA 2: Nie martwię się wartościami zmiennej sesji tak bardzo, jak jestem zainteresowana ich nazwaniem. Ciekawe, czy jest coś szalonego, co można zrobić z dowolnymi nazwami zmiennych.

+2

Zależy co robisz następnie z '$ _SESSION [$ _ GET [ "id"]]' .... jeśli kiedykolwiek go echo i zawiera coś w stylu '' script src = "http://malevolent.com/nasty/malware.js"> '.... Pozostawiam resztę twojej wyobraźni –

+0

Treść sesji może z pewnością zostać wykorzystana do XSS, SQLi i innych nieprzyjemnych exploitów do dezynfekcji danych wejściowych. Jestem bardziej ciekawy, co można zrobić z możliwością nazywania własnych zmiennych w czyimś kodzie. – TheMonarch

Odpowiedz

3

Potrafię ustawić dowolną liczbę zmiennych sesji - np. A1 a2 a3 a4 i tak dalej. Jego rodzaj wektora ataku, prawda? Atak pamięć ..

Jeśli kiedykolwiek użyć tych zmiennych sesji w MySQL Query - Klasyczny przypadek SQL injection (nie jest dużym zagrożeniem w tym przypadku tak długo, jak masz odpowiednie zabezpieczenia)

jak ktoś wymienionych w komentarzu , jeśli kiedykolwiek powtarzasz zmienną sesji, istnieje możliwość XSS (Cross site injection).

Jeśli używasz go w atakach typu CSRF i wielu rzeczy.

Dlaczego użyć $ _SESSION [$ GET [ 'var']], gdy istnieje milion innych rzeczy możliwe :-)

Powiązane problemy