Skip to content

Commit cbae89f

Browse files
committed
Improve origin check
1 parent 1d83cbe commit cbae89f

File tree

4 files changed

+60
-2
lines changed

4 files changed

+60
-2
lines changed

core/detecter.go

+22-1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ func (r *Record) RequestScripts(scriptType string, scripts []string) bool {
3939
return result
4040
})
4141

42+
// Component get component content
43+
vm.Set("Component", func(call otto.FunctionCall) otto.Value {
44+
componentName := call.Argument(0).String()
45+
content := GetComponent(record, componentName)
46+
fmt.Println(content)
47+
result, _ := vm.ToValue(true)
48+
return result
49+
})
50+
4251
vm.Set("PrintVarf", func(call otto.FunctionCall) otto.Value {
4352
varName := call.Argument(0).String()
4453
fmt.Println(record.Request.Target[varName])
@@ -512,8 +521,19 @@ func GetComponent(record Record, component string) string {
512521
utils.DebugF("Get Component: %v", component)
513522
switch component {
514523
case "orequest":
524+
515525
return record.OriginReq.Beautify
516-
case "oresponse":
526+
case "oresheaders", "oheaders", "ohead", "oresheader":
527+
beautifyHeader := fmt.Sprintf("%v \n", record.OriginRes.Status)
528+
for _, header := range record.OriginRes.Headers {
529+
for key, value := range header {
530+
beautifyHeader += fmt.Sprintf("%v: %v\n", key, value)
531+
}
532+
}
533+
return beautifyHeader
534+
case "obody", "oresbody":
535+
return record.OriginRes.Body
536+
case "oresponse", "ores":
517537
return record.OriginRes.Beautify
518538
case "request":
519539
return record.Request.Beautify
@@ -572,6 +592,7 @@ func RegexSearch(component string, analyzeString string) (string, bool) {
572592
result = true
573593
extra = strings.Join(matches, "\n")
574594
}
595+
utils.DebugF("Component: %v", component)
575596
utils.DebugF("analyzeRegex: %v -- %v", analyzeString, result)
576597
return extra, result
577598
}

core/runner.go

+3
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ func (r *Runner) GetRequests() {
109109
rec.Request.Target = r.Target
110110
rec.Sign = r.Sign
111111
rec.Opt = r.Opt
112+
// assign origins here
113+
rec.OriginReq = r.Origin.Request
114+
rec.OriginRes = r.Origin.Response
112115

113116
r.Records = append(r.Records, rec)
114117
}

libs/version.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package libs
22

33
const (
44
// VERSION current Jaeles version
5-
VERSION = "beta v0.14.4"
5+
VERSION = "beta v0.14.5"
66
// AUTHOR author of this
77
AUTHOR = "@j3ssiejjj"
88
// DOCS link to official documentation

test-signatures/with-origin.yaml

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
id: sensitive-dotfile-01
2+
donce: true
3+
info:
4+
name: Common Dot Secret Files (Without Extension)
5+
risk: Potential
6+
confidence: Tentative
7+
8+
params:
9+
- root: "{{.BaseURL}}"
10+
11+
origin:
12+
method: GET
13+
redirect: false
14+
headers:
15+
- User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55
16+
url: >-
17+
{{.BaseURL}}/.hopefullyget404
18+
19+
variables:
20+
- secret: |
21+
.7z
22+
.DS_Store
23+
requests:
24+
- method: GET
25+
redirect: false
26+
headers:
27+
- User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3984.0 Safari/537.36
28+
url: >-
29+
{{.root}}/{{.secret}}
30+
detections:
31+
# - >-
32+
# StatusCode() == 200 && !RegexSearch("response", "(?i)(Oops!|Whoops!|AutodiscoverService|not\sfound|Request\sRejected|Access\sDenied|a\sbad\sURL|has\sbeen\slocked)") && (RegexSearch("resHeaders", ".*Content-Type:.*octet-stream") || RegexSearch("resHeaders", "text/plain")) && (Math.abs(ContentLength() - OriginContentLength()) > 100) && !RegexSearch("body", "(?i)(\<\!doctype|\<html|\<head|\<body)") && ContentLength('body') > 100 && !RegexSearch("oHeaders", "(?m)text/plain")
33+
- >-
34+
Component('obody') && Component('oHeaders') && Component('ores')

0 commit comments

Comments
 (0)