S dotazi nás neváhejte kontaktovat: (420) 777 849 161 - Email info@vyroba-webu.cz

C# Example Application

Dnes si zkusíme otestovat opět nějakou menší aplikaci vytvořenou přímo jako příklad bezpečnostních zranitelností. Jedná se o aplikaci v C#, kterou můžete nalézt zde:

https://www.codeproject.com/Articles/102284/SQL-Injection-and-Cross-Site-Scripting-2

Prohnal jsem aplikaci SAST nástrojem (jako vždy neuvádím kterým, nechávám na fantazii čtenářů). Níže je přehled nálezů z krátkým popisem jak by mělo/mohlo vypadat vyhodnocení takových nálezů:

SQL Injection

V souboru AddComment.aspx.cs

Popis chyby:

Aplikace SQL sestavuje query z parametru ViewState[“StrID”].

Doporučení:

Nesestavovat sql query dynamicky a použít druhý argument k ExecuteDataSet, tedy parameterValues.

 

Heuristic SQL injection

V souboru ListComments.aspx.cs

Popis chyby:

Aplikace spouští query GetComments sestavené mimo jiné z neošetřeného vstupu Request.QueryString[“cid”].

Doporučení:

Nesestavovat sql query dynamicky a použít druhý argument k ExecuteDataSet, tedy parameterValues.

 

Reflected XSS All Clients

V souboru ListComments.aspx.cs

Popis chyby:

Aplikace stejný parametr Request.QueryString[“cid”] zapisuje neošetřený na výstup.

Doporučení:

Veškerá dynamická data příslušně zaenkódovat, pokud jsou součástí výstupu. Encoding by měl být citlivý na kontext, např. HTML encoding pro HTML data, encoding HTML atributů pro výstup do hodnot atributů a nebo JavaScript pro serverem generovaný kód.

 

Stored XSS

V souboru ListComments.aspx

Popis chyby:

Aplikace bere data z databáze a vypisuje je bez jakéhokoli ošetření na výstup uživateli (<%# DataBinder.Eval(Container.DataItem, “Comment”)%>).

Doporučení:

Veškerá dynamická data příslušně zaenkódovat, pokud jsou součástí výstupu.

 

Heap Inspection

V souboru LoginPage.aspx

Popis chyby:

Aplikace ukládá plain text heslo v položce txtPassword. Později nikde nedochází mazání této položky, tudíž je pořád v paměti.

Doporučení:

Mazat hesla hned po jejich použití. Pokud jsou v proměnné typu String, použít datový typ který není imutabilní aby šel obsah smazat.

 

Heuristic 2nd order SQL Injection

V souboru AddComment.aspx.cs

Popis chyby:

Aplikace v metodě BindListView načitá data z databáze, která následně použije pro další dotaz do databáze. To umožňuje útočníkovi upravit data v databázi a provést nepřímí útok typu SQL Injection.

Doporučení:

Nesestavovat sql query dynamicky a použít druhý argument k ExecuteDataSet, tedy parameterValues.

 

Missing HSTS Header

V souboru ListComments.aspx.cs

Popis chyby:

Webová aplikace nedefinuje záhlaví HSTS (metoda Page_Load), takže je náchylná k útoku.

 

Doporučení:

Nastavte Strict-Transport-Security header

XSRF

V souboru AddComment.aspx.cs

Popis chyby:

Aplikace v metodě UpdateComment získává parametr od uživatele od z hodnoty Value. Tato hodnota prochází kódem a je eventuálně použita k získání aplikačního stavu který ovlivňuje funkcionalitu. To umožňuje útok typu XSRF.

 

Doporučení:

Implementace standardního nebo knihovního anti-CSRF mechanismu: nejlépe zabudovaný mechanismus poskytovaný platformou.

About fotodobias