@@ -11,6 +11,14 @@ import (
11
11
12
12
var SkipAdminBrute bool
13
13
14
+ var UserReg = regexp .MustCompile (`(?i)<input.*?name=['"]([^'"]*(name|user|uid|login|mail|log|account)[^'"]*).*?>` )
15
+ var PswdReg = regexp .MustCompile (`(?i)<input.*?name=['"]([^'"]*(pass|pwd|word|mima|password|mm)[^'"]*).*?>` )
16
+ var actionReg = regexp .MustCompile (`<form.*?action=['"](.*?)['"]` )
17
+
18
+ /*
19
+ loginMailbox
20
+ loginPassword
21
+ */
14
22
func getinput (inputurl string ) (usernamekey string , passwordkey string , loginurl string , ismd5 bool ) {
15
23
usernamekey = "username"
16
24
passwordkey = "password"
@@ -37,25 +45,15 @@ func getinput(inputurl string) (usernamekey string, passwordkey string, loginurl
37
45
return "" , "" , "" , false
38
46
}
39
47
}
40
- usernamelist := regexp . MustCompile ( `<input.*?name=['"]([\w\[\]]*?name[\w\[\]]*?|[\w\[\]]*?Name[\w\[\]]*?|[\w\[\]]*?user[\w\[\]]*?|[\w\[\]]*?User[\w\[\]]*?|[\w\[\]]*?USER[\w\[\]]*?)['"].*?>` ) .FindStringSubmatch (req .Body )
48
+ usernamelist := UserReg .FindStringSubmatch (req .Body )
41
49
if usernamelist != nil {
42
50
usernamekey = usernamelist [len (usernamelist )- 1 :][0 ]
43
- } else {
44
- usernamelist2 := regexp .MustCompile (`<input.*?name=['"]([\w\[\]]*?log[\w\[\]]*?|[\w\[\]]*?Log[\w\[\]]*?|[\w\[\]]*?LoG[\w\[\]]*?|[\w\[\]]*?LOG[\w\[\]]*?|[\w\[\]]*?account[\w\[\]]*?|[\w\[\]]*?Account[\w\[\]]*?)['"].*?>` ).FindStringSubmatch (req .Body )
45
- if usernamelist2 != nil {
46
- usernamekey = usernamelist2 [len (usernamelist2 )- 1 :][0 ]
47
- }
48
51
}
49
- passlist := regexp . MustCompile ( `<input.*?name=['"]([\w\[\]]*?pass[\w\[\]]*?|[\w\[\]]*?Pass[\w\[\]]*?|[\w\[\]]*?PASS[\w\[\]]*?|[\w\[\]]*?pwd[\w\[\]]*?|[\w\[\]]*?Pwd[\w\[\]]*?|[\w\[\]]*?PWD[\w\[\]]*?)['"].*?>` ) .FindStringSubmatch (req .Body )
52
+ passlist := PswdReg .FindStringSubmatch (req .Body )
50
53
if passlist != nil {
51
54
passwordkey = passlist [len (passlist )- 1 :][0 ]
52
- } else {
53
- passlist2 := regexp .MustCompile (`<input.*?name=['"]([\w\[\]]*?mima[\w\[\]]*?|[\w\[\]]*?word[\w\[\]]*?)['"].*?>` ).FindStringSubmatch (req .Body )
54
- if passlist2 != nil {
55
- passwordkey = passlist2 [len (passlist2 )- 1 :][0 ]
56
- }
57
55
}
58
- domainlist := regexp . MustCompile ( `<form.*?action=['"](.*?)['"]` ) .FindStringSubmatch (req .Body )
56
+ domainlist := actionReg .FindStringSubmatch (req .Body )
59
57
if domainlist != nil {
60
58
if action , err := url .Parse (strings .TrimSpace (domainlist [len (domainlist )- 1 :][0 ])); err == nil {
61
59
loginurl = u .ResolveReference (action ).String ()
@@ -72,6 +70,8 @@ func getinput(inputurl string) (usernamekey string, passwordkey string, loginurl
72
70
return usernamekey , passwordkey , loginurl , ismd5
73
71
}
74
72
73
+ var LocationReg = regexp .MustCompile (`(.*?);` )
74
+
75
75
func Admin_brute (u string ) (username string , password string , loginurl string ) {
76
76
if SkipAdminBrute {
77
77
return "" , "" , ""
@@ -100,7 +100,7 @@ func Admin_brute(u string) (username string, password string, loginurl string) {
100
100
case 301 , 302 , 307 , 308 :
101
101
falseis302 = true
102
102
if strings .Contains (adminfalseurl .Location , ";" ) {
103
- adminfalseurl .Location = regexp . MustCompile ( `(.*);` ) .FindString (adminfalseurl .Location )
103
+ adminfalseurl .Location = LocationReg .FindString (adminfalseurl .Location )
104
104
}
105
105
adminfalse302location = adminfalseurl .Location
106
106
case 401 :
@@ -124,7 +124,7 @@ func Admin_brute(u string) (username string, password string, loginurl string) {
124
124
case 301 , 302 , 307 , 308 :
125
125
falseis302 = true
126
126
if strings .Contains (testfalseurl .Location , ";" ) {
127
- testfalseurl .Location = regexp . MustCompile ( `(.*);` ) .FindString (testfalseurl .Location )
127
+ testfalseurl .Location = LocationReg .FindString (testfalseurl .Location )
128
128
}
129
129
testfalse302location = testfalseurl .Location
130
130
case 401 :
@@ -173,7 +173,7 @@ func Admin_brute(u string) (username string, password string, loginurl string) {
173
173
}
174
174
if falseis302 {
175
175
if strings .Contains (req .Location , ";" ) {
176
- req .Location = regexp . MustCompile ( `(.*);` ) .FindString (req .Location )
176
+ req .Location = LocationReg .FindString (req .Location )
177
177
}
178
178
if req .Location != adminfalse302location && req .Location != testfalse302location {
179
179
sucesstestdata := fmt .Sprintf ("%s=%s&%s=Qweasd123zxc" , usernamekey , user , passwordkey )
0 commit comments