(勘误) P42 - 3.2.3 CVE-2019-14271:加载不受信任的动态链接库
XDTG opened this issue · 3 comments
XDTG commented
P42 - 3.2.3.3 第三步:实现逃逸
正文倒数第一行:
符号链接指向的库文件移动到容器根目录下并重命名为 original_libnss_files.so.2。
此处移动的对象可以为 libnss_files.so.2 这个符号链接文件本身,不需要移动它所指向的库文件。
在 files-services.c 中添加的代码里,通过 rename(ORIGINAL_LIBNSS, LIBNSS_PATH)
恢复原始 libnss_files.so.2,如果是将库文件移动为 original_libnss_files.so.2,则原始的符号链接文件会被恢复成所指向库文件 ( libnss_files-2.27.so ),和此处本意不符。
brant-ruan commented
@XDTG 你好,书上描述的步骤应该没有问题,按照书上的步骤:
- 将libnss_files.so.2符号链接指向的文件libnss_files-2.27.so保存到/original_libnss_files.so.2;
- 将原libnss_files.so.2替换为前文构造好的恶意libnss_files.so(即,此时libnss_files.so.2不再是符号链接,而是实体文件);
- 在代码中,
rename(ORIGINAL_LIBNSS, LIBNSS_PATH)
将/original_libnss_files.so.2移动到/lib/x86_64-linux-gnu/libnss_files.so.2,此时的libnss_files.so.2也不再是符号链接,而是实体文件。
不过,上面这样操作后确实与实验前不同,libnss_files.so.2不再是符号链接。你提到的操作方式能够保证实验前后libnss_files.so.2都是符号链接。
XDTG commented
@brant-ruan 确实,两种步骤都可以,只是感觉书上的操作多余了一步 readlink~,感谢回复
brant-ruan commented
也谢谢你指出,下一次印刷时我们更新一下👍