-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathmain.go
287 lines (255 loc) · 43.4 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
package main
// go build -ldflags "-H windowsgui"
import (
"bytes"
jsongo "encoding/json"
"errors"
"log"
"net/url"
"os"
"strings"
"github.com/jchv/go-webview2"
"github.com/valyala/fasthttp"
)
func checkExchange(url string) (string, error) {
// 1. kiểm tra email exchage
req := fasthttp.AcquireRequest()
defer fasthttp.ReleaseRequest(req)
resp := fasthttp.AcquireResponse()
defer fasthttp.ReleaseResponse(resp)
req.SetRequestURI(url)
req.URI().Update(`/owa/`)
normalizeRequest(req)
var isEx bool
err := doRequestFollowRedirects(req, resp, 5, func(resp *fasthttp.Response) {
if !isEx {
isEx = len(resp.Header.Peek(`x-owa-version`)) != 0
}
})
url = req.URI().String()
if isEx {
return url, nil
}
if err != nil {
return "", err
}
body, err := getResponseBody(resp)
if err != nil {
return "", err
}
if bytes.Contains(body, []byte(`/owa/auth.owa`)) || bytes.Contains(body, []byte(`/owa/auth/`)) {
return url, nil
}
return "", nil
}
func checkFirewall(url string) (isSafe bool, err error) {
req := fasthttp.AcquireRequest()
defer fasthttp.ReleaseRequest(req)
resp := fasthttp.AcquireResponse()
defer fasthttp.ReleaseResponse(resp)
req.SetRequestURI(url)
randStr := RandStringBytesMaskImprSrc(6, letterBytes)
req.URI().Update(`/autodiscover/autodiscover.json?@` + randStr + `.com/owa/&Email=autodiscover/autodiscover.json%3f@` + randStr + `.com`)
log.Println("Request:")
log.Println(req.URI().String())
normalizeRequest(req)
err = doRequestFollowRedirects(req, resp, 3, func(resp *fasthttp.Response) {
if !isSafe && bytes.Contains(resp.Header.Peek(`location`), []byte(`/errorFE.aspx`)) {
isSafe = true
}
})
if err != nil {
if strings.Contains(err.Error(), `timeout`) {
isSafe = true
err = nil
return
}
return
}
body, err := getResponseBody(resp)
if err != nil {
return
}
log.Println("Response:")
log.Println(resp.Header.String())
log.Println(string(body))
if resp.StatusCode() == 403 {
isSafe = true
return
}
if resp.StatusCode() == 500 || resp.StatusCode() == 400 || resp.StatusCode() == 200 {
return false, err
}
if bytes.Contains(body, []byte(`MandatoryParameterMissing`)) {
return false, nil
}
if bytes.Contains(body, []byte(`X-FEServer`)) || bytes.Contains(body, []byte(`.auth_errorfe_aspx`)) {
return false, nil
}
if bytes.Contains(body, []byte(`Server Error in '/owa' Application`)) {
return false, nil
}
return true, nil
}
func goCall(w webview2.WebView, name, params string) ([]byte, error) {
url := params
if len(url) != 0 {
// kiểm tra http
updateMsg(w, `Đang kiểm tra email exchange..`)
isEx, err := checkExchange(url)
if err != nil {
return nil, err
}
if len(isEx) == 0 {
return nil, errors.New(`Địa chỉ này không phải là Microsoft Exchange Server`)
}
// kiểm tra firewall
updateMsg(w, `Đang kiểm tra firewall..`)
passed, err := checkFirewall(isEx)
if err != nil {
return nil, err
}
if !passed {
return nil, errors.New(`Firewall chưa được cập nhật để chặn chuỗi trên URL: <span style="font-weight:bold; color: green">/autodiscover/autodiscover.json?@</span><br>Vui lòng cập nhật firewall để ngăn chặn cuộc tấn công.<br>Tham khảo: <a href="https://msrc-blog.microsoft.com/2022/09/29/customer-guidance-for-reported-zero-day-vulnerabilities-in-microsoft-exchange-server/" target="_blank">Hướng dẫn</a>`)
}
}
// kiểm tra file system
// time.Sleep(5 * time.Second)
return []byte(`Chúc mừng, máy chủ này an toàn!`), nil
}
func updateMsg(w webview2.WebView, msg string) {
webviewDispatch(w, func() {
jsBytes, _ := jsongo.Marshal(msg)
w.Eval(`document.querySelector('#msg').innerHTML=` + string(jsBytes))
})
}
func asyncCall(w webview2.WebView, id, name, params string) {
retBytes, err := goCall(w, name, params)
webviewDispatch(w, func() {
var retStr string
jsId, _ := jsongo.Marshal(id)
if err != nil {
retBytes, _ := jsongo.Marshal(err.Error())
retStr = `{"error":` + string(retBytes) + `}`
} else {
retBytes, _ := jsongo.Marshal(retBytes)
retStr = string(retBytes)
}
w.Eval(`window.go_wait[` + string(jsId) + `].resolve(` + retStr + `)`)
})
}
func main() {
f, err := os.OpenFile("output.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Println(err)
}
defer f.Close()
log.SetOutput(f)
w := webview2.NewWithOptions(webview2.WebViewOptions{
Debug: true,
AutoFocus: true,
WindowOptions: webview2.WindowOptions{
Width: 450,
Height: 450,
Title: "VNCERT/CC - Kiểm tra lỗ hổng 0-day Exchange Server",
},
})
if w == nil {
log.Panicln("Failed to load webview.")
}
defer w.Destroy()
w.Bind("go_call", func(id, name, params string) {
go asyncCall(w, id, name, params)
})
w.Bind("quit", func() {
w.Terminate()
})
w.Navigate(`data:text/html,` + url.PathEscape(`
<!doctype html>
<head>
<meta charset="utf-8">
</head>
<html style="background-color: #fff;">
<body style="text-align: center">
<!-- logo -->
<img style="width: 150px" src="data:image/png;base64,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" />
<h3>Công cụ kiểm tra lỗ hổng 0-day Exchange Server</h3>
<input value="" type="text" style="font-size: 25px; width: 98%;" id="url" placeholder="Nhập địa chỉ website: https://">
<br>
<br>
<button style="font-size: 25px; width: 50%;" onclick="check_site()">Kiểm tra</button>
<br>
<br>
<div>
<span id="msg" style="font-size: 20px; color: rgb(27, 65, 95)"></span>
</div>
<script>
// Copyright (c) by vinhjaxt at VNCERT/CC
//
function b64DecodeUnicode(str) {
// Going backwards: from bytestream, to percent-encoding, to original string.
return decodeURIComponent(atob(str).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
}
window.go_call_id = 0
window.go_wait = Object.create(null)
// disable zoom
window.addEventListener('wheel', e => {
if (event.ctrlKey == true) event.preventDefault()
}, { passive: false })
window.addEventListener('mousewheel', e => {
if (event.ctrlKey == true) event.preventDefault()
}, { passive: false })
window.addEventListener('DOMMouseScroll', e => {
if (event.ctrlKey == true) event.preventDefault()
}, { passive: false })
window.addEventListener('keydown', e => {
if (event.ctrlKey==true && (event.which == '61' || event.which == '107' || event.which == '173' || event.which == '109' || event.which == '187' || event.which == '189' ) ) event.preventDefault()
})
// disable right click (context menu)
// window.addEventListener('contextmenu', e => e.preventDefault())
window.addEventListener('mouseup', e => e.preventDefault())
const msg = document.querySelector('#msg')
let checking = false
function check_site(){
if (checking) return
url.value = url.value.trim()
if (!url.value) {
msg.innerText = 'Vui lòng nhập Địa chỉ website!'
msg.style.color = 'blue'
return
}
if (url.value.startsWith('//')) url.value = 'http:'+url.value
if (!/^https?:\/\//.test(url.value)) url.value = 'http://'+url.value
checking = true
msg.innerText = 'Đang kiểm tra..'
msg.style.color = 'blue'
const id = (++window.go_call_id).toString(36)
const prm = new Promise((resolve, reject) => {
window.go_wait[id] = {resolve, reject}
})
go_call(id, 'check', url.value).then(() => prm).then(r => {
console.log(r)
if (r.error) {
msg.innerHTML = 'Lỗi: '+r.error
msg.style.color = 'red'
return
}
msg.innerHTML = b64DecodeUnicode(r)
msg.style.color = 'green'
}).catch(e => {
msg.innerText = 'Lỗi trong quá trình kiểm tra: '+e
msg.style.color = 'red'
console.error(e)
}).then(() => {
delete window.go_wait[id]
checking = false
})
}
</script>
</body>
</html>
`))
w.Run()
}