1.CSRF
系统包头文件需要交验refer参数,参数不能被删除。
解决方案:添加RefererFilter过滤器,
package com.ppms.filter;
/**
* 功能:系统包头文件需要交验refer参数,参数不能被删除
*/
public class RefererFilter implements Filter {
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest args0, ServletResponse args1,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)args0;
HttpServletResponse response = (HttpServletResponse)args1;
// 链接来源地址
String referer = request.getHeader("Referer");
//System.out.println(referer);
if (referer!=null&&!referer.contains(request.getServerName())) {
//如果 链接地址来自其他网站,则返回错误页面
request.getRequestDispatcher("/webext/detailerror.jsp")
.forward(request, response);
}else {
chain.doFilter(request, response);
}
}
public void destroy() {
// TODO Auto-generated method stub
}
}
在web.xml中配置过滤器
<filter>
<filter-name>RefererFilter</filter-name>
<filter-class>com.ppms.filter.RefererFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RefererFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.XSS与SQL注入
解决方案:编写过滤器如下压缩包
在web.xml中配置如下
<filter>
<filter-name>XssFilter</filter-name>
<filter-class>com.ppms.HtmlSqlJsUrlFilter.XssFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>XssFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
下载链接:源码下载链接
3.IP伪造
抓包工具抓取链接,Host后面添加:X-Forwarded-For:1.1.1.1
解决方案:用如下方法获取ip即可
/**
* @description 获取客户端ip
* @author wyq
* @date 2013-11-26
*/
public String getIpAddr(HttpServletRequest request) {
String ip = request.getRemoteAddr();
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("x-forwarded-for");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
4.附件相关漏洞
【1】删除附件时可以查看到绝对路径 解决方案:删除附件只能用附件的id删除
【2】上传可执行的脚本jsp,txt等
解决方案:限制上传文件的类型,前后台都要校验,最好把文件类型改为可配置
5.weblogic容器漏洞
【1】后台路径泄露http://ip:port/console 解决方案:禁用console访问路径,
D:\Oracle\Middleware\user_projects\domains\server_domain\config\config.xml中修改console配置为false,或在控制台修改
【2】禁用T3协议 解决方案:进行如下配置 weblogic.security.net.ConnectionFilterImpl
127.0.0.1 * * allow t3 t3s
0.0.0.0/0 * * deny t3 t3s
【3】不安全的请求头
【4】java.data.valueOf() 驱动版本问题导致时间都变为1970年
需更换weblogic目录:C:\Oracle\Middleware\wlserver_10.3\server\lib的ojdbc驱动
然后在目录:C:\Oracle\Middleware\wlserver_10.3\common\bin\commevn.cmd文件中
set WEBLOGIC_CLASSPATH=%JAVA_HOME% 后引入新的驱动包
【5】打补丁方式
参考博客:
https://www.pianshen.com/article/8223176417/
6.不安全的http方法
【1】应用项目有此问题处理如下:在web.xml中加入如下代码,禁用不安全的http方法
<security-constraint>
<web-resource-collection>
<web-resource-name>fortune</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint></auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
【2】weblogic容器有此问题,处理如下
打开Weblogic的D:\oracle\Middleware\wlserver_10.3\server\lib并找到以下三个war包
bea_wls_deployment_internal.war
bea_wls_management_internal2.war
bea_wls_diagnostics.war
在此三个war包中的web.xml中加入如下配置
<security-constraint>
<web-resource-collection>
<web-resource-name>fortune</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint></auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
备注:其它war包测试时如果有问题,同样方法处理。
7.开放端口过多
解决方案:使用nmap扫描应用服务器的tcp开放端口,打开防火墙配置无关端口关闭
8.SSL版本太低
weblogic9.2版本解决方案:
编辑$DOMAIN_HOME/bin目录下的setDomainEnv.sh文件,找到 JAVA_OPTIONS="${JAVA_OPTIONS}“处,如:JAVA_OPTIONS=”${JAVA_OPTIONS} - Djava.net.preferIPv4Stack=true - Dweblogic.security.SSL.protocolVersion=TLS1" 指定SSL的使用版本
weblogic10.3.6及以上版本解决方案
编辑$DOMAIN_HOME/bin目录下的setDomainEnv.sh文件,找到 JAVA_OPTIONS="${JAVA_OPTIONS}“处,如:JAVA_OPTIONS=”${JAVA_OPTIONS} - Djava.net.preferIPv4Stack=true - Dweblogic.security.SSL.minimumProtocolVersion=TLSv1.0"–限定SSL的最低使用版本
9.SSRF
SSRF漏洞:启动服务后删除weblogic域下severs/服务名/tmp/_WL_internal目录下 的uddi文件夹和uddiexplorer文件夹;删除所有节点,删除后再访问系统(安全测试 存在漏洞解决方案: 删除weblogic/bea/weblogic92/server/lib下的uddi.properties、uddi.war 、 uddiexplorer.war这三个文件存在漏洞)下面地址不能正常访问才可
修复完成后需要清除weblogic缓存
http://ip:port/uddiexplorer/SearchPublicRegistries.jsp http://ip:port/uddiexplorer/SearchPrivateRegistries.jsp http://ip:port/uddiexplorer/PublishToPrivateRegistry.jsp http://ip:port/uddiexplorer/SetupUDDIExplorer.jsp http://ip:port/uddi/uddilistener http://ip:port/uddi
注:未经本人允许不得转载,相关附件源码请联系QQ:473664742