Innehållsförteckning:
Video: Patienter som faller skadas oftare än de som inte faller 2024
I denna fallstudie delade Chip Andrews, en expert i SQL Server-säkerhet, denna erfarenhet av att (etiskt) hacka in i en kund databas för att avslöja säkerhetsbrister. Detta exempel ger en försiktighetspresent för att skydda din viktiga information genom att insistera på ljuddatabasssäkerhet.
Situationen
Under ett rutinpenetrationstest utförde Andrews de obligatoriska Google-sökningarna, domännamnsforskning, fingeravtryck på operativsystemet och portskanningar, men den här webbplatsen var låst fast. När han gick vidare till den webbaserade applikationen som körde på systemet blev han omedelbart konfronterad med en inloggningssida med SSL-krypterad blankettautentisering.
Genom att kontrollera källan till webbsidan noterade han att ett doldt App_Name-fält skickades till applikationen när en användare försökte logga in på webbplatsen. Kunde det vara så att utvecklarna kanske inte lyckats utföra korrekt inmatningsvalidering på denna oskyldiga parameter? Jakten var på.
Resultatet
Först var det dags att montera verktyget. Vid det här penetrationstestet föredrog Andrews att använda följande: Paros Proxy, Absinthe, Cain & Abel, Data Thief och Microsoft SQL Server Management Studio / SQL Server (Express Edition), som alla är tillgängliga gratis.
Till att börja med använde han Paros Proxy för att möjliggöra mer kontroll och synlighet till de webbförfrågningar som gjordes till webbservern.
Efter att ha spridit webbplatsen för tillgängliga sidor och utför en snabb sårbarhetskontroll för SQL-injektion, bekräftades att App_Name-parametern tycktes få programmet att kasta ett fel 500-undantag, vilket indikerar ett programfel. Penetrationstest är ett av de sällsynta tillfällen då ett misslyckande av ansökan är ett önskvärt resultat.
Eftersom applikationsfelet indikerade att Andrews kunde injicera oavsiktliga tecken i SQL-koden som skickades från applikationen till databasen kunde han se om det var ett exploaterbart tillstånd.
Ett vanligt test som fungerar med Microsoft SQL Server-databaser är att injicera ett kommando, till exempel WAITFOR DELAY '00: 00: 10 ', vilket gör att databasservern stannar i 10 sekunder. I en applikation som normalt returnerar en sida på en sekund eller mindre är en konsekvent 10-sekunders fördröjning en bra indikator på att du kan injicera kommandon i SQL-strömmen.
Därefter försökte Andrews att använda Data Thief-verktyget för att attackera inloggningssidan.Det här verktyget försöker tvinga databasen att använda ett OPENROWSET-kommando för att kopiera data från måldatabasen till Andrews databas som finns på Internet.
Detta är vanligtvis ett mycket effektivt sätt att sippra stora mängder data från utsatta databaser, men i detta fall föll hans attack! Databasadministratören vid målet hade avaktiverat OPENROWSET-funktionaliteten genom att korrekt konfigurera alternativet Disable Adhoc Distributed Queries.
Med noggrannhet som sitt klockord fortsatte Andrews med nästa verktyg - Absinthe. Det här verktyget använder en teknik som kallas blind SQL-injektion för att göra bestämningar om data med enkla ja eller inga frågor i databasen. Till exempel kan verktyget be databasen om den första bokstaven i ett bord är mindre än "L. "
Om ja, kan programmet inte göra någonting, men om nej, kan ansökan göra ett undantag. Med hjälp av denna enkla binära logik är det möjligt att använda denna teknik för att avslöja hela databasstrukturen och till och med de data som lagras inuti - om än mycket långsamt. Med verktyget identifierade han en tabell med känslig kundinformation och hämtade flera hundra poster för att visa klienten.
Slutligen var det dags att försöka en sista handling av databasdastardliness. Först laddade Andrews verktyget Cain & Abel och ställde in det för att gå in i sniffing-läge. Sedan använde han Paros Proxy och den redan identifierade sårbara parametern, den utökade lagrade proceduren xp_dirtree, som är tillgänglig för SQL Server-databasanvändare, för att försöka visa en katalog på sin Internetanslutna maskin med en Universal Naming Convention-sökväg.
Detta tvingade måldatabasen att faktiskt försöka autentisera sig mot Andrews maskin. Eftersom Cain & Abel lyssnade på tråden, fick den hash av utmaningen som användes för att verifiera den exponerade filen.
Genom att ha skickat denna hash till lösenordskrävaren inbyggd i Cain & Abel, skulle Andrews ha användarnamnet och lösenordet för det konto där den sårbara SQL-servern körde på bara en tidsfråga.
Skulle detta hackade konto använda samma lösenord som administratörskonto för webbapplikationen? Skulle detta lösenord vara detsamma som det lokala administratörskontot på värden? Det var frågor för en annan dag. Det var dags att samla alla insamlade data, förbereda en rapport för klienten och lägga verktygen bort för en annan dag.
Chip Andrews är en av grundarna av säkerhetsrådgivningsföretaget Special Ops Security, Inc. och ägare till SQLSecurity. com, som har flera resurser om Microsoft SQL Server-säkerhet, inklusive SQLPing3-verktyget. En medförfattare för flera böcker om SQL Server-säkerhet och en Black Hat-presentatör, Mr Andrews har främjat SQL Server och applikationssäkerhet sedan 1999.