Web漏洞安全加固

Web漏洞介绍

Web漏洞

WEB漏洞通常是指网站程序上的漏洞,可能是由于代码编写者在编写代码时考虑不周全等 原因而造成的漏洞,常见的WEB漏洞有Sql注入、Xss漏洞、上传漏洞等

Web漏洞危害

如果网站存在WEB漏洞并被黑客攻击者利用,攻击者可以轻易控制整个网站,并可进一步提
权获取网站服务器权限,控制整个服务器。

常见web漏洞

先来总结一下我上学期间学习到的一些漏洞,分别有sql注入漏洞,文件上传漏洞,XSS,CSRF,RCE,SSRF。然后再来总结一下OWASP top10。

sql注入

原理:

由于网站的开发者在处理sql语句不严谨,从而导致攻击者可以插入恶意的sql语句,然后使得原有的sql语句产生了歧义,从而达到了攻击者目的。

发生情景:

假设我们在浏览器中输入URL www.sample.com,由于它只是对页面的简单请求无需对数据库动进行动态请求,所以它不存在SQL Injection,当我们输入www.sample.com?testid=23时,我们在URL中传递变量testid,并且提供值为23,由于它是对数据库进行动态查询的请求(其中?testid=23表示数据库查询变量),所以我们可以在该URL中嵌入恶意SQL语句。

如何判断有sql注入漏洞:

1.判断此URL是否存在sql注入点
最为经典的单引号判断法:

在参数后面加上单引号,比如: http://xxx/aaa.php?id=1',若页面返回错误,则存在 Sql 注入。

解释:无论字符型还是整型都会因为单引号个数不匹配而报错(如果未报错,不代表不存在 Sql 注入,因为有可能页面对单引号做了过滤,这时可以使用判断语句进行注入。)

2.如存在sql注入,属于哪种?

通常 Sql 注入漏洞分为 2 种类型:

  • 数字型
  • 字符型

数字型判断:可以使用经典的 and 1=1 和 and 1=2 来判断:

url中输入?id=1 and 1=1 页面依旧正常运行,继续下一步

url中输入?id=1 and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。

解释:当输入 and 1=1时,后台执行 Sql 语句:select * from <表名> where id = x and 1=1,语法正确且逻辑判断为正确,所以返回正常。

当输入 and 1=2时,后台执行 Sql 语句:select * from <表名> where id = x and 1=2,语法正确但逻辑判断为假,所以返回错误。

也可以使用假设法来验证:
假设这是字符型注入的话,我们输入以上语句之后应该出现如下情况:

当输入1 and 1=1,1 and 1=2时,后台执行 Sql 语句:

select * from <表名> where id = 'x and 1=1'
select * from <表名> where id = 'x and 1=2'

查询语句将 and 语句全部转换为了字符串,并没有进行 and 的逻辑判断,所以不会出现以上结果,故假设是不成立的。

字符型判断:可以使用 and ‘1’='1 和 and ‘1’='2来判断:

url中输入1' and '1' = '1,页面运行正常,继续进行下一步。

url中继续输入1' and '1' = '2,页面运行错误,则说明此 Sql 注入为字符型注入。

解释:当输入 and ‘1’='1时,后台执行 Sql 语句:select * from <表名> where id = 'x' and '1'='1'语法正确,逻辑判断正确,所以返回正确。

当输入 and ‘1’='2时,后台执行 Sql 语句:select * from <表名> where id = 'x' and '1'='2'语法正确,但逻辑判断错误,所以返回异常。

只要是带有参数的动态网页,且访问了数据库,就有可能存在sql注入。

危害:

1. 数据库内的信息全部被外界窃取。
2. 数据库中的内容被篡改。
3. 登录认证被绕过
4. 其他,例如服务器上的文件被读取或修改/服务上的程序被执行等。

防御:

1.过滤
可以对用户提交的敏感字符进行过滤和拦截。
2.  转义
可以对用户提交的敏感字符进行转义。
参数化查询
参数化查询也叫做预处理,它分两个步骤处理用户的输入。
网站应用程序指定了查询语句结构,并为用户输入的每个数据预留了占位符。
网站应用程序指定每个占位符的内容。
在第二个步骤中,用户输入被填入占位符,但不会改变第一个步骤中预设好的查询语句结构。这样,网站应用程序就不会将用户输入判断为sql 语句执行了,而会把用户的输入当做一个整体去查询。
4.  加密存储
对重要数据,不在表单中明文存储,而选择加密存储。
5.  限制数据库权限和特权
将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。

