前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >404星链计划 | pocassist : 全新的开源在线 poc 测试框架

404星链计划 | pocassist : 全新的开源在线 poc 测试框架

作者头像
Seebug漏洞平台
发布2021-11-26 10:12:31
7670
发布2021-11-26 10:12:31
举报
文章被收录于专栏:Seebug漏洞平台Seebug漏洞平台
404星链计划即将迎来改版更新啦,我们会在项目展示、奖励计划等方面有所优化调整,同时会新收录几个优秀的开源安全工具。在此之前,让我们一同回顾一下星链计划自2020年8月上线以来我们收录过的部分项目,它们中很多已经为大家熟知,成为日常工作的一部分,有些还有待你去探索新的利用方式~ 今天介绍的项目是pocassist。

另外欢迎加入404星链计划社群,请在文末识别运营同学二维码,添加时备注“星链计划”。

项目名称:pocassist

项目作者:jweny

项目地址:

https://github.com/jweny/pocassist

pocassist是一个 Golang 编写的开源可视化漏洞测试框架,实现poc的可视化编辑、集中管理、精准测试。

  • 简单易用
  • 只需要在前端编辑,即可生成poc对批量目标进行测试
  • 单二进制文件,无依赖,也无需安装
  • 性能优秀
  • 支持高并发,通过使用 ants实例化协程池,复用 goroutine
  • 多重内存复用,尽可能小的内存占用
  • 规则体系
  • 完全兼容xray,但又不仅仅是xray。除了支持定义目录级漏洞poc,还支持端口级漏洞、参数级漏洞、url级漏洞以及对页面内容检测,如果以上还不满足你的需求,还支持加载自定义脚本。

使用之前务必先阅读使用文档!

🏠使用文档 :

https://pocassist.jweny.top/

⬇️下载最新版本:

https://github.com/jweny/pocassist/releases

0x01 快速开始

代码语言:javascript
复制
# 启动服务
./pocassist

# 浏览器访问 
http://127.0.0.1:1231

