内存马介绍及分析-带查杀工具tomcat memshell scanner.jsp

本文深入探讨内存Webshell,包括PHP和Java的实现原理,阐述其在网络安全中的作用,以及如何利用Flask框架创建Python内存马。此外,提供了内存马的检测思路,分享了Java内存马的查杀工具,并列出了一些相关的学习资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内存Webshell简介

内存webshell相比于常规webshell更容易躲避传统安全监测设备的检测,通常被用来做持久化,规避检测,持续驻留目标服务器。无文件攻击、内存Webshell、进程注入等基于内存的攻击手段也受到了大多数攻击者青睐。

内存webshell原理

本篇文章主要讨论的为Webshell脚本类内存马。其原理是先由客户端发起一个web请求,中间件的各个独立的组件如Listener、Filter、Servlet等组件会在请求过程中做监听、判断、过滤等操作,内存马利用请求过程在内存中修改已有的组件或者动态注册一个新的组件,插入恶意的shellcode达到持久化的控制服务器。

PHP内存马

php内存马原理:

php内存马也就是php不死马是将不死马启动后删除本身,在内存中执行死循环,使管理员无法删除木马文件。本次演示是将php不死马放到web目录下访问后及执行会在本地循环生成php一句话木马。

检测思路:

  1. 检查所有php进程处理请求的持续时间
  2. 检测执行文件是否在文件系统真实存在

代码:

函数说明

  1. ignore_user_abort()函数:函数设置与客户机断开是否会终止脚本的执行,如果设置为 true,则忽略与用户的断开。
  2. set_time_limit()函数:设置允许脚本运行的时间,单位为秒。如果设置为0(零),没有时间方面的限制。
  3. unlink(__FILE__)函数:删除文件。
  4. file_put_contents函数:将一个字符串写入文件。
  5. usleep函数:延迟执行当前脚本若干微秒(一微秒等于一百万分之一秒)。

php不死马实战

图:将php不死马放到web目录下

图:访问代码执行成功并生成后门

图:执行完生成php一句话木马

图:菜刀连接成功及时删掉22.php也会再次生成

对于不死马,直接删除脚本是没有用的,因为php执行的时候已经把脚本读进去解释成opcode运行了。使用条件竞争写入同名文件进行克制不死马。

图:将usleep改为小于php不死马的参数

图:查看22.php已修改成叹号

Python内存马

Python内存马原理:

Python内存马利用flask框架中ssti注入来实现,flask框架中在web应用模板渲染的过程中用到render_template_string()进行渲染但未对用户传输的代码进行过滤导致用户可以通过注入恶意代码来实现python内存马的注入。

实战步骤:

简单编写一个flask sstl实例,内容是访问/index加上content参数就会被渲染,渲染的content内容是用户可控,利用这点生成内存马。

图:环境代码

payload:

函数和属性解析

  • __class__:返回调用的参数类型
  • __bases__:返回基类列表
  • __builtins__:内建模块的引用,在任何地方都是可见的(包括全局),每个 Python 脚本都会自动加载,这个模块包括了很多强大的 built-in 函数,例如eval, exec, open等
  • __globals__:以字典的形式返回函数所在的全局命名空间所定义的全局变量,这里的函数可以是类class的构造函数如__init__,也可以是flask的函
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值