文件上传漏洞

定义:

文件上传漏洞是web系统中常见的一种功能,通过文件上传能实现上传图片、视频,以及其他类型的文件,但是随着web中包含的功能越来越多,潜在的网络安全风险也就越大。如果恶意用户上传了可执行的文件或者脚本,就会导致网站被其控制甚至会使其服务器沦陷,以至于引发恶意的网络安全事件。

原理:

文件上传漏洞是指恶意用户通过界面上的上传功能上传了一个可执行的脚本文件,而WEB端的系统并未对其进行严格的验证与过滤,最终可能获取执行服务端命令的能力,从而实现控制WEB网站的目的。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。WebShell主要以asp,php,jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以称之为一种网页后门。一句话木马就是最常用的WebShell。其中jsp语言相对于其他语言最流行。

文件上传漏洞的成因,一方面服务器配置不当会导致任意文件上传;

另一方面,Web 应用开放了文件上传功能,并且对上传的文件没有进行足够的限制;

再者就是程序开发部署时候,没有考虑到系统特性和验证过滤不严格而导致限制被绕过,上传任意文件。

危害:

上传漏洞最直接的威胁就是上传任意文件,包括恶意脚本、程序等。如果 Web 服务器所保存上传文件的可写目录具有执行权限,那么就可以直接上传后门文件,导致网站沦陷。如果攻击者通过其他漏洞进行提权操作,拿到系统管理权限,就能直接导致服务器沦陷。且同服务器下的其他网站也无一幸免,均会被攻击者控制。通过上传漏洞获得的网站后门,就是 Webshell。

防御手段:

1.文件上传目录设置为不可执行。这样子做即使攻击者上传了恶意脚本文件,服务器也不会受到影响。

2.使用随机数改写文件名和文件路径。文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。

3.使用安全设备防御。文件上传攻击的本质就是将恶意文件或者脚本上传到服务器,专业的安全设备防御此类漏洞主要是通过对漏洞的上传利用行为和恶意文件的上传过程进行检测。恶意文件千变万化,隐藏手法也不断推陈出新,对普通的系统管理员来说可以通过部署安全设备来帮助防御。

4.严格检查用户上传的文件名和文件路径等。服务器端的检查最好使用白名单过滤的方法,这样能防止大小写等方式的绕过。

5.定时查看系统日志,web服务器日志以发现入侵痕迹。

XSS(跨站脚本攻击)漏洞

定义:

跨站脚本攻击是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户在浏览网页时会受到影响,恶意用户利用xss 代码攻击成功后,可能得到很高的权限、私密网页内容、会话和cookie等各种内容。

原理:

XSS的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。

分类:

反射型(非持久型)XSS、存储型(持久型)XSS、DOM型XSS、通用型XSS、突变型XSS。主要来分辨一下反射型与存储型之间的区别。

反射型XSS,又称为非持久性XSS,攻击相对于受害者而言是一次性的.具体表现在受害者点击了含有恶意的javascript脚本的url,恶意代码并没有保存在目标网站,而Web应用程序只是不加处理的把该恶意脚本反射回受害者的浏览器而使受害者的浏览器执行相应的脚本.反射型XSS只是简单的把用户输入的数据从服务器反射给用户浏览器,要利用这个漏洞,攻击者必须以某种方式诱导用户访问一个精心设计的URL(恶意链接),才能实施攻击。

存储型XSS,又称为持久性XSS,是指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库。当下一次从数据库中获取该数据时程序也未对其进行过滤,页面再次执行XSS代码持续攻击用户。存储型XSS漏洞大多出现在留言板、评论区,用户提交了包含XSS代码的留言到数据库,当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来。一旦用户访问受感染的页,执行是自动的。

存储型XSS和反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库、内存、文件系统等),下次请求目标页面时不用再提交XSS代码。最典型的例子就是留言板XSS,用户提交一条包含XSS代码的留言存储到数据库,目标用户查看留言板时,那些留言就会从数据库中加载出来并显示,于是触发了XSS攻击.

危害:

1.窃取用户Cookie
2.
后台增删改文章
3.XSS钓鱼攻击
4.利用XSS漏洞进行传播和修改网页代码
5.XSS蠕虫攻击
6.网站重定向
7.获取键盘记录
8.获取用户信息等

