404星链计划 | pocassist : 全新的开源在线 poc 测试框架
404星链计划即将迎来改版更新啦,我们会在项目展示、奖励计划等方面有所优化调整,同时会新收录几个优秀的开源安全工具。在此之前,让我们一同回顾一下星链计划自2020年8月上线以来我们收录过的部分项目,它们中很多已经为大家熟知,成为日常工作的一部分,有些还有待你去探索新的利用方式~ 今天介绍的项目是pocassist。
另外欢迎加入404星链计划社群,请在文末识别运营同学二维码,添加时备注“星链计划”。
项目名称:pocassist
项目作者:jweny
项目地址:
https://github.com/jweny/pocassist
简单易用 只需要在前端编辑,即可生成poc对批量目标进行测试 单二进制文件,无依赖,也无需安装 性能优秀 支持高并发,通过使用 ants实例化协程池,复用 goroutine多重内存复用,尽可能小的内存占用 规则体系 完全兼容xray,但又不仅仅是xray。除了支持定义目录级漏洞poc,还支持端口级漏洞、参数级漏洞、url级漏洞以及对页面内容检测,如果以上还不满足你的需求,还支持加载自定义脚本。
0x01 快速开始
# 启动服务
./pocassist
# 浏览器访问
http://127.0.0.1:1231config.yaml的sqlite项配置路径,有想一块维护poc的师傅也可直接向该项目提PR。0x02 项目框架
poc测试
poc管理
poc 规则的可视化编辑:增、删、改、查、搜索、详情展示 配置靶机对当前编辑的 poc 规则进行验证(无需保存) poc 配套的漏洞描述 和 相关组件
任务管理
任务列表:任务状态、任务下发时间、任务完成时间 扫描结果展示
并发引擎
自定义条件加载 poc 扫描任务调度 并发控制 速率控制 多种检测目标类型:单个url 、请求报文、url列表 资源控制:避免无节制的占用主机资源(内存/cpu/带宽) 日志:记录检测过程中所有里程碑日志、错误日志、网络请求、响应,方便回溯
任务管理
任务列表:任务状态、任务下发时间、任务完成时间 扫描结果展示
poc 编辑手册
规则类型。规则类型将直接决定 rule 如何对原始请求变形。config.yaml中设置burpsuite代理:proxy: "127.0.0.1:8080"directory
原始请求路径 + "/" + 规则中定义的path。text
url
server
host:port/。因此变形后的请求路径为host:port/+规则定义的path,请求头、请求body均使用规则定义。https://jweny.top/aaa/bbb.cc.php ,规则中定义的path为 /user/zs.php?do=save规则运行时变形的请求为https://jweny.top/user/zs.php?do=save。param
query string和post body 中的form data(json解析已在计划中)。参数级漏洞检测只需要在前端配置payload列表,pocassist 将依次将每个参数根据payload列表进行变形。appendparam在原参数值后面拼接payload,例如检测带回显的sql报错注入。replaceparam将原参数直接替换为payload
?aaa=bbb&ccc=ddd,payload为' / %2527。appendparam将那么poc运行时会依次发四个请求:?aaa=bbb'&ccc=ddd?aaa=bbb%2327&ccc=ddd?aaa=bbb?ccc=ddd'?aaa=bbb?ccc=ddd%2327
?aaa=bbb&ccc=ddd。script
// 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 规则
params等差。因此下载后需人工检查后,方可通过xray运行。常见问题
config.yaml,引擎启动后实时监控配置文件变化,配置文件修改后无需重启,即热加载404星链计划 | Stowaway : 专为渗透测试工作者制作的多级代理工具
404星链计划 | 蚁剑绕WAF进化图鉴
404星链计划 |GShark:多平台的敏感信息监测工具