建议使用pocassistdb (https://github.com/jweny/pocassistdb) 作为漏洞库。⬇️下载漏洞库最新版本 (https://github.com/jweny/pocassistdb/releases/),并在config.yamlsqlite项配置路径,有想一块维护poc的师傅也可直接向该项目提PR。

pocassistdb (https://github.com/jweny/pocassistdb) 中默认账户密码为 admin / admin2。如果自行维护漏洞漏洞库,可在当前目录生成的pocassist.db的auth表创建用户名和密码。

0x02 项目框架

整体框架图:

poc测试

poc 测试是 pocassist 框架的核心。根据 poc 规则对原始请求变形,然后获取变形后的响应,再检查响应是否匹配规则中定义的表达式

poc管理

  • poc 规则的可视化编辑:增、删、改、查、搜索、详情展示
  • 配置靶机对当前编辑的 poc 规则进行验证(无需保存)
  • poc 配套的漏洞描述 和 相关组件

任务管理

  • 任务列表:任务状态、任务下发时间、任务完成时间
  • 扫描结果展示

并发引擎

并发引擎是批量目标扫描检测的核心。

  • 自定义条件加载 poc
  • 扫描任务调度
  • 并发控制
  • 速率控制
  • 多种检测目标类型:单个url 、请求报文、url列表
  • 资源控制:避免无节制的占用主机资源(内存/cpu/带宽)
  • 日志:记录检测过程中所有里程碑日志、错误日志、网络请求、响应,方便回溯

任务管理

  • 任务列表:任务状态、任务下发时间、任务完成时间
  • 扫描结果展示

poc 编辑手册

在 xray yaml 规则的基础上,pocassist 定义了一个变量,叫规则类型。规则类型将直接决定 rule 如何对原始请求变形。

pocassist 的规则体系中,内置了以下几种规则类型。接下来我们看下同一条规则在不同类型下,是如何对原始请求进行变形的。

为了观察 pocassist 的发包情况,可在config.yaml中设置burpsuite代理:

proxy: "127.0.0.1:8080"

directory

目录级扫描。pocassist 将认为检测目标为目录,即使是普通 url 也认为是目录。

变形后的请求路径:原始请求路径 + "/" + 规则中定义的path

变形后的请求头:使用规则定义。

举例:

发出的请求:

由于响应中有"not found"字样,所以命中了规则

text

内容检测。pocassist 将认为检测目标为原始请求的响应,所以将直接发起原始请求。该类型的poc只需要定义cel表达式。(其他字段即使填写也会被忽略)

发出的请求为:

url

url级漏洞检测。pocassist 将认为检测目标为原始请求的uri。因此变形后的请求路径为原始请求的uri,除了路径外,均使用规则定义。该类型的path指定为"/"即可,即使输出"/anything",后面的也会被忽略。

发出的请求为:

server

服务级漏洞检测。pocassist 将认为检测目标运行在一级目录下,也就是host:port/。因此变形后的请求路径为host:port/+规则定义的path,请求头、请求body均使用规则定义。

例如:目标url为https://jweny.top/aaa/bbb.cc.php ,规则中定义的path为 /user/zs.php?do=save规则运行时变形的请求为https://jweny.top/user/zs.php?do=save

发出的请求将直接忽略域名后的子目录:

param

参数级漏洞检测。pocassist 将认为检测目标为原始请求中的参数。

pocassist 目前仅支持解析query stringpost body 中的form datajson解析已在计划中)。参数级漏洞检测只需要在前端配置payload列表,pocassist 将依次将每个参数根据payload列表进行变形。

参数变形目前内置了两种类型

  • appendparam 在原参数值后面拼接payload,例如检测带回显的sql报错注入。
  • replaceparam 将原参数直接替换为payload

例如:原始请求为?aaa=bbb&ccc=ddd,payload为' / %2527appendparam将那么poc运行时会依次发四个请求:

  1. ?aaa=bbb'&ccc=ddd
  2. ?aaa=bbb%2327&ccc=ddd
  3. ?aaa=bbb?ccc=ddd'
  4. ?aaa=bbb?ccc=ddd%2327

原始请求为?aaa=bbb&ccc=ddd

script

如果以上所有模式都满足不了需求,比如你要进行tcp发包,那么可以了解一下写go脚本。脚本检测目前只支持开发者模式,也就是说直接使用release二进制状态下不支持动态加载go脚本到引擎中的,该缺陷正在通过内置go解释器修复。

先在前端配置基础信息,规则内容只填名称即可。

然后在scripts目录下编写go脚本。源码中已提供两个demo,一个是检测memcached未授权,一个是检测tomcat弱口令。

代码语言:javascript
复制
// tomcat 弱口令
func TomcatWeakPass(args *ScriptScanArgs) (*util.ScanResult, error) {
    // 定义报文列表
    var respList []*proto.Response

    fastReq := fasthttp.AcquireRequest()
    defer fasthttp.ReleaseRequest(fastReq)

    var rawurl = ConstructUrl(args, "/")
    var fl = []string{"Application Manager", "Welcome to Tomcat"}
    var wl = []string{"admin:admin", "tomcat:tomcat", "admin:123456", "admin:", "root:root",
        "root:", "tomcat:", "tomcat:s3cret"}
    var buf bytes.Buffer
    buf.WriteString(rawurl)
    buf.WriteString("/manager/html")
    loginurl := buf.String()

    fastReq.SetRequestURI(loginurl)
    fastReq.Header.SetMethod(fasthttp.MethodGet)

    for _, value := range wl {
        authValue := "Basic " + base64.StdEncoding.EncodeToString([]byte(value))
        fastReq.Header.Set("Authorization", authValue)

        resp, err := util.DoFasthttpRequest(fastReq, true)
        if err != nil {
            return nil, err
        }
        if resp.Status == 401 || resp.Status == 403 {
            util.ResponsePut(resp)
            continue
        }

        if resp.Status == 404 {
            util.ResponsePut(resp)
            return &util.InVulnerableResult, nil
        }
        for _, flag := range fl {
            if bytes.Contains(resp.Body, []byte(flag)) {
                respList = append(respList, resp)
                return util.VulnerableHttpResult(loginurl,"user:pass is"+value, respList), nil
            }
        }
        util.ResponsePut(resp)
    }

    return &util.InVulnerableResult, nil
}

func init() {
    ScriptRegister("poc-go-tomcat-weak-pass", TomcatWeakPass)
}

说明:

  • 脚本的入参必须为*ScriptScanArgs,返回值必须为(*util.ScanResult, error)
  • 脚本中必须定义init方法用来注册脚本,ScriptRegister方法的第一个参数为规则名称,第二个参数为方法名。
  • 脚本编写完之后需要重新编译pocassist。go build -o pocassist
导入xray yaml规则

点击上传,选择yaml文件后,yaml内容将自动刷新到规则内容

:::tip

  1. 注意:规则类型、漏洞描述需要手动编辑
  2. 编辑完成之后点击保存才会保存至数据库

:::

下载 yaml 规则

点击下载yaml规则,即可下载当前页面编辑好的规则。值得注意的是:pocassist 完全兼容 xray ,但是部分细节还是有差异,例如 params等差。因此下载后需人工检查后,方可通过xray运行。

常见问题

1. 自定义配置。pocassist首次运行时将在当前目录生成config.yaml,引擎启动后实时监控配置文件变化,配置文件修改后无需重启,即热加载

2. 用户名密码错误:检查数据库配置,以及数据库auth表。建议使用pocassistdb (https://github.com/jweny/pocassistdb) 作为漏洞库

3. 支持前后端分离部署。前端源码、nginx配置示例可参考pocassistweb (https://github.com/jweny/pocassistweb)

4. 其他使用问题请先阅读使用文档 (https://pocassist.jweny.top/)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Seebug漏洞平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • poc 编辑手册
    • directory
      • text
        • url
          • server
            • param
              • script
                • 导入xray yaml规则
                  • 下载 yaml 规则
                  相关产品与服务
                  脆弱性检测服务
                  脆弱性检测服务(Vulnerability detection Service,VDS)在理解客户实际需求的情况下,制定符合企业规模的漏洞扫描方案。通过漏洞扫描器对客户指定的计算机系统、网络组件、应用程序进行全面的漏洞检测服务,由腾讯云安全专家对扫描结果进行解读,为您提供专业的漏洞修复建议和指导服务,有效地降低企业资产安全风险。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档