当前位置: 首页 > news >正文

网络安全-LD_PRELOAD,请求劫持

目录

一、环境

二、开始做题

三、总结原理

四、如何防护


一、环境

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

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,不能设置环境变量,自然不能劫持系统函数了

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • docker安装部署时的资源文件路径问题以及使用pecl工具简洁方便地安装php扩展
  • 在 Mac 上安装双系统会影响性能吗,安装双系统会清除数据吗?
  • 【Python】谷歌浏览器总是自动更新,使用selenium跟chromedriver版本不匹配怎么办?
  • 【基于C++的产品入库管理系统】
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于模型-数据混合驱动的区域能源互联网韧性在线评估》
  • chattr:修改文件的特殊属性
  • 【BFS专题】— 解决拓扑排序问题
  • 合宙Air201模组LuatOS:PWRKEY控制,一键解决解决关机难问题
  • 数据权限的设计与实现系列9——前端筛选器组件Everright-filter集成框架开发2
  • TCP套接字【网络】
  • zabbix之钉钉告警
  • 【Qnx】使用ClockCycles完成计时功能
  • 零拷贝技术在现代编程语言和中间件中的应用
  • ROS 编程入门的介绍
  • LabVIEW 可以同时支持脚本编程和图形编程
  • ----------
  • 【技术性】Search知识
  • co模块的前端实现
  • ES6--对象的扩展
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • mysql中InnoDB引擎中页的概念
  • Node项目之评分系统(二)- 数据库设计
  • overflow: hidden IE7无效
  • TCP拥塞控制
  • Vue.js 移动端适配之 vw 解决方案
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 聊聊sentinel的DegradeSlot
  • 实现简单的正则表达式引擎
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • Java数据解析之JSON
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #android不同版本废弃api,新api。
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (03)光刻——半导体电路的绘制
  • (2.2w字)前端单元测试之Jest详解篇
  • (k8s中)docker netty OOM问题记录
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (接口自动化)Python3操作MySQL数据库
  • (九)One-Wire总线-DS18B20
  • (蓝桥杯每日一题)love
  • (论文阅读40-45)图像描述1
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (新)网络工程师考点串讲与真题详解
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)nsfocus-绿盟科技笔试题目
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .gitattributes 文件
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存