前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP常见过WAF webshell及最简单检测方法

PHP常见过WAF webshell及最简单检测方法

作者头像
瓦都剋
发布2020-08-07 16:20:33
1.3K0
发布2020-08-07 16:20:33
举报
文章被收录于专栏:安全泰式柑汁安全泰式柑汁

之前在"Webshell查杀的新思路"中留了一个坑?️,当时没有找到具体找到全部变量的方法,后来通过学习找到了个打印全部量的方法,并再次学习了下PHP webshell绕过WAF的方法,以此来验证下此方法是否合理。

在那篇文章中我突然想到一种检测webshell的方法,就是首先获取到当前文件中的所有变量(不明白的可以先去看下之前的文章),然后再根据正则库进行静态检测。

自认为这种方法虽然会检测不完全(每个检测机制都不能保障全部有效),但是感觉非常简单、实用,也没那么多高深的道理。

为了验证该检测机制,首先了解下目前PHP webshell绕过WAF的方法。

常见绕过WAF的PHP webshell

字符串变形

大小写、编码、截取、替换、特殊字符拼接、null、回车、换行、特殊字符串干扰

自写函数

利用assert()

回调函数

利用魔术方法、析构函数__destruct()__construct()

利用外部文件

利用curl, fsockopen等发起网络请求再结合file_get_contents

无字符特征马

编码、异或、自增

特殊请求头

利用getallheaders()

全局变量

利用getenv()arrag_flip()get_defined_vars()session_id()

PHP混淆加解密

以phpjiami为例

就是将函数名、变量名全部变成"乱码",且改动任意一个地方,都将导致文件不能运行。具体可访问:https://www.phpjiami.com/

webshell检测方法

目前我所了解的webshell检测方式有:

  1. 机器学习检测webshell:比如混淆度、最长单词、重合指数、特征、压缩比等
  2. 动态检测(沙箱)
  3. 基于流量模式检测webshell:agent
  4. 逆向算法+静态匹配检测webshell:比如D盾webshell查杀
  5. 根据文件入度出度来检测

实例展示

这里以PHPjiami的webshell为例,其中2.php即为phpjiama的木马

可以明显看到明显的webshell规则了,这样再用静态规则、正则等即可轻松检测到。

简单检测思路

检测思路:

文件上传->文件包含->获取所有文件中的变量到临时文件中->静态规则匹配临时文件->返回匹配结果

目录树:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小宝的安全学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常见绕过WAF的PHP webshell
    • 字符串变形
      • 自写函数
        • 回调函数
            • 利用外部文件
              • 无字符特征马
                • 特殊请求头
                  • 全局变量
                    • PHP混淆加解密
                    • webshell检测方法
                      • 实例展示
                        • 简单检测思路
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档