Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kunpeng!一款开源的跨语言漏洞POC框架 #1

Open
ywolf opened this issue Jan 30, 2019 · 14 comments
Open

Kunpeng!一款开源的跨语言漏洞POC框架 #1

ywolf opened this issue Jan 30, 2019 · 14 comments

Comments

@ywolf
Copy link
Member

ywolf commented Jan 30, 2019

团队介绍

先简单介绍一下我们,OpenSec,顾名思义,专注于安全领域的开源组织。

于2019年1月1日成立,成员名单(a-z): FeeiMediceannearglephith0nwolf ,目前成员作为核心开发的开源项目(此前个人或团队的项目)累计超过1.5万star,例如:vulhubVulAppsyulong-hidsxunfengcobra,我们计划将在后续工作之余开发输出一系列的安全开源项目,包括不限于:基础库项目、产品项目、实验性项目。

背景

作为漏洞发现类系统的核心:漏洞库,个人觉得目前存在着以下几个问题

  1. 维护成本高

    一款扫描类的系统完成后,需要持续投入人力去编写最新的漏洞检测POC,其花费的人力成本远高过系统的开发。

  2. 集成成本高

    自行维护成本高,那如果直接集成现用的POC库如何呢。众所周知,目前POC基本上为Python和Ruby语言编写,Ruby主要为msf的项目,其收录的插件质量较高(高危害、高频率),且更新速度快,若要集成是首选的项目,但由于其为ruby语言开发,大部分安全开发更多擅长的是python,以及其插件与框架粘性较高,转换为python插件也需要一定成本(包括完成后的测试),虽然也有一些办法实现直接调用其框架来自动化验证,但由于扫描基本上有分布式需求和其他自定义的功能,或者不需要那么有攻击性仅仅只需要验证是否存在漏洞,强行融合起来效率不高也不是特别优雅。python项目的POC则较为分散,也暂未看到有持续维护最新漏洞POC的项目,基本上所了解到的大部分为老旧的历史漏洞和非常小众的CMS漏洞(十年遇不到一次的那种),高质量(高危害、高频率)POC较少,除了凑数量外集成的价值较低。

  3. 环境和依赖库问题

    部分漏洞插件需要第三方库和环境依赖(例如各类服务协议的认证爆破),环境部署可能遇到下载超时和部分c编写的库编译失败,还有新插件需要新的第三方库更新等问题,对于几乎必备的分布式需求,如果能避免这类问题更好,虽说这些可能不算问题,只是比较琐碎麻烦,也有很多解决的办法,例如:节点打包成docker使用k8s调度启动或者类似bugscan那样所有插件不使用第三方库开发,但更希望有其他更轻的解决办法,也不需要考虑环境和第三方库问题。

基于以上问题,于是有了这个新项目:Kunpeng

它是一个纯粹的POC漏洞库,不需要考虑环境依赖问题,不需要自己维护POC,各种语言均可以调用,单文件更新方便。就像一个黑盒子,你只需要告诉他你要检测的目标和目标名(例如:mysql、ssh、tomcat),它返回检测结果。

下面就是这个项目的正式介绍信息了(目前仅集成几十个样例漏洞POC,后续会持续添加)。

简介

Kunpeng是一个Golang编写的开源POC检测框架,集成了包括数据库、中间件、web组件、cms等等的漏洞POC,可检测弱口令、SQL注入、XSS、RCE等漏洞类型,通过此项目可快速对目标进行安全漏洞检测,比攻击者快一步发现风险漏洞。

这不是一个POC框架轮子,而是为了解决轮子问题而设计的,也不仅仅只是框架,定位是期望成为一个大家共同维护的漏洞POC库,以动态链接库的形式提供调用,安全开发人员只需专注于相关漏洞检测系统的业务逻辑代码实现,而不必各自重复的耗费精力维护漏洞库。

特点

  • 开箱即用,无需安装任何依赖
  • 跨语言使用,动态链接库形式提供调用
  • 单文件,更新方便,直接覆盖即可
  • 开源社区维护,内置常见漏洞POC
  • 最小化漏洞验证和理论验证,尽量避免攻击行为

使用场景

渗透测试辅助工具:例如msf,交互控制台 -> Kunpeng

