网络安全---Ring3下动态链接库.so函数劫持

一、动态链接库劫持原理

1.1、原理

Unix操作系统中,程序运行时会按照一定的规则顺序去查找依赖的动态链接库,当查找到指定的so文件时,动态链接器(/lib/ld-linux.so.X)会将程序所依赖的共享对象进行装载和初始化,而为什么可以使用so文件进行函数的劫持呢?

这与LINUX的特性有关,先加载的so中的全局符号会屏蔽掉后载入的符号,也就是说如果程序先后加载了两个so文件,两个so文件定义了同名函数,程序中调用该函数时,会调用先加载的so中的函数,后加载的将会屏蔽掉;所以要实现劫持,必须要抢得先机,

环境变量LD_PRELOAD以及配置文件/etc/ld.so.preload就可以让我们取得这种先机,它们可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库,我们只要在通过LD_PRELOAD加载的.so中编写我们需要hook的同名函数,即可实现劫持!

1.2、LD_PRELOAD函数讲解

LD_PRELOAD是一个环境变量,用于在运行时指定要在程序加载时优先加载的共享库(动态链接库)。这个环境变量允许你在程序启动之前将特定的共享库加载到内存中,从而可以在程序执行期间修改或替换系统库中的函数。

二、实例

1.1进入我们之前部署的docker环境(进入bypass绕过实例),这里我们以第1种为例子

1.2

Dockerfile:

docker-compose.yml:

1.3部署docker文件下的环境

1.4使用蚁剑连接

查看木马连接成功:

1.5 所有的命令无法执行: (shell废除)

限制所有执行函数:

三、问题解决

函数被禁用????无法劫持怎么办??

3.1方法:

第一:php需要启动一个新的进程

第二:控制环境变量

3.2出现子进程

3.3实现

四、总结

第一步:编写php文件--》查看哪一个php函数可以执行进程---》使用strace追踪php函数---》找到最容易写的函数劫持,利用php重新设置其环境变量

相关推荐
金士镧(厦门)新材料有限公司1 天前
稀土化合物:未来科技的隐藏推动力
科技·安全·全文检索
华硕广东1 天前
怎么才能去定义自己的生活呢?
科技·安全·技术美术
脚踏实地的大梦想家1 天前
【Go】P19 Go语言并发编程核心(三):从 Channel 安全到互斥锁
开发语言·安全·golang
qyresearch_1 天前
全球生物识别加密U盘市场:安全需求驱动增长,技术迭代重塑格局
网络·安全
std78791 天前
ISO 26262: 1~12部分,是汽车功能安全的国际标准,适用于道路车辆中的电气/电子系统。该标准分为12个部分,涵盖功能安全管理的全生命周期
安全·汽车
GIS数据转换器1 天前
2025无人机在电力交通中的应用实践
运维·人工智能·物联网·安全·无人机·1024程序员节
李白你好1 天前
日常运营提升效率 | 快速检索漏洞名称、问题描述、风险分析以及安全建议
安全
久违 °1 天前
【安全开发】Nuclei源码分析-任务执行流程(三)
安全·网络安全·go
white-persist2 天前
汇编代码详细解释:汇编语言如何转化为对应的C语言,怎么转化为对应的C代码?
java·c语言·前端·网络·汇编·安全·网络安全
newxtc2 天前
【辽宁政务服务网-注册_登录安全分析报告】
运维·selenium·安全·政务·安全爆破