CSRF(跨站请求伪造)

定义:

CSRF是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。简单的说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己以前认证过的站点并运行一些操作(如发邮件,发消息,甚至财产操作(如转账和购买商品))。因为浏览器之前认证过,所以被访问的站点会觉得这是真正的用户操作而去运行。

你可以这么来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等

原理:

要完毕一次CSRF攻击,受害者必须依次完毕两个步骤:

1.登录受信任站点A,并在本地生成Cookie

2.在不登出A的情况下,访问危急站点B

危害:

  • 篡改、盗取目标网站上的重要用户数据
  • 伪造HTTP请求进行未授权操作
  • 未经允许执行对用户名誉或者资产有害的操作,比如:散播不良信息、进行消费等
  • 如果通过使用社工等方式攻击网站管理员,会危害网站本身的安全性

XSS 与 CSRF区别:

1.CSRF是跨站请求伪造;  XSS是跨域脚本攻击。
2CSRF需要用户先登录网站A,获取cookie;  XSS不需要登录。
3CSRF是利用网站A本身的漏洞,去请求网站Aapi;  XSS是向网站A注入JS代码,然后执行JS里的代码,篡改网站A的内容。(XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。你可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求。)

XSS: 攻击者发现XSS漏洞——构造代码——发送给受害人——受害人打开——攻击者获取受害人的cookie——完成攻击
CSRF: 攻击者发现CSRF漏洞——构造代码——发送给受害人——受害人打开——受害人执行代码——完成攻击

SSRF(服务器端请求伪造)

定义:

SSRF指的是攻击者在未能取得服务器所有权限时,利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网。SSRF攻击通常针对外部网络无法直接访问的内部系统。

原理:

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

危害:

1.内外网的端口和服务扫描

2.攻击运行在内网或本地的应用程序

3.对内网web应用进行指纹识别,识别企业内部的资产信息

4.攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如Struts2漏洞利用,SQL注入等)

5.利用file协议读取本地敏感数据文件等

OWASP top10

OWASP top10,总结了Web应用程序最可能、最常见、最危险的十大漏洞.

1.注入injection
将不安全的命令作为命令发送给解析器,会产生类似于SQL注入、OS注入和LDAP注入(轻量目录访问协议)的缺陷,攻击者可以构造恶意数据通过注入缺陷的解析器执行没有权限的非预期命令或访问数据。
2. 失效的身份认证
通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者暂时或永久的冒 充其他用户的身份。
3.敏感数据泄露
一般我们的敏感信息包括密码、财务数据、医疗数据等,由于web应用或者API未加密或不正确的保护敏感数据,这些数据极易遭到攻击者利用,攻击者可能使用这些数据来进行一些犯罪行为。
4.外部实体(XXE)
XXE即XML(可扩展标记语言)外部实体注入攻击,早期或配置错误的XML处理器评估了XML文件外部实体引用攻击者可以利用这个漏洞窃取URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。
5.失效的访问控制
通过身份验证的用户,可以访问其他用户的相关信息,没有实施恰当的访问权限,攻击者可以利用这个漏洞去查看未授权的功能和数据,例如:访问用户的账户、敏感文件、获取和正常用户相同的权限等。
6. 安全配置错误
安全配置错误是比较常见的漏洞,由于操作者的不当配置,导致攻击者可以利用这些配置获取到更高的权限,安全配置错误可以发生在各个层面,包括平台、web服务器、应用服务器、数据库、架构和代码。
7. 跨站脚本(xss)
XSS攻击全称跨站脚本攻击,当应用程序的新网页中包含不受信任的、未经恰当验证、转义的数据或可使用HTML,JavaScript的浏览器API更新现有网页时,就会出现XSS漏洞,跨站脚本攻击是最普遍的应用安全漏洞之一,XSS会执行 攻击者在浏览器中执行的脚本,并劫持用户会话,破坏网站或用户重定向到恶意站点。
8.不安全的反序列化
不安全的反序列化可导致远程代码执行、重放攻击、注入攻击或特权升级攻击等。
9.使用含有已知漏洞的组件
组件拥有应用程序相同的权限,如果应用程序中含有已知漏洞,攻击者可以使用漏洞获取数据或接管服务器,同时,使用这些组件会破坏应用程序防御,造成各种攻击产生严重的后果。
10. 不足的日志记录和监控
不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性的或攻击更多的系统,以及对数据的不当操作

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值