wordpress企业仿站,吉林智能网站建设制作,商会网站建设开发,课程商城网站模板xray webhook
xray可以通过webhook传递扫描信息#xff0c;官方文档也是一笔带过#xff0c;可能大多数人都不清楚#xff0c;或者仅仅知道有这么个东西#xff0c;但是不知道怎么使用#xff0c;webhook是xray被动监听模式下的一种输出结构和方式。相比输出Json和txt格式…xray webhook
xray可以通过webhook传递扫描信息官方文档也是一笔带过可能大多数人都不清楚或者仅仅知道有这么个东西但是不知道怎么使用webhook是xray被动监听模式下的一种输出结构和方式。相比输出Json和txt格式webhook输出漏洞是实时的试问谁不想第一时间看到漏洞信息呢。前阵子我通过抓取流量的方式抓到了参数然后把这个请求解了开放给大家看下免得再在解包上浪费精力
type Webhookpara struct {Data interface{} json:dataType string json:type
}// web_vuln模式下的xray结构
type ExtraParam struct {Param map[string]interface{} json:param
}
type Detail struct {Addr string json:addrExtra ExtraParam json:extraPayload string json:payloadSnapshot [][]string json:snapshot
}
type Target struct {Url string json:url
}
type VulnData struct {CreateTime int64 json:create_timeDetail Detail json:detailPlugin string json:pluginTarget Target json:target
}// web_statistic模式下的xray结构
type StatisticData struct {AverageResponseTime float64 json:average_response_timeNumFoundUrls int json:num_found_urlsNumScannedUrls int json:num_scanned_urlsNumSentHttpRequests int json:num_sent_http_requestsRatioFailedHttpRequests float64 json:ratio_failed_http_requestsRatioProgress float64 json:ratio_progress
}// 传输类型为statistic的json结构体结构扫描器状态信息
func StatistictoJSON(a interface{}) StatisticData {jsonStr, err1 : json.Marshal(a)if err1 ! nil {fmt.Println(序列化xray web_statistic类型数据失败, err1)logging.RuntimeLog.Error(err1)}var res StatisticDataif err : json.Unmarshal([]byte(jsonStr), res); err ! nil {fmt.Println(反序列化xray web_statistic类型数据失败, err)logging.RuntimeLog.Error(err)}return res}// 传输类型为vuln的json结构体结构详细漏洞信息
func VulntoJSON(a interface{}) VulnData {jsonstr, err1 : json.Marshal(a)if err1 ! nil {fmt.Println(序列化xray web_vuln类型数据失败, err1)logging.RuntimeLog.Error(err1)}var res VulnDataif err : json.Unmarshal([]byte(jsonstr), res); err ! nil {fmt.Println(反序列化xray web_vuln类型数据失败, err)logging.RuntimeLog.Error(err)}return res
}上面是结构及解析下面是一个基于golang gin使用例子有的字段时有时无这种字段我都放弃掉了如果都要判断代码量会很多,type 的类型有 “web_statistic” “web_vuln”“host_vuln” “subdomain”等类型但是被动下只有web_statistic和web_vuln才有意义。
// XrayWebHook 用于接收xray json请求
func XrayWebHook(c *gin.Context) {var req Webhookparaif err : c.ShouldBindJSON(req); err ! nil {c.JSON(400, gin.H{status: 1,mes: err.Error(),})return}if req.Type web_statistic {var r StatisticDatafmt.Println(xray web_statistic原始数据, req.Data)r StatistictoJSON(req.Data)if r.AverageResponseTime 0 {//为0扫描结束可以将此状态做进一步处理}if req.Type web_vuln {var r VulnDatar VulntoJSON(req.Data)fmt.Println(扫描目标, r.Target.Url)fmt.Println(漏洞类型, r.Plugin)fmt.Println(payload:, r.Detail.Payload)}c.JSON(200, gin.H{status: 0,mes: successfully,})
}