poc2jar 常见漏洞验证利用工具

poc2jar 常见漏洞验证利用工具

poc2jar 简介

java编写,python作为辅助依赖的漏洞验证、利用工具,另外添加了编码模块、命令模块、常见漏洞利用GUI模块,加快测试效率.

个人写的很简陋的poc工具,每次遇到新的漏洞爆发出来,都要去复现,复现好以后保存到哪里就成了一个问题了,写这个工具,就是为了解决这个问题,希望能集合到个人主机内,然后可以根据不同的poc来使用

poc保存模块

举一个很简单的例子,hikvision的漏洞

poc2jar 常见漏洞验证利用工具

截取到数据包如下:

GET /onvif-http/snapshot?auth=YWRtaW46MTEK HTTP/1.1
Host:x.x.x.x
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:89.0) Gecko/20100101 Firefox/89.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

直接放入到poc保存模块里,进行发包

poc2jar 常见漏洞验证利用工具

可以看到返回的为二进制的图片,那我们可以把漏洞关键字设置为Content-Type:image/jpeg,只要请求这个路径返回这个,就判断为存在漏洞

poc2jar 常见漏洞验证利用工具

满足条件,可以保存为yml文件

填入exp名称、yml文件的名称(这里名称需要带入组件,如这里应该为hikvision/test.yml)

poc2jar 常见漏洞验证利用工具

至此,保存yml文件成功

exp利用模块

直接选择刚刚保 存的yml文件

poc2jar 常见漏洞验证利用工具

输入刚刚的url,进行测试

poc2jar 常见漏洞验证利用工具

存在相应回显即为存在漏洞

批量利用(这里多线程没有处理好,暂时不能太多目标,后期想更换为python多线程)

poc2jar 常见漏洞验证利用工具

tasklist进程搜索模块

这里需要tasklist /svc格式的输入

poc2jar 常见漏洞验证利用工具

常用命令模块

poc2jar 常见漏洞验证利用工具

python利用模块

poc2jar 常见漏洞验证利用工具

不足 todo

①.对于一些复杂请求的没有做到兼容测试,还是依赖于python模块去执行 暂时没找到好方法替代

②.对于多线程没有处理好 用python替代了

③.对于单个目标可以把对应模块的poc全部测一遍

④.所需要的文件有点多,考虑办法不需要文件,直接写进jar包内 2021.8.14(部分完成)

⑤.考虑和goby、xray格式相同(长久来看)

对文件的说明

①.poc文件夹存放poc文件,即yml文件

②.property文件夹存放cmdlists.txt,即常用命令模块;config.properties,即python路径,或者环境变量下python的调用命令;exetest.txt,即tasklist /svc查找的敏感进程;test.txt是保存的请求包

③.pythonexp文件夹存放的python脚本,usage放在了文件第一行,可以进行调用

安装说明

安装pyyaml库 5.3.1

运行

Mac OS

直接运行jar即可

Windows

直接运行jar即可

需要在命令行加入参数编码参数,否则会乱码,即java -jar -Dfile.encoding=utf-8 poc2jar.jar

编写过程的难点

其实真正的难点在于发请求,尤其是发POST请求,但是没有Content-type这样的漏洞payload的时候,有些漏洞请求是要POST,但是Content-type是不需要的,这就导致了该项目当时停滞不前,遇到一位大佬帮我解决问题,真的太感谢了,此处艾特董神 主要在于setIfNotSet自动加上了Content-type,所以我们重写这个方法 下面给出解决的demo

poc2jar 常见漏洞验证利用工具

test类下定义一个setIfNotSet方法

  public synchronized void setIfNotSet(String arg0, String arg1) {
//        System.out.println("hook: " + arg0);
      if ("Content-type".equals(arg0)) {
      return;
  }

      if ("Connection".equals(arg0)) {
      return;
  }

      if ("Accept".equals(arg0)) {
      return;
  }

      super.setIfNotSet(arg0, arg1);
}

继承test类

HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
// 设置通用的请求属性

Object target = connection;
if (!target.getClass().equals(sun.net.www.protocol.http.HttpURLConnection.class)) {
    //https
    Field field1 = connection.getClass().getDeclaredField("delegate");
    field1.setAccessible(true);
    target = field1.get(connection);
}
Field field2 = sun.net.www.protocol.http.HttpURLConnection.class.getDeclaredField("requests");
field2.setAccessible(true);
test customMessageHeader = new test();

