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

http://www.lryc.cn/news/443996.html

相关文章:

  • GO入门之值传递于引用(指针、内存地址)传递扫盲
  • 【渗透测试】-vulnhub源码框架漏洞-Os-hackNos-1
  • sqli-lab靶场学习(三)——Less8-10(盲注、时间盲注)
  • Pybullet 安装过程
  • Error when custom data is added to Azure OpenAI Service Deployment
  • libreoffice word转pdf
  • java -----泛型
  • Springboot 文件上传下载相关问题
  • 【Kotlin 与 Java 互操作】Java中调用带有默认值的Kotlin函数(十四)
  • 点赞系统实现
  • c++进阶学习-----继承
  • C++学习笔记(37)
  • Redis发布和订阅
  • 计算机毕设设计推荐-基于python+Djanog大数据的电影数据可视化分析
  • dhtmlxGantt 甘特图 一行展示多条任务类型
  • COLORmap
  • 手机在网状态查询接口如何用Java进行调用?
  • mysql性能优化- 数据库配置优化
  • (算法)大数的进制转换
  • 演示jvm锁存在的问题
  • Android SharedPreference详解
  • 论文阅读 | 可证安全隐写(网络空间安全科学学报 2023)
  • Arthas jvm(查看当前JVM的信息)
  • 【c++】介绍
  • JavaScript typeof与instanceof的区别
  • C++11 可变的模板参数
  • 手机在网状态查询接口如何用PHP进行调用?
  • MATLAB中多张fig图合并为一个图
  • Java启动Tomcat: Can‘t load IA 32-bit .dll on a AMD 64-bit platform报错问题解决
  • 基于微信小程序的家教信息管理系统的设计与实现(论文+源码)_kaic