Apache Tomcat AJP连接器请求注入
解:将tomcat
中conf/server.xml
配置文件,注释掉<Connector port=“8009” protocol="AJP/1.3"redirectPort=“8443” />
DS_Store文件信息泄露
.DS_Store是Mac下Finder用来保存如何展示文件//文件夹的数据文件,每个文件夹下对应一个。由于开发/设计人员在发布代码时未删除文件夹中隐藏的.DS_store,可能造成文件目录结构泄漏、源代码文件等敏感信息的泄露。
解:删除.DS_Store文件
任意文件下载
比如一个图片访问接口,如果访问的是服务器本地的图片,那么需要对访问路径进行限制
例如:接口127.0.0.1:8080/user/getImg/path=123.jpg,123.jpg是直接存放在服务器固定路径下的,如果没有对路径进行限制,这样访问接口127.0.0.1:8080/user/getImg/path=../../../../../etc/passwd,可能会访问到服务器的任何文件
解:过滤接口参数中的路径信息
登录信息爆破
有些服务的登录接口会返回用户名不存在,这样就能够被有心之人利用,爆破找到数据库中存在的用户,进而造成威胁
解:无论是用户名不存在还是密码错误都返回同样的返回信息 用户名或者密码错误
登录缺失验证码
系统登陆处未设置验证码功能校验登录是否是人工登录行为,攻击者可通过工具进行字典攻击可对账号密码进行暴力破解
解:添加需要验证码登录的功能
Tomcat管理界面泄露
解:如果项目发布在tomcat中,删除其他所有tomcat自带的webapps下的文件,只保留自己的项目
Apache Tomcat样例目录session操纵
访问tomcat自带的webapps中的examples项目,存在众多的样例页面,存在着可被利用成功的风险。
Apache Tomcat默认安装包含”/examples”目录,里面存着众多的样例,其中session样例(/examples/servlets /servlet/SessionExample)允许用户对session进行操纵。因为session是全局通用的,所以用户可以通过操纵 session获取管理员权限
解:删除examples目录
启用TLS 1.0
攻击者可能能够利用此问题进行中间人攻击,并对受影响的服务和客户端之间的通信进行解密
解:禁用TLS 1.0并将其替换为TLS 1.2或更高版本
tomcat使用TLS1.2:添加配置sslEnabledProtocols="TLSv1.2"
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="conf/domains.jks"
keystorePass="xxxxxxxx"
clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2"/>
java中禁用TLS1.0:
jdk安装目录下jre/lib/security/java.security
中修改以下配置(添加TLSv1
禁用):
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, RC4, DES, MD5withRSA, DH keySize < 1024, \
EC keySize < 224, 3DES_EDE_CBC
缺少X-Frame-Options标头
服务器未返回X-Frame-Options标头,这意味着该网站可能会遭受点击劫持攻击的风险。X-Frame-Options HTTP响应标头可用于指示是否应允许浏览器在框架或iframe中呈现页面。网站可以通过确保其内容未嵌入其他网站来避免点击劫持攻击
解:后端在header中添加X-Frame-Options标头
java示例代码:
response.setHeader("x-frame-options","SAMEORIGIN");