80,443 - Pentesting Web Methodology
Ikiwa unavutiwa na kazi ya hacking na kuhack yasiyoweza kuhackwa - tunatafuta wafanyakazi! (kuandika na kuzungumza kwa Kiswahili vizuri kunahitajika).
Basic Info
Huduma ya wavuti ni huduma ya kawaida na pana zaidi na aina nyingi za vulnerabilities tofauti zipo.
Bandari ya default: 80 (HTTP), 443(HTTPS)
Web API Guidance
Web API PentestingMethodology summary
Katika mbinu hii tutadhani kwamba unataka kushambulia kikoa (au subdomain) na tu hicho. Hivyo, unapaswa kutumia mbinu hii kwa kila kikoa, subdomain au IP iliyogunduliwa yenye seva ya wavuti isiyojulikana ndani ya upeo.
Server Version (Vulnerable?)
Identify
Angalia kama kuna udhaifu unaojulikana kwa toleo la seva inayotumika. HTTP headers na cookies za jibu zinaweza kuwa na manufaa sana katika kutambua teknolojia na/au toleo linalotumika. Nmap scan inaweza kutambua toleo la seva, lakini pia inaweza kuwa na manufaa kutumia zana whatweb, webtech au https://builtwith.com/:
Search for vulnerabilities of the web application version
Check if any WAF
Web tech tricks
Baadhi ya tricks za finding vulnerabilities katika technologies maarufu zinazotumika:
Kumbuka kwamba domain hiyo hiyo inaweza kuwa ikitumia technologies tofauti katika ports, folders na subdomains. Ikiwa programu ya wavuti inatumia tech/platform maarufu zilizoorodheshwa hapo awali au zingine yoyote, usisahau kutafuta mtandaoni tricks mpya (na unijulishe!).
Source Code Review
Ikiwa source code ya programu inapatikana katika github, mbali na kufanya White box test ya programu mwenyewe kuna maelezo ambayo yanaweza kuwa muhimu kwa Black-Box testing ya sasa:
Je, kuna Change-log au Readme au Version file au chochote chenye version info accessible kupitia wavuti?
Je, credentials zimehifadhiwaje na wapi? Je, kuna file (inaweza kufikiwa?) yenye credentials (majina ya watumiaji au nywila)?
Je, passwords ziko katika plain text, encrypted au ni hashing algorithm gani inayotumika?
Je, inatumia master key yoyote kwa ajili ya kuandika kitu? Ni algorithm gani inayotumika?
Je, unaweza kufikia yoyote ya hizi files kwa kutumia udhaifu wowote?
Je, kuna maelezo ya kuvutia katika github (masuala yaliyotatuliwa na yasiyotatuliwa)? Au katika commit history (labda password iliyoingizwa ndani ya commit ya zamani)?
Automatic scanners
General purpose automatic scanners
CMS scanners
Ikiwa CMS inatumika usisahau kufanya skana, labda kitu cha kuvutia kitatokea:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin tovuti za masuala ya Usalama. (GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal au (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
Katika hatua hii unapaswa kuwa na taarifa fulani kuhusu seva ya wavuti inayotumiwa na mteja (ikiwa kuna data yoyote iliyotolewa) na mbinu fulani za kukumbuka wakati wa mtihani. Ikiwa una bahati umepata hata CMS na kuendesha skana.
Hatua kwa hatua Ugunduzi wa Programu za Wavuti
Kutoka hapa tutaanza kuingiliana na programu ya wavuti.
Ukaguzi wa Awali
Kurasa za Kawaida zenye taarifa za kuvutia:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
Angalia pia maoni katika kurasa kuu na za sekondari.
Kusababisha makosa
Seva za wavuti zinaweza kufanya kazi kwa njia isiyo ya kawaida wakati data za ajabu zinatumwa kwao. Hii inaweza kufungua vulnerabilities au kufichua taarifa nyeti.
Fikia kurasa za uongo kama /whatever_fake.php (.aspx,.html,.n.k)
Ongeza "[]", "]]", na "[[" katika maadili ya cookie na maadili ya parameter ili kuunda makosa
Tengeneza kosa kwa kutoa ingizo kama
/~randomthing/%s
kwenye mwisho wa URLJaribu HTTP Verbs tofauti kama PATCH, DEBUG au makosa kama FAKE
Angalia ikiwa unaweza kupakia faili (PUT verb, WebDav)
Ikiwa unapata kuwa WebDav ime wezeshwa lakini huna ruhusa ya kutosha kwa kupakia faili katika folda ya mzizi jaribu:
Brute Force akidi
Pakia faili kupitia WebDav kwa sehemu ya folda zilizopatikana ndani ya ukurasa wa wavuti. Unaweza kuwa na ruhusa za kupakia faili katika folda nyingine.
Vulnerabilities za SSL/TLS
Ikiwa programu haiwalazimishi watumiaji kutumia HTTPS katika sehemu yoyote, basi ni vulnerable to MitM
Ikiwa programu inatumia kutuma data nyeti (nywila) kwa kutumia HTTP. Basi ni vulnerability kubwa.
Tumia testssl.sh kuangalia vulnerabilities (Katika programu za Bug Bounty labda aina hizi za vulnerabilities hazitakubaliwa) na tumia a2sv kuangalia tena vulnerabilities:
Information about SSL/TLS vulnerabilities:
Spidering
Zindua aina ya spider ndani ya wavuti. Lengo la spider ni kupata njia nyingi kadri iwezekanavyo kutoka kwa programu iliyojaribiwa. Hivyo, kuvinjari wavuti na vyanzo vya nje vinapaswa kutumika ili kupata njia halali nyingi kadri iwezekanavyo.
gospider (go): HTML spider, LinkFinder katika faili za JS na vyanzo vya nje (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
hakrawler (go): HML spider, na LinkFider kwa faili za JS na Archive.org kama chanzo cha nje.
dirhunt (python): HTML spider, pia inaonyesha "faili za juicy".
evine (go): Interactive CLI HTML spider. Pia inatafuta katika Archive.org
meg (go): Chombo hiki si spider lakini kinaweza kuwa na manufaa. Unaweza tu kuashiria faili yenye mwenyeji na faili yenye njia na meg itachukua kila njia kwenye kila mwenyeji na kuhifadhi jibu.
urlgrab (go): HTML spider yenye uwezo wa kuonyesha JS. Hata hivyo, inaonekana kama haijatunzwa, toleo lililotayarishwa ni la zamani na msimbo wa sasa haujajitengeneza.
gau (go): HTML spider inayotumia watoa huduma wa nje (wayback, otx, commoncrawl)
ParamSpider: Hii ni script itakayopata URLs zenye parameta na kuziorodhesha.
galer (go): HTML spider yenye uwezo wa kuonyesha JS.
LinkFinder (python): HTML spider, yenye uwezo wa kuboresha JS inayoweza kutafuta njia mpya katika faili za JS. Inaweza kuwa na manufaa pia kuangalia JSScanner, ambayo ni wrapper ya LinkFinder.
goLinkFinder (go): Kutolewa kwa mwisho katika chanzo cha HTML na faili za javascript zilizojumuishwa. Inafaida kwa wawindaji wa makosa, red teamers, infosec ninjas.
JSParser (python2.7): Script ya python 2.7 inayotumia Tornado na JSBeautifier kuchambua URLs zinazohusiana kutoka kwa faili za JavaScript. Inafaida kwa kugundua maombi ya AJAX kwa urahisi. Inaonekana kama haijatunzwa.
relative-url-extractor (ruby): Iwapo kuna faili (HTML) itatoa URLs kutoka kwake kwa kutumia kanuni nzuri za kawaida ili kupata na kutoa URLs zinazohusiana kutoka kwa faili mbaya (minify).
JSFScan (bash, zana kadhaa): Kusanya habari za kuvutia kutoka kwa faili za JS kwa kutumia zana kadhaa.
subjs (go): Pata faili za JS.
page-fetch (go): Pata ukurasa katika kivinjari kisichokuwa na kichwa na uchapishe URLs zote zilizopakiwa ili kupakua ukurasa.
Feroxbuster (rust): Chombo cha kugundua maudhui kinachochanganya chaguzi kadhaa za zana za awali.
Javascript Parsing: Kiendelezi cha Burp kutafuta njia na parameta katika faili za JS.
Sourcemapper: Chombo ambacho kinapewa URL ya .js.map kitakupa msimbo wa JS ulioimarishwa.
xnLinkFinder: Hii ni chombo kinachotumika kugundua mwisho kwa lengo fulani.
waymore: Gundua viungo kutoka kwa mashine ya wayback (pia kupakua majibu katika wayback na kutafuta viungo zaidi).
HTTPLoot (go): Crawl (hata kwa kujaza fomu) na pia pata habari nyeti kwa kutumia regex maalum.
SpiderSuite: Spider Suite ni kivinjari cha wavuti cha GUI chenye vipengele vingi vilivyoundwa kwa wataalamu wa usalama wa mtandao.
jsluice (go): Ni pakiti ya Go na chombo cha amri cha kutoa URLs, njia, siri, na data nyingine za kuvutia kutoka kwa msimbo wa chanzo wa JavaScript.
ParaForge: ParaForge ni kiendelezi rahisi cha Burp Suite ili kutoa parameta na mwisho kutoka kwa ombi ili kuunda orodha ya maneno ya kawaida kwa fuzzing na orodha.
katana (go): Chombo bora kwa hili.
Crawley (go): Chapisha kila kiungo kinachoweza kupatikana.
Brute Force directories and files
Anza brute-forcing kutoka kwenye folda ya mzizi na uwe na uhakika wa brute-force zote directories zilizopatikana kwa kutumia hii mbinu na zote directories zilizogunduliwa na Spidering (unaweza kufanya brute-forcing hii recursively na kuongeza mwanzoni mwa orodha ya maneno iliyotumika majina ya directories zilizopatikana). Tools:
Dirb / Dirbuster - Imejumuishwa katika Kali, ya zamani (na pole) lakini inafanya kazi. Inaruhusu vyeti vilivyojitiisha kiotomatiki na utafutaji wa kurudi. Pole sana ikilinganishwa na chaguzi nyingine.
Dirsearch (python): Haikubali vyeti vilivyojitiisha kiotomatiki lakini inaruhusu utafutaji wa kurudi.
Gobuster (go): Inaruhusu vyeti vilivyojitiisha kiotomatiki, haikubali recursive search.
Feroxbuster - Haraka, inasaidia utafutaji wa kurudi.
wfuzz
wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
ffuf - Haraka:
ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
uro (python): Hii si spider lakini ni chombo ambacho kinapewa orodha ya URLs zilizopatikana kitafuta "URLs zilizojirudia".
Scavenger: Kiendelezi cha Burp kuunda orodha ya directories kutoka kwa historia ya burp ya kurasa tofauti.
TrashCompactor: Ondoa URLs zenye kazi zilizojirudia (kulingana na uagizaji wa js).
Chamaleon: Inatumia wapalyzer kugundua teknolojia zinazotumika na kuchagua orodha za maneno za kutumia.
Recommended dictionaries:
raft-large-directories-lowercase.txt
directory-list-2.3-medium.txt
RobotsDisallowed/top10000.txt
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
Note that anytime a new directory is discovered during brute-forcing or spidering, it should be Brute-Forced.
What to check on each file found
Broken link checker: Pata viungo vilivyovunjika ndani ya HTMLs ambavyo vinaweza kuwa na hatari ya kuchukuliwa.
File Backups: Mara tu unapopata faili zote, angalia nakala za faili zote zinazoweza kutekelezwa (".php", ".aspx"...). Mabadiliko ya kawaida ya kutaja nakala ni: file.ext~, #file.ext#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp na file.old. Unaweza pia kutumia chombo bfac au backup-gen.
Discover new parameters: Unaweza kutumia zana kama Arjun, parameth, x8 na Param Miner kugundua parameta zilizofichwa. Ikiwezekana, unaweza kujaribu kutafuta parameta zilizofichwa kwenye kila faili la wavuti linaloweza kutekelezwa.
Arjun all default wordlists: https://github.com/s0md3v/Arjun/tree/master/arjun/db
Param-miner “params” : https://github.com/PortSwigger/param-miner/blob/master/resources/params
Assetnote “parameters_top_1m”: https://wordlists.assetnote.io/
nullenc0de “params.txt”: https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773
Comments: Angalia maoni ya faili zote, unaweza kupata credentials au ufunctionality iliyofichwa.
Ikiwa unacheza CTF, hila "ya kawaida" ni kuficha habari ndani ya maoni upande wa kulia wa ukurasa (ukitumia mifumo miyingi ili usione data ikiwa unafungua msimbo wa chanzo na kivinjari). Uwezekano mwingine ni kutumia michoro kadhaa mipya na kuficha habari katika maoni kwenye chini ya ukurasa wa wavuti.
API keys: Ikiwa unapata funguo zozote za API kuna mwongozo unaoelekeza jinsi ya kutumia funguo za API za majukwaa tofauti: keyhacks, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird
Google API keys: Ikiwa unapata funguo zozote za API zinazoonekana kama AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik unaweza kutumia mradi gmapapiscanner kuangalia ni APIs zipi funguo hiyo inaweza kufikia.
S3 Buckets: Wakati wa spidering angalia ikiwa subdomain au kiungo chochote kinahusiana na S3 bucket. Katika kesi hiyo, angalia permissions za bucket.
Special findings
Wakati wa kufanya spidering na brute-forcing unaweza kupata mambo ya kuvutia ambayo unapaswa kuangazia.
Interesting files
Angalia viungo kwa faili nyingine ndani ya CSS files.
Ikiwa unapata .env habari kama funguo za api, nywila za db na habari nyingine zinaweza kupatikana.
Ikiwa unapata API endpoints unapaswa pia kujaribu kuzi. Hizi si faili, lakini labda "zitakuwa kama" hizo.
JS files: Katika sehemu ya spidering zana kadhaa ambazo zinaweza kutoa njia kutoka kwa faili za JS zilitajwa. Pia, itakuwa ya kuvutia kufuatilia kila faili la JS lililopatikana, kwani katika baadhi ya matukio, mabadiliko yanaweza kuashiria kuwa udhaifu wa uwezekano umeingizwa katika msimbo. Unaweza kutumia kwa mfano JSMon.
Javascript Deobfuscator and Unpacker: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator
Javascript Beautifier: http://jsbeautifier.org/, http://jsnice.org/
JsFuck deobfuscation (javascript with chars:"[]!+" https://ooze.ninja/javascript/poisonjs/)
TrainFuck:
+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
Katika matukio kadhaa utahitaji kuelewa kanuni za kawaida zinazotumika, hii itakuwa na manufaa: https://regex101.com/
Unaweza pia kufuatilia faili ambapo fomu zilipatikana, kwani mabadiliko katika parameta au kuonekana kwa fomu mpya kunaweza kuashiria uwezekano wa kazi mpya yenye udhaifu.
403 Forbidden/Basic Authentication/401 Unauthorized (bypass)
403 & 401 Bypasses502 Proxy Error
Ikiwa ukurasa wowote unajibu na nambari hiyo, labda ni proxy iliyo na makosa. Ikiwa unatumia ombi la HTTP kama: GET https://google.com HTTP/1.1
(pamoja na kichwa cha mwenyeji na vichwa vingine vya kawaida), proxy itajaribu kufikia google.com na utakuwa umepata SSRF.
NTLM Authentication - Info disclosure
Ikiwa seva inayotumika inahitaji uthibitisho ni Windows au unapata kuingia inayohitaji credentials zako (na kuomba jina la domain), unaweza kusababisha ufichuzi wa habari.
Tuma header: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
na kutokana na jinsi uthibitisho wa NTLM unavyofanya kazi, seva itajibu kwa habari za ndani (toleo la IIS, toleo la Windows...) ndani ya kichwa "WWW-Authenticate".
Unaweza kujiandaa hii kwa kutumia nmap plugin "http-ntlm-info.nse".
HTTP Redirect (CTF)
Inawezekana kweka maudhui ndani ya Redirection. Maudhui haya hayataonyeshwa kwa mtumiaji (kama kivinjari kitatekeleza uelekeo) lakini kitu kinaweza kuwa kimefichwa humo.
Web Vulnerabilities Checking
Sasa kwamba orodha kamili ya programu ya wavuti imefanywa ni wakati wa kuangalia uwezekano wa udhaifu mwingi. Unaweza kupata orodha ya ukaguzi hapa:
Web Vulnerabilities MethodologyPata maelezo zaidi kuhusu udhaifu wa wavuti katika:
Monitor Pages for changes
Unaweza kutumia zana kama https://github.com/dgtlmoon/changedetection.io kufuatilia kurasa kwa mabadiliko ambayo yanaweza kuingiza udhaifu.
Ikiwa unavutiwa na kazi ya hacking na kujaribu kuvunja yasiyoweza kuvunjika - tunatafuta wafanyakazi! (kuandika na kuzungumza kwa kiswahili vizuri kunahitajika).
HackTricks Automatic Commands
Last updated