shiro安全框架扩展教程--如何防止可执行文件的入侵攻击

简介:         前面的教程有一章是讲解如何突破上传的,当被人通过上传功能突破的防线那就杯具了,有点hack知识的人都知道,很多攻击都是优先寻找上传的功能,因为能突破就会剩下很多的功夫,比如...

        前面的教程有一章是讲解如何突破上传的,当被人通过上传功能突破的防线那就杯具了,有点hack知识的人都知道,很多攻击都是优先寻找上传的功能,因为能突破

就会剩下很多的功夫,比如hack上传了一个asp,php或者jsp文件,然后通过抓包路径获取了文件存放地址,然后直接请求就能通过这个可执行的文件获取到数据库的信息,

或者是遍历目录下载文件,寻找文件中的其他漏洞以获得更高的权限,下面我就演示下简单的防范手段,就算被突破了上传也会有下一堵墙在一定程度上防止执行脚本


我主要是使用shiro写了一个filter过滤需要请求信息,如遇到黑名单则记录信息,看下面贴的代码


package com.silvery.security.shiro.filter;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import org.apache.shiro.web.filter.authz.AuthorizationFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.silvery.utils.PatternUtils;
import com.silvery.utils.WebUtils;

/**
 * 
 * 黑名单可执行程序请求过滤器
 * 
 * @author shadow
 * 
 */
public class SimpleExecutiveFilter extends AuthorizationFilter {

	protected static final String[] blackUrlPathPattern = new String[] { "*.aspx*", "*.asp*", "*.php*", "*.exe*",
			"*.jsp*", "*.pl*", "*.py*", "*.groovy*", "*.sh*", "*.rb*", "*.dll*", "*.bat*", "*.bin*", "*.dat*",
			"*.bas*", "*.c*", "*.cmd*", "*.com*", "*.cpp*", "*.jar*", "*.class*", "*.lnk*" };

	private static final Logger log = LoggerFactory.getLogger(SimpleExecutiveFilter.class);

	@Override
	protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object obj) throws Exception {

		HttpServletRequest httpRequest = (HttpServletRequest) request;

		String reqUrl = httpRequest.getRequestURI().toLowerCase().trim();

		for (String pattern : blackUrlPathPattern) {
			if (PatternUtils.simpleMatch(pattern, reqUrl)) {
				log.error(new StringBuffer().append("unsafe request >>> ").append(" request time: ").append(
						new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())).append("; request ip: ")
						.append(WebUtils.getClientIP()).append("; request url: ").append(httpRequest.getRequestURI())
						.toString());
				return false;
			}
		}

		return true;

	}

}


下一步把刚刚写的过滤器配置到shiro的过滤链中


<!-- 过滤链配置 -->
	<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
		<property name="securityManager" ref="securityManager" />
		<property name="loginUrl" value="/" />
		<property name="successUrl" value="/cms/index.do" />
		<property name="unauthorizedUrl" value="/static/unauthorized.html" />
		<property name="filters">
			<map>
				<entry key="role">
					<bean
						class="com.silvery.security.shiro.filter.SimpleRoleAuthorizationFilter" />
				</entry>
				<entry key="authc">
					<bean
						class="com.silvery.security.shiro.filter.SimpleFormAuthenticationFilter" />
				</entry>
				<entry key="exec">
					<bean class="com.silvery.security.shiro.filter.SimpleExecutiveFilter" />
				</entry>
			</map>
		</property>
	</bean>

最后配置下我们需要过滤的请求目录,一般都是全量过滤,但是有些静态资源是不应该过滤的,所以应该注意顺序,让anon权限的放到放到exec的前面


<!-- 权限资源配置 -->
	<bean id="filterChainDefinitionsService"
		class="com.silvery.security.shiro.service.impl.SimpleFilterChainDefinitionsService">
		<property name="definitions">
			<value>
				/static/** = anon
				/** = exec
			</value>
		</property>
	</bean>

最后请求下php,jsp等那些文件是返回到无权限的页面,我们的简单防范已经达到目的了,下一章节可能讲如何防范xss和csrf攻击的防范


目录
相关文章
|
6月前
|
SQL 安全 数据库
守护Web世界的和平使者:Python Web安全基础,从认识SQL注入、XSS、CSRF开始!
【7月更文挑战第27天】在数字世界里,Web应用如星辰照亮信息交流,但也潜藏安全隐患:SQL注入、XSS与CSRF。SQL注入让攻击者操控数据库;通过参数化查询可防御。XSS允许执行恶意脚本;确保输出编码至关重要。CSRF诱骗用户发送恶意请求;使用CSRF令牌能有效防护。作为开发者,掌握Python Web安全基础,如Flask和Django的安全特性,能帮助我们守护这片数字天地的和平与繁荣。
47 0
|
安全 网络安全 PHP
网络安全实验十四 文件上传与注入攻击
网络安全实验十四 文件上传与注入攻击
153 1
|
存储 SQL JavaScript
安全测试 web应用安全测试之XXS跨站脚本攻击检测
安全测试 web应用安全测试之XXS跨站脚本攻击检测
211 0
|
XML 安全 JavaScript
WEB常见漏洞之XXE(基础原理篇)
WEB常见漏洞之XXE(基础原理篇)
211 0
|
安全 网络协议 NoSQL
WEB常见漏洞之SSRF(基础原理篇)
WEB常见漏洞之SSRF(基础原理篇)
193 0
|
SQL 存储 运维
WEB攻击手段及防御-扩展篇
之前的文章介绍了常见的XSS攻击、SQL注入、CSRF攻击等攻击方式和防御手段,没有看的去翻看之前的文章,这些都是针对代码或系统本身发生的攻击,另外还有一些攻击方式发生在网络层或者潜在的攻击漏洞在这里也总结一下。
|
Web App开发 安全 物联网
浅析Web应用安全如何防御检查应用漏洞?
    随着计算机技术的发展,网络漏洞也变得越来越多样化了,关于保障Web应用安全的专家分析也变多,漏洞现状也成为了被热烈讨论的话题。值得关注的是,许多知名的组织所依赖的软件,往往是最新受害者出现漏洞利用的软件,还有些容易受到攻击的系统无疑对Web应用安全造成了潜在的影响。
1043 0
|
Web App开发 JavaScript 安全
臭名昭著的十种Web恶意攻击软件
传播恶意软件的网站可能已经趋于稳定,但是web所滋生的恶意软件却在与日俱增。根据思科所发布的2010年全球威胁报告的内容,犯罪份子正利用搜索引擎优化和社交工程来使其伎俩更高效,将更多的目标受害者吸引到少量的网址上。
2730 0