web系统常见的渗透问题

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

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值