常见的漏洞类型有哪些
第一:注入漏洞
由于其普遍性和严重性,注入漏洞位居漏洞排名第一位。常见的注入漏洞包括SQL、LDAP、OS命令、ORM和OGML。用户可以通过任何输入点输入构建的恶意代码,如果应用程序没有严格过滤用户的输入,一旦输入的恶意代码作为命令或者查询的一部分被发送到解析器,就可能导致注入漏洞。
第二:跨站脚本漏洞
XSS漏洞的全称是跨站点脚本漏洞。XSS漏洞是网络应用程序中常见的安全漏洞,它允许用户将恶意代码植入网页,当其他用户访问此页面时,植入的恶意脚本将在其他用户的客户端执行。危害有很多,客户端用户的信息可以通过XSS漏洞获取,比如用户登录的Cookie信息;信息可以通过XSS蜗牛传播;木马可以植入客户端;可以结合其他漏洞攻击服务器,并在服务器中植入特洛伊木马。
第三、文件上传漏洞
造成文件上传漏洞的主要原因是应用程序中有上传功能,但上传的文件没有通过严格的合法性检查或者检查功能有缺陷,导致木马文件上传到服务器。文件上传漏洞危害极大,因为恶意代码可以直接上传到服务器,可能造成服务器网页修改、网站暂停、服务器远程控制、后门安装等严重后果。
第四、文件包含漏洞
文件包含漏洞中包含的文件参数没有过滤或严格定义,参数可以由用户控制,可能包含意外文件。如果文件中存在恶意代码,无论文件是什么后缀类型,文件中的恶意代码都会被解析执行,导致文件包含漏洞。
第五、命令执行漏洞
应用程序的某些函数需要调用可以执行系统命令的函数。如果这些功能或者功能的参数可以被用户控制,那么恶意的命令就有可能通过命令连接器拼接成正常的功能,从而可以随意执行系统命令。这就是命令执行漏洞,属于高风险漏洞之一。
找网站漏洞非得用软件吗请详细说一下谢谢
网站漏洞可以手工找,也可以使用工具(如,WVS),但有些时候使用工具扫描漏洞的数据会被目标网站的安全设备过滤,这时候可以用手工试试。
漏洞:1、文件上传漏洞:web网站通常会有上传文件的功能,如:可以上传图片做头像、可以在个人网站发布zip压缩包、可以在招聘网站上传DOC、DOCX等格式的简历,只要web网站允许上传文件就有可能存在上传漏洞。如果没有对上传文件格式、大小做限制或者限制被绕过,就可以上传热议文件和可执行的脚本文件等。测试:找到上传文件的地方,试着上传一个可执行文件,若可以上传,则说明该网站存在上传漏洞;
.2、解析漏洞:web服务器对HTTP请求处理不当,将非可执行的脚本、文件等当做可执行的脚本、文件去执行。解析漏洞常和文件上传漏洞一起用。如,Apache的文件解析漏洞:Apache从右到左读取数据,会跳过无法识别的文件后缀名,如,XXX.php.随便一个后缀名,Apache就会把该文件当作XXX.php去执行。Nginx的解析漏洞(8.03版本):访问http://www.xxx.com/xx.jpg%00.php,Nginx会将xx.jpg文件当作xx.php执行。可以将攻击脚本文件的后缀名改为.jpg或其他网站可上传的文件格式,再访问该文件加上%00.php或其他可执行的后缀名,就可以使目标网站执行构造的攻击代码。
需要知道目标网站的中间件、中间件的版本等,通过信息收集阶段解决。
测试:在url中,在文件夹目录下输入带有.asp等可执行脚本文件后缀为后缀的文件夹,或输入类似xx.asp;.jpg,看其是否执行,执行则存在文件解析漏洞。
3、SQL注入漏洞:网站没有对用户提交的参数做过滤或者过滤被限制,执行了用户提交参数里携带的恶意SQL语句。
测试:在URL后面输入 and 1=1 或者 and 1=2回车,如果还是能够正常登录此网页,而没有提示“非法字符”或者提示“非法字符”等类似的字样就说明此网站能够SQL注入。
4、XSS漏洞:可以注入恶意的HTML/Javascript语句。
测试:网页的输入点,输入scriptalert(“xss”)/script,有弹窗弹出则证明存在xss漏洞
等。
如何使用 HTTP 响应头字段来提高 Web 安全性
在 Web 服务器做出响应时,为了提高安全性,在 HTTP 响应头中可以使用的各种响应头字段。
X-Frame-Options
该响应头中用于控制是否在浏览器中显示 frame 或 iframe 中指定的页面,主要用来防止 Clickjacking (点击劫持)攻击。
X-Frame-Options: SAMEORIGIN
DENY 禁止显示 frame 内的页面(即使是同一网站内的页面)
SAMEORIGIN
允许在 frame 内显示来自同一网站的页面,禁止显示来自其他网站的页面
ALLOW-FROM origin_uri 允许在 frame 内显示来自指定 uri 的页面(当允许显示来自于指定网站的页面时使用)
X-Content-Type-Options
如果从 script 或 stylesheet 读入的文件的 MIME 类型与指定 MIME 类型不匹配,不允许读取该文件。用于防止 XSS 等跨站脚本攻击。
X-Frame-Options: nosniff
X-XSS-Protection
用于启用浏览器的 XSS 过滤功能,以防止 XSS 跨站脚本攻击。
X-XSS-Protection: 1; mode=block
0 禁用 XSS 过滤功能
1 启用 XSS 过滤功能
Content-Security-Policy
用于控制当外部资源不可信赖时不被读取。用于防止 XSS 跨站脚本攻击或数据注入攻击(但是,如果设定不当,则网站中的部分脚本代码有可能失效)。
之前的字段名为 X-Content-Security-Policy
Content-Security-Policy: default-src 'self'
default-src ‘self’:允许读取来自于同源(域名+主机+端口号)的所有内容
default-src ‘self’
*.example.com:允许读取来自于指定域名及其所有子域名的所有内容
X-Permitted-Cross-Domain-Policies
用于指定当不能将地crossdomain.xml地文件(当需要从别的域名中的某个文件中读取 Flash 内容时用于进行必要设置的策略文件)放置在网站根目录等场合时采取的替代策略。
X-Permitted-Cross-Domain-Policies: master-only
master-only 只允许使用主策略文件(/crossdomain.xml)
Strict-Transport-Security
用于通知浏览器只能使用 HTTPS 协议访问网站。用于将 HTTP 网站重定向到 HTTPS 网站。
Strict-Transport-Security: max-age=31536; includeSubDomains
max-age 用于修改 STS 的默认有效时间。
includeSubDomains 用于指定所有子域名同样使用该策略。
Access-Control-Allow-Origin等CORS相关字段
当使用 XMLHttpRequest 从其他域名中获取资源进行跨域通信时使用。
Access-Control-Allow-Origin:
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-TRICORDER
Access-Control-Max-Age: 1728
上述代码用于设定与 进行跨域通信处理,允许使用 POST, GET, OPTIONS 方法,在发送的请求头中添加 X-TRICORDER 字段,通信超时时间为1,728,00秒。
HTTP响应头的设定方法
在 Apache 服务器中指定响应头时,需要在 httpd.conf 文件中将下述模块设定为有效状态。
LoadModule headers_module modules/mod_headers.so
然后使用下述方法设定 HTTP 响应头。
Header set HeaderFieldName "value"
//例如
Header set X-XSS-Protection "1; mode=block地
XSS(跨站脚本漏洞)谁帮忙修复下,我看着就头大,一窍不通啊。
对于php你可以用htmlentities()函数
例如这样:
?php
echo htmlentities($_POST['abc']);
?
至于asp,默认就能防xss攻击,无需任何操作
使用springboot怎么添加一个filter过滤器
在实际的web应用程序中,经常需要在请求(request)外面增加包装用于:记录调用日志、排除有XSS威胁的字符、执行权限验证等等。除了上述提到的之外,Spring Boot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,并且我们在自己的项目中还可以增加别的过滤器。
Spring Boot、Spring Web和Spring MVC等其他框架,都提供了很多servlet 过滤器可使用,我们需要在配置文件中定义这些过滤器为bean对象。现在假设我们的应用程序运行在一台负载均衡代理服务器后方,因此需要将代理服务器发来的请求包含的IP地址转换成真正的用户IP。Tomcat 8 提供了对应的过滤器:RemoteIpFilter。通过将RemoteFilter这个过滤器加入过滤器调用链即可使用它。
How Do
一般在写简单的例子时,不需要单独定义配置文件,只需要将对应的bean对象定义在Application类中即可。正式的项目中一般会有单独的web配置文件,我们在项目的com.test.bookpub(与BookpubApplication.java同级)下建立WebConfiguration.java文件,并用@Configuration注解修饰。
package com.test.bookpub;
import org.apache.catalina.filters.RemoteIpFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class WebApplication {
@Bean
public RemoteIpFilter remoteIpFilter() {
return new RemoteIpFilter();
}
}
通过mvn spring-boot:run启动项目,可以在终端中看到如下的输出信息,证明RemoteIPFilter已经添加成功。
RemoteIPFilter
分析
项目的主类——BookPubApplication,可以看到由@SpringBootApplication注解修饰,这包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。在Spring Boot的自动配置、Command-line Runner一文中曾对这个三个注解做详细解释,@ComponentScan让Spring Boot扫描到WebConfiguration类并把它加入到程序上下文中,因此,我们在WebApplication中定义的Bean就跟在BookPubApplication中定义一样。
方法@Bean public RemoteIpFilter remoteIpFilter() { ... }返回一个RemoteIPFilter类的spring bean。当Spring Boot监测到有javax.servlet.Filter的bean时就会自动加入过滤器调用链。从上图中还可以看到,该Spring Boot项目一次加入了这几个过滤器:characterEncodingFilter(用于处理编码问题)、hiddenHttpMethodFilter(隐藏HTTP函数)、httpPutFormContentFilter、requestContextFilter(请求上下文),以及我们刚才自定义的RemoteIPFilter。