01.漏洞简介
Jetty WEB-INF 敏感信息泄露漏洞。jetty是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
Jetty 9.4.37引入对RFC3986的新实现,而URL编码的.字符被排除在URI规范之外,这个行为在RFC中是正确的,但在servlet的实现中导致攻击者可以通过%2e来绕过限制,下载WEB-INF目录下的任意文件,导致敏感信息泄露。该漏洞在9.4.39中修复。
02.漏洞环境
jetty9.4.37 下载与启动
下载地址
https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.37.v20210219/jetty-distribution-9.4.37.v20210219.tar.gz
然后解压,进入 bin目录下执行
./jetty.sh start
启动jetty
准备一个简单的 war 包
由于jetty安装包下的webapps下没有任何web项目,需要准备一个war包
-
这里使用IDEA生成简单的 hello word 项目
-
工程名称study
-
增加 archetypeCatalog internal 参数
-
打war包
在工程根目录下运行:mvn clean package
-
war包复制到 jetty-distribution-9.4.37.v20210219/webapps/下
03.漏洞复现
直接访问/WEB-INF/web.xml将会返回404页面
使用%2e/来绕过限制下载web.xml
curl -v 'http://localhost:8080/study/%2e/WEB-INF/web.xml'
04.RASP防护
rasp拦截调用参数和栈
{
"protocol":"HTTP/1.1",
"method":"GET",
"remoteHost":"[0:0:0:0:0:0:0:1]",
"requestURI":"/study/%2e/WEB-INF/web.xml",
"stackTrace":[
"java.io.File.<init>(File.java:275)",
"sun.nio.fs.AbstractPath.toFile(AbstractPath.java:96)",
"org.eclipse.jetty.util.resource.PathResource.getFile(PathResource.java:424)",
"org.eclipse.jetty.server.CachedContentFactory.getMappedBuffer(CachedContentFactory.java:355)",
"org.eclipse.jetty.server.CachedContentFactory$CachedHttpContent.getDirectBuffer(CachedContentFactory.java:596)",
"org.eclipse.jetty.server.HttpOutput.sendContent(HttpOutput.java:1346)",
"org.eclipse.jetty.server.HttpOutput.sendContent(HttpOutput.java:1225)",
"org.eclipse.jetty.server.ResourceService.sendData(ResourceService.java:728)",
"org.eclipse.jetty.server.ResourceService.doGet(ResourceService.java:294)",
"org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:449)"
],
"localAddr":"[0:0:0:0:0:0:0:1]",
"parameterMap":{
},
"remoteAddr":"[0:0:0:0:0:0:0:1]"
}
RASP防护
截获信息
JRASP对文件创建进行了hook,能够获取文件的全部信息, 获取的文件信息去除了各种变形和转义字符。RASP截获文件全路径如下:
/private/var/folders/jl/gknl50qx6l13gl4_svpyj5sw0000gn/T/jetty-0_0_0_0-8080-study_war-_study-any-27103262034593673/WEB-INF/web.xml
开启阻断
将敏感信息加入检测名单中,并开启阻断。再次请求,阻断生效。
常用的敏感文件下载列表:
'.DS_Store',
'id_rsa',
'id_rsa.pub',
'known_hosts',
'authorized_keys',
'.bash_history',
'.csh_history',
'.zsh_history',
'.mysql_history',
'.htaccess',
'.user.ini',
'web.config',
'web.xml', // CVE-2021-28164
'build.property.xml',
'bower.json',
'Gemfile',
'Gemfile.lock',
'.gitignore',
'error_log',
'error.log',
'nohup.out',
原文始发于微信公众号(RASP安全技术):Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-28164 )检测与防御nCVE-2021-28164
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论