网络安全-LD_PRELOAD,请求劫持

server/2024/9/23 1:42:06/

目录

一、环境

二、开始做题

三、总结原理

四、如何防护


一、环境

我们这里用蚁剑自带的靶场第一关来解释

docker制作一下即可

二、开始做题

首先环境内很明显给我们已经写好了webshell

同样我们也可以访问到

我们使用这个蚁剑把这个webshell连上

我们发现命令不能执行,系统命令被禁用掉了

我们可以写一个phpinfo

看一下禁用函数,基本上它全都禁用了包括system,并且mail函数都禁用了,(正常来说php不能禁用mail【创建新进程调用sedmail,调用系统服务getuid】put_env【环境变量LD_PRELOAD】,error_log)但没禁用error_log这个函数,所以还是有漏网之鱼的

	pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,exec,shell_exec,popen,proc_open,passthru,symlink,link,syslog,imap_open,dl,mail,system

去蚁剑插件市场

可以加载系统进程error_log写入进程后执行,但是我们必须依赖sendmail

如果对方没有sendmail,我们用的是__attribute__(__)bypass_disable_function ,这种方法只要能创建新进程就可以劫持

bypass disable_function总结学习 - tr1ple - 博客园 (cnblogs.com)

我们用插件上传脚本,其实就是我之前写的流量转发脚本

创建副本,文件名修改后重新连接

 虚拟终端可以执行

它的原理依然是加载.so文件

其实执行的就是这个,意思也就是转发到一个新的php进程上面,-n我不在使用php.ini,-s创建一个新的webserve

最终

三、总结原理

首先disable_function不能禁用mail和error_log这两个函数,因为putenv可以创建环境变量,可以把LD_PRELOAD环境变量创建出来,加载我们创建的一个.so文件,而我们的mail函数在执行的时候会创建一个新进程调用sendmail,sendmail会创建系统服务getuid,而我们创建的恶意的.so文件恰好就劫持了mail调用诸多函数的其中一个比如getuid,会提前执行我们的恶意函数,自然也就执行了

四、如何防护

禁用putenv,不能设置环境变量,自然不能劫持系统函数了


http://www.ppmy.cn/server/120567.html

相关文章

Spring Boot赋能高校心理健康教育

1绪 论 1.1研究背景 随着计算机和网络技术的不断发展,计算机网络已经逐渐深入人们的生活,网络已经能够覆盖我们生活的每一个角落,给用户的网上交流和学习提供了巨大的方便。 当今社会处在一个高速发展的信息时代,计算机网络的发展…

Day25笔记-普通文件读写with上下文二进制文件csv文件

一、文件读写【重点掌握】 常见文件的读写分类: ​ 1.普通文件文件,如txt,py,html等 ​ 2.二进制文件,如图片,音频,视频,压缩包等 ​ 3.csv文件,如csv,需要借助于系统模块csv ​ 4.对…

Web APIs 2:事件监听

Web APIs 2(事件监听) 1.事件监听 语法: 元素对象.addEventListener(‘事件类型’,要执行的函数) 事件源:获取的dom元素事件类型:用什么方式触发,比如鼠标单击click、鼠标经过mouseover等事件调…

Git常用指令整理【新手入门级】【by慕羽】

Git 是一个分布式版本控制系统,主要用于跟踪和管理源代码的更改。它允许多名开发者协作,同时提供了强大的功能来管理项目的历史记录和不同版本。本文主要记录和整理,个人理解的Git相关的一些指令和用法 文章目录 一、git安装 & 创建git仓…

110. 平衡二叉树

文章目录 110. 平衡二叉树题外话 本题思路递归 110. 平衡二叉树 110. 平衡二叉树 给定一个二叉树,判断它是否是 平衡二叉树 平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出…

Fyne ( go跨平台GUI )中文文档-容器和布局 (四)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…

问题——IMX6UL的uboot无法ping主机或Ubuntu

主要描述可能的方向,不涉具体过程,详细操作可以查阅网上相关教程 跟随正点原子教程测试以太网端口时,即便按照步骤多次尝试也无法ping通,后补充了些许网络工程基础知识解决了这个问题。 uboot无法ping主机或Ubuntu有多种可能&…

【Pycharm】Pycharm创建Django提示pip版本需要升级

目录 1、现象 2、分析 3、本质 前言:经常使用pycharm创建django、flask等项目时候提示pip版本需要升级,解决方案 1、现象 使用Pycharm创建Django项目提示安装Django超时,报错建议pip升级22升级到24 2、分析 之前使用命令升级了pip到了24…