Altoro Mutual: oczywiste oczywistości (na początek)

Na początek założenie – ten wpis nie będzie powstawał dłużej niż 30 minut. O czym będzie – o oczywistych oczywistościach, które rzucają się w oczy w Altoro Mutual. Zacznijmy od części dla użytkownika nieuwierzytelnionego.

Bardzo typowy błąd – zapytanie wpisane przez użytkownika wypisywane jest na stronie bez żadnego encodingu, w końcu użytkownicy szukają tylko “prawdziwych” słów, a nie jakichś “krzaczków”, prawda? No niestety, nie zawsze...

Jak to wygląda w przypadku Altoro? Poszukajmy mojego ulubionego payloadu, czyli pmq'”<>. Rezultat? Zgodny z oczekiwaniami:

Search Results

No results were found for the query:

pmq'”<>

Zwracam uwagę na nazwę kontrolki użytej w tym wypadku. W atrybucie id mamy lbl, czyli prawdopodobnie kontrolka Label. Przypominam: Niekonsekwencje w ASP.NET.

Po drugie: default.aspx?content=personal_loans.htm

Przy takiej konstrukcji URLa bardzo często można czytać dowolne pliki z serwera. Czy tak będzie i tym razem? Prosta próba dla URLa: http://demo.testfire.net/default.aspx?content=XXXpersonal_loans.htm

An Error Has Occurred

Summary:

Could not find file 'C:\downloads\AltoroMutualv6\website\static\XXXpersonalloans.htm'.

To spróbujmy przeczytać plik default.aspx (pełen komunikat błędu dokładnie mówi, gdzie plik leży): http://demo.testfire.net/default.aspx?content=../default.aspx, odpowiedź:

Error! File must be of type TXT or HTM

No to nie pozostaje nic innego jak użyć NULL byte: http://demo.testfire.net/default.aspx?content=../default.aspx%2500.htm

<%25@ Page Language=“C#” Inherits=“Altoro.Default” CodeFile=“default.aspx.cs” MasterPageFile=”~/default.master” Title=“Altoro Mutual” %25>

Działa, może się przyda później, na razie zostawmy to...

I na koniec SQLi

Co można zepsuć w formatce logowania? Tak, oczywiście, może tam być SQLi. W praktyce to się prawie nie zdarza, sam trafiłem SQLi w formatce logowania raz lub dwa razy, no ale to jest aplikacja przykładowa, więc można jej wybaczyć. To co, “ciapek”?

An Error Has Occurred

Summary:

Syntax error (missing operator) in query expression 'username = ''a' AND password = 'a''.

Error Message:

System.Data.OleDb.OleDbException: Syntax error (missing operator) in query expression 'username = ''a' AND password = 'a''.

Aha, czyli przy okazji wiemy, że hasła przechowywane są w plaintext. Nie to, by było nam to potrzebne, prawda?

Oryginał tego wpisu dostępny jest pod adresem Altoro Mutual: oczywiste oczywistości (na początek)

Autor: Paweł Goleń