网络资产安全监控:例如巡风,端口扫描 -> 指纹识别 -> kunpeng 或 nmap -> kunpeng

扫描器: 作为扫描器的漏洞库

更多使用场景可自由发挥

下载地址

releases

压缩包内的kunpeng_go.so为GO语言专版,其余语言使用 kunpeng_c.so

使用方法

不管使用哪种语言,加载动态链接库后,参考接口使用格式,传入任务JSON,返回检测结果,也可启动WEB API接口,通过http协议进行调用。

接口调用说明

/*  发起任务,传入任务JSON,格式为:
    {
        "type": "web", //目标类型web或者service
        "netloc": "http://xxx.com", //目标地址,web为URL,service格式为123.123.123.123:22
        "target": "wordpress", //目标名称,决定使用哪些POC进行检测
        'meta':{
            'system': 'windows',  //操作系统,部分漏洞检测方法不同系统存在差异,提供给插件进行判断
            'pathlist':[], //目录路径URL列表,部分插件需要此类信息,例如列目录漏洞插件
            'filelist':[], //文件路径URL列表,部分插件需要此类信息,例如struts2漏洞相关插件
            'passlist':[] //自定义密码字典,留空则使用内置默认字典
        }
    }
    返回是否存在漏洞和漏洞检测结果
*/
Check(taskJSON string) (bool, []map[string]string) 

// 获取插件列表信息
GetPlugins() []map[string]string


/*  配置设置,传入配置JSON,格式为:
    {
        "timeout": 15, // 插件连接超时
        "aider": "http://123.123.123.123:8088", // 漏洞辅助验证接口,部分漏洞无法通过回显判断是否存在漏洞,可通过辅助验证接口进行判断。
        "http_proxy": "http://123.123.123.123:1080", // HTTP代理,所有插件http请求流量将通过代理发送(需使用内置的http请求函数util.RequestDo)
        'pass_list': ['passtest'], // 默认密码字典,不定义则使用硬编码在代码里的小字典
        'extra_plugin_path': '/tmp/plugin/' // 除已编译好的插件(Go、JSON)外,可指定额外插件目录(仅支持JSON插件),指定后程序会周期读取加载插件
    }
*/
SetConfig(configJSON string)

// 开启web接口,如果觉得类型转换麻烦或者想多个系统共用一个实例,可开启后通过web接口进行调用,webapi调用格式请查看例子:/example/call_webapi_test.py
StartWebServer()

调用例子

img

更多细节和介绍请到Github项目主页查看:https://github.com/opensec-cn/kunpeng

坚持不易,你们的转发、Star和反馈是我们最大的动力。

@ywolf ywolf changed the title Kunpeng!一个开源的跨语言漏洞POC框架 Kunpeng!一款开源的跨语言漏洞POC框架 Jan 30, 2019
@FeeiCN
Copy link
Member

FeeiCN commented Jan 30, 2019

👍支持!

@cyjaysun
Copy link

NB 感谢分享

@zh0ub0
Copy link

zh0ub0 commented Jan 31, 2019

谢谢分享 👍

@EXHades
Copy link

EXHades commented Feb 1, 2019

支持!

@zjhiphop
Copy link

zjhiphop commented Feb 1, 2019

顶起!!!!

@xiaofengtongxue
Copy link

分享是一种美德

@w4ctech
Copy link

w4ctech commented Apr 24, 2019

thanks

@lihaoran93
Copy link

lihaoran93 commented Jun 4, 2019

我尝试用python3调用, 但是提示我kunpeng_c.so: cannot read file data , 是我的用法哪里不对么

@ywolf
Copy link
Member Author

ywolf commented Jun 4, 2019

@lihaoran93 参考kunpeng项目上的调用例子

@aviraonepiece
Copy link

感谢分享!非常好的项目!

@wujunze
Copy link

wujunze commented Dec 23, 2019

感谢分享! 非常有意思的项目 👍

@lily79
Copy link

lily79 commented Jul 22, 2020

赞!学习!

@C1anc3y
Copy link

C1anc3y commented Oct 31, 2020

👍

@fa1c0n1
Copy link

fa1c0n1 commented Feb 24, 2021

和pocsuite3是同类的东东?比pocsuite3好在哪里?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests