51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

神器!MySQL蜜罐服务GUI利用工具

|--------------------------------------------------------------------------------| | 声明: 该公众号分享的安全工具和项目均来源于网络,仅供安全研究与学习之用,如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。 |


现在只对常读和星标的公众号才展示大图推送,建议大家把 Hack分享吧 " 设为星标 ", 否则可能看不到了 !


工具介绍 @许少 师傅开源的一个 MySQL蜜罐服务利用工具,这个项目是MySQL_Fake_Server的高级版。

  • https://github.com/fnmsd/MySQL_Fake_Server

当JDBC URL可控时,特殊的MySQL服务端可以读取JDBC客户端任意文件或执行反序列化操作,完全使用Java实现部分MySQL协议,内置常见ysoserial链,一键启动,自动生成可用的payload用于测试。


GUI 使用GUI版本一键启动,启动后可以根据自己的环境输入参数,生成payload


启动:

                java -jar fake-mysql-gui.jar
              


CLI

当你的环境不允许使用GUI版时,可以使用命令行版启动,同样可以使用GUI辅助生成payload


启动:

                java -jar fake-mysql-cli.jar -p [port]
              


Docker 构建:

                docker build -t fake-mysql-server .
              

启动:

                docker run -p 3306:3306 -d fake-mysql-server
              


RPC

本项目提供了GRPC调用的方式


启动:

                java -jar fake-mysql-rpc.jar(默认启动端口9999)
              

proto:

                      syntax
                    
                     = 
                    
                      "proto3"
                    
                    ;
                  
                
                
                  
                    

                  
                
                
                  
                    
                      option
                    
                     java_package = 
                    
                      "me.n1ar4.fake.rpc"
                    
                    ;
                  
                
                
                  
                    
                      option
                    
                     java_outer_classname = 
                    
                      "FakeServerRPC"
                    
                    ;
                  
                
                
                  
                    
                      option
                    
                     java_multiple_files = 
                    
                      true
                    
                    ;
                  
                
                
                  
                    

                  
                
                
                  
                    
                      package
                    
                     me.n1ar4.fake.rpc;
                  
                
                
                  
                    

                  
                
                
                  
                    
                      service
                    
                     RPCStart {
                  
                
                
                  
                      
                    
                      rpc
                    
                     start (RPCNull) returns (RPCResp) {}
                  
                
                
                  
                      
                    
                      rpc
                    
                     stop (RPCPort) returns(RPCResp) {}
                  
                
                
                  
                    }
                  
                
                
                  
                    

                  
                
                
                  
                    
                      message
                    
                     RPCNull{}
                  
                
                
                  
                    

                  
                
                
                  
                    
                      message
                    
                     RPCResp {
                  
                
                
                  
                      
                    
                      string
                    
                     status = 
                    
                      1
                    
                    ;
                  
                
                
                  
                      
                    
                      int32
                    
                     port = 
                    
                      2
                    
                    ;
                  
                
                
                  
                    }
                  
                
                
                  
                    

                  
                
                
                  
                    
                      message
                    
                     RPCPort {
                  
                
                
                  
                      
                    
                      int32
                    
                     port = 
                    
                      1
                    
                    ;
                  
                
                
                  
                    }


注意事项

  • 参考 MySQL_Fake_Server 项目,payload从user参数传递。反序列化应以deser_开头,规则为deser_[gadget][cmd];文件读取以fileread_开头,规则为fileread[name]

  • 由于某些文件名或命令存在特殊字符,支持使用base64传递方式,方式为原有user基础上进行base64并以base64开头,例如user=deser_CB_calc.exe等于user=base64ZGVzZXJfQ0JfY2FsYy5leGU=

  • 默认文件保存在当前目录的fake-server-files下的当前时间戳目录内(自动创建目录)


本文作者: 潇湘信安

本文为安全脉搏专栏作者发布,转载请注明: https://www.secpulse.com/archives/201773.html

赞(3)
未经允许不得转载:工具盒子 » 神器!MySQL蜜罐服务GUI利用工具