2021.12.8更新v0.48

增加shiro RememberMe参数解密模块,
取自https://github.com/r00tuser111/SerializationDumper-Shiro

增加反编译工具fernflower.jar、shiro key文件keys.conf

举例说明: 使用ysoserial工具生成

poc2jar 常见漏洞验证利用工具

进行解密:

poc2jar 常见漏洞验证利用工具

使用shiro利用工具生成

poc2jar 常见漏洞验证利用工具

进行解密:

poc2jar 常见漏洞验证利用工具

2021.11.30更新v0.47

新增模块

1.增加CORS漏洞poc生成、JSONP漏洞poc生成,在日常挖洞过程中,会遇到cors、jsonp,有些是安服项目,有些是src项目,但是每次遇到这些漏洞,poc的生成会比较麻烦,像我自己平时也会挖掘一些漏洞交到src混混奖励等等

poc2jar 常见漏洞验证利用工具

模块演示环境取自DoraBox(https://github.com/0verSp4ce/DoraBox)

CORS生成模块:

poc2jar 常见漏洞验证利用工具

导出文件为poc2jar-cors.html

poc2jar 常见漏洞验证利用工具

访问poc2jar-cors.html,即可看到弹窗:

poc2jar 常见漏洞验证利用工具

这里有个CORS的小tips,在一些src站点中,把js代码保存成js文件,然后上传个新的html引用这个js文件,在一些环境中就可以执行了

JSONP模块:

poc2jar 常见漏洞验证利用工具

导出文件为poc2jar-jsonp.html

poc2jar 常见漏洞验证利用工具

访问poc2jar-jsonp.html,即可看到弹窗

poc2jar 常见漏洞验证利用工具

优化部分: Python脚本模块增加报错机制,具体实现为:

            Process pro = Runtime.getRuntime().exec(commands);
            InputStream Output = pro.getInputStream(); // Output为正常信息
            InputStream errorOutput = pro.getErrorStream(); // errorOutput为报错信息

界面如下:

poc2jar 常见漏洞验证利用工具

2021.11.25更新v0.46

增加druid未授权漏洞利用,可以查看到jdbc链接、数据库用户名、sql语句、访问的uri、SESSION值

poc2jar 常见漏洞验证利用工具

简单说下为什么要收集这些信息,jdbc的数据库名称、用户名、密码都有可能是一样的,这里收集也是为了站点的信息收集;

sql语句的一些变量可以收集起来进行fuzz,针对同一类开发团队来说,以及一些路由的可能语句;

uri信息这里做了jdbc执行次数的降序排列,也就是最上面的可能就是系统执行sql语句的路由,可以重点看下;

SESSION值,大家应该都知道,看SESSION的有效性了;

还有一个小优化就是bash命令增加去掉花括号和bash -c的版本,感谢@金鱼 师傅完善

poc2jar 常见漏洞验证利用工具

发现python模块下的脚本可能会未响应,后续增加脚本的延时跳出未响应状态 (迭代的时候发现properties被覆盖了,已经更正过来,感谢@Tukali 师傅提交issue)

2021.11.20更新v0.45

1.base64解码优化,遇到奇数编码会报错,由于没有处理好报错问题,导致程序出错,优化如下:

(如该种解码只出现了三种情况,其他情况报错忽略)

poc2jar 常见漏洞验证利用工具

2021.11.19更新v0.44

1.base64模块解码加入分段猜解,类似base64编码中可能存在部分非base64的加密部分,剔除后进行base64解密。参考(https://xz.aliyun.com/t/7779)

测试base64:

RuYW1lPVRfWlBHTF9ER1dSU0pHWlNYJklzaGFzWVBYSEJ5ZmlsZWQ9JnNlbGVjdGZpZWxkSWRzPSwmc2VsZWN0ZmllbGRJZHNWYWx1ZT0sY29td2lzZWR1Y29td2lzZWR1c3VibWl0PXRydWUmeXB4aHZhbHVlPTI3OTQ2Jn
poc2jar 常见漏洞验证利用工具
poc2jar 常见漏洞验证利用工具

2.优化cs payload,可以进行按钮保存,方便之后打开使用

poc2jar 常见漏洞验证利用工具

2021.11.19更新v0.43

优化windows下的启动参数,由于mac下java默认是utf-8,windows下java默认是gbk

mac下

poc2jar 常见漏洞验证利用工具

windows下

poc2jar 常见漏洞验证利用工具

导致有师傅提了issue,这里思考了一下,把文本文档的编码更改一下应该就行了,windows下双击打开jar:

poc2jar 常见漏洞验证利用工具

2021.11.18更新v0.42

1.增加命令模块(Bash模块、PowerShell模块、Python模块、Perl模块),
参考http://www.jackson-t.ca/runtime-exec-payloads.html

Bash模块

poc2jar 常见漏洞验证利用工具

PowerShell模块

poc2jar 常见漏洞验证利用工具

Python模块

poc2jar 常见漏洞验证利用工具

Perl模块

poc2jar 常见漏洞验证利用工具

2.增加cs快速生成命令模块,第二三四条可以绕过windows defender的上线命令,第一条只是做了加号处理

poc2jar 常见漏洞验证利用工具

第五条效果不好

poc2jar 常见漏洞验证利用工具

3.优化windows下体验(由于没在windows下测试,导致windows之前的jar都打不开,0.42开始,windows和mac都会进行一次测试)

todo:base64模块解码加入猜解,参考(https://xz.aliyun.com/t/7779)

2021.11.17更新v0.41

1.优化listview选择列表事件,可通过上下方向键进行选择,

由于使用方向键可以移动光标位置,所以可以通过监听onKeyReleased事件来实现,具体实现逻辑如下:

添加监听事件:

onKeyReleased="#mListView1Click2"

事件定义为:

public void mListView1Click2(KeyEvent event)

函数为:

mListView1.getSelectionModel().getSelectedItem()

通过读取光标来进行获取listview选中的内容

2.去除了文件中会显示.DS_store文件

3.增加druid1.0.16版本及以后的解密方式

poc2jar 常见漏洞验证利用工具

4.增加编码模块(Unicode、URL、Base64、Hex、Html、ascii编码),由于平时编码工具很少,要么是burp的编码模块,很难用,要么是某些在线网站,在线网站进行编码,需要有互联网,就导致了在一些内网环境中无法进行编码、解码,所以写了进去,简单介绍下:

Unicode模块(遇见一些网页响应包里的无法转码,可以尝试这个模块)

poc2jar 常见漏洞验证利用工具
poc2jar 常见漏洞验证利用工具

URL模块(有些在URL里以百分号存在的字符,可以尝试这个模块)

poc2jar 常见漏洞验证利用工具

Base64模块(形如base64格式的,可以尝试这个模块)

poc2jar 常见漏洞验证利用工具
poc2jar 常见漏洞验证利用工具

Html模块(形如&#格式的,可以尝试这个模块)

poc2jar 常见漏洞验证利用工具
poc2jar 常见漏洞验证利用工具

ascii模块(一般是在SQL注入中会用到,取ascii码进行比对)

poc2jar 常见漏洞验证利用工具
poc2jar 常见漏洞验证利用工具

2021.11.15更新 v0.4

1.完善密码模块对druid密码的解密,在druid 1.0.16版本及之前

poc2jar 常见漏洞验证利用工具

发现有些时候poc利用的还不是很好,emmm在思考怎么优化

2021.8.14更新 v0.3

1.完善对于单个目标进行全部poc检测

poc2jar 常见漏洞验证利用工具

2.python运行命令可在调用python脚本手动设置。

3.将python固定至jar包内部,减少config.properties文件;将test.txt固定至jar包内部,减少test.txt文件(对macos来说,windows还未适配)

后续看看windows怎么减少config.properties文件和test.txt文件,文件说明在最下面都有解释

基本已经完成我所需要的功能了,后续看有必要再次更新

2021.8.8更新 v0.2

1.批量模块更改为python批量,默认用的python3,所以需要配置一下python3命令。(emmm后续再看看改成go试试)

2.添加finalshell密码解密

3.添加seeyon数据库密码解密

注:

1.增加了pythonexp/poc2jarpiliang.py、url.txt文件,最好重新下载一遍项目里的txt

2.property/config.properties增加python2、python3,python脚本默认python2执行

python批量

poc2jar 常见漏洞验证利用工具

finalshell密码解密(支持批量)

poc2jar 常见漏洞验证利用工具

seeyon数据库密码解密(支持批量)

poc2jar 常见漏洞验证利用工具

项目地址

GitHub

https://github.com/f0ng/poc2jar

下载地址

①GitHub:

②云中转网盘:

yzzpan.com/#sharefile=DcO92G3o_23927
解压密码:www.ddosi.org

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注