您的位置:  首页 > 技术 > java语言 > 正文

安全测试 web常规安全漏洞问题介绍和防范说明,如:SQL注入攻击、XSS跨站点脚本攻击、JS注入、注释与异常信息泄露、跨站点请求伪造、路径遍历与强制浏览、越权访问类常见网络安全问题是什么?

2021-12-18 08:00 管理员 次阅读 条评论

文章目录

前言

SQL: SQL注入攻击

XSS: 跨站点脚本攻击

CSRF: 跨站点请求伪造

CSC: 注释与异常信息泄露

FB: 路径遍历与强制浏览

BAC: 越权访问

结束语


前言

    Web应用防火墙(Web Application Firewall, WAF),通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等攻击,保护Web服务安全稳定。

列举常见的攻击和安全漏洞列表

攻击(漏洞)名称攻击(漏洞)说明
跨站点脚本攻击黑客通过篡改网页,注入恶意JS 脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。
SQL注入攻击在 HTTP 请求中注入恶意 SQL 命令(drop table users;),服务器用请求参数构造数据库 SQL 命令时,恶意 SQL 被一起构造,并在数据库中执行。
跨站点请求伪造攻击者通过伪造合法用户身份,进行非法操作,如转账交易、发表评论等。
注释与异常信息泄露在返回给用户的响应中,HTML注释或者500异常内容包含系统敏感信息,使非法分子利用这些信息发现系统的脆弱之处,进而进行攻击。
越权访问

水平越权、垂直越权

一个用户A一般只能够对自己本身的信息进行增删改查,然而由于后台开发人员的疏忽,没有在信息进行增删改查时候进行用户判断,从而导致用户A可以对其他用户进行增删改查等等操作。

列举场景的攻击类型

类型名称
SQLSQL注入攻击
XSS跨站点脚本攻击,JS注入
CSC注释与异常信息泄露
CSRF跨站点请求伪造
FB路径遍历与强制浏览
BAC越权访问

攻击流程和常见应用防火墙处理流程


SQL: SQL注入攻击

SQL 注入攻击的原理如下

攻击者在 HTTP 请求中注入恶意 SQL 命令(drop table users;),服务器用请求参数构造数据库 SQL 命令时,恶意 SQL 被一起构造,并在数据库中执行。  

如果在Web页面中有个输入框,要求用户输入姓名,普通用户输入一个普通的姓名Benjamin,那么最后提交的HTTP请求如下:

http://www.test.com?username=benjamin

正常服务器在处理计算后,向数据库提交的SQL查询命令如下:

Select id from users where username = "Benjamin";

但是恶意攻击者可能会提交这样的HTTP请求:

http://www.test.com?username=benjamin';drop table users;--

即输入的username是:

Benjamin';drop table users;--

SQL注入服务器处理后,最终生成的SQL语句如下:

Select id from users where username = "Benjamin";drop table users;--";

事实上,这是两条SQL,一条select查询SQL,一条drop table删除表SQL。数据库在执行完查询后,就将users表删除了,系统崩溃了。

PS:常用越权查询使用关键字

 ' or 1 = 1

从请求中匹配到SQL注入攻击内容后,可以设置跳转错误页面,也可以选择消毒replace替换关键字。

SQL注入关键字漏洞定义,防范替换字符串表

SQL注入攻击字符串replace替换字符串
= = 
> > 
<&nbsp;<&nbsp;
@&nbsp;@&nbsp;
'&nbsp;'&nbsp;
"&nbsp;"&nbsp;
(&nbsp;(&nbsp;
)

&nbsp;)&nbsp;


XSS: 跨站点脚本攻击

        简称:JS注入攻击,特殊符号注入,代码注入等

演示

攻击示例(未防范):

    1、输入攻击字符串并提交

    2、当其他用户或管理员登陆后台查看提交内容时,管理提交弹窗提示

攻击演示代码示例:        

<script>alert(“Attack!”)</script> 

        XSS 攻击即跨站点脚本攻击(Cross Site Script),指黑客通过篡改网页,注入恶意 JavaScript脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。

        常见的 XSS 攻击类型有两种,一种是反射型,攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击的目的,如图

        攻击者发布的微博中有一个含有恶意脚本的 URL(在实际应用中,该脚本在攻击者自己的服务器 www.test.cn上,URL 中包含脚本的链接),用户点击该 URL,脚本会自动关注攻击者的新浪微博 ID,发布含有恶意脚本 URL 的微博,攻击就被扩散了。

   另外一种 XSS 攻击是持久型 XSS 攻击,黑客提交含有恶意脚本的请求,保存在被攻击的 Web 站点的数据库中,用户浏览网页时,恶意脚本被包含在正常页面中,达到攻击的目的,如图

关键字漏洞定义,防范替换字符串表

XSS攻击字符replace替换字符
=&nbsp;=&nbsp;
:&nbsp;:&nbsp;
-&nbsp;-&nbsp;
(&nbsp;(&nbsp;
)&nbsp;)&nbsp;
<&nbsp;<&nbsp;
>&nbsp;>&nbsp;
!&nbsp;!&nbsp;
[&nbsp;[&nbsp;
]&nbsp;]&nbsp;
.&nbsp;.&nbsp;
@&nbsp;@&nbsp;

        在XSS攻击字符前后加上“&nbsp;”字符串,使得攻击脚本无法运行,同时在浏览器显示的时候不会影响显示内容。
 


CSRF: 跨站点请求伪造

        CSRF(Cross Site Request Forgery,跨站点请求伪造),攻击者通过跨站请求,以合法用户的身份进行非法操作,如转账交易、发表评论等,如图

 CSRF 的主要手法是利用跨站请求,在用户不知情的情况下,以用户的身份伪造请求。其核心是利用了浏览器 Cookie 或服务器 Session 策略,盗取用户身份。 

防攻击策略是过滤器自动在所有响应页面的表单form中添加一个隐藏字段(Django中 csrf_token),合法用户在提交请求的时候,会将这个隐藏字段发送到服务器,防火墙检查隐藏字段值是否正确,来确定是否为CSRF攻击。恶意用户的请求是自己伪造的,无法构造这个隐藏字段,就会被防火墙拦截。

Python Django关键示例讲解

后端Django框架settings.py配置部分

MIDDLEWARE = [
    'django.middleware.csrf.CsrfViewMiddleware',

]

用户前端web页面隐藏字段示例

 前端对用户隐藏,每次刷新网页会获取新的完全不同的token,已便验证请求连续非偶然构造,每次提交请求优先校验token是否与预期一致。当然改字段除了隐藏到前端,也可以设置再cookies中前端获取再提交。

cookies中示例

csrf_token 验证不通过示例(已开启debug)


CSC: 注释与异常信息泄露

        为调试程序方便或其他不恰当的原因,有时程序开发人员会在 前端页面程序中使用 HTML 注释语法进行程序注释,这些 HTML 注释就会显示在客户端浏览器, 给黑客造成攻击便利。 

许多 Web 服务器默认是打开异常信息输出的,即服务器端未处理的异常堆栈信息会直接输出到客户端浏览器,这种方式虽然对程序调试和错误报告有好处,但同时也给黑客造成可乘之机。通过故意制造非法输入,使系统运行时出错,获得异常信息,从而寻找系统漏洞进行攻击。 

匹配HTML注释的正则表达式如下:

 “&lt;!--(.|&#x000A;|&#x000D;)*--&gt;”

如果匹配到HTML注释,就用空字符串replace该注释。

对于异常信息泄露检查响应状态码,如果为400,500系列错误则会进一步匹配响应体内容,是否存在错误堆栈信息。

Python Django关键示例讲解

后端Django框架中settings.py配置部分

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

前端页面异常 暴露请求路径

前端数据异常 暴露SQL配置信息 


FB: 路径遍历与强制浏览

        一些网站的业务需求,可能提供文件查看或下载功能,如果对用户查看或下载的文件不做限制,那么用户就能够查看和下载任意文件,可以使源代码文件、敏感文件等。

路径遍历漏洞成因:

如果应用程序使用用户可控制的数据,以危险的方式访问位于引用程序服务器或其后端文件系统中的文件和目录,就会出现路径遍历漏洞。

详细描述

目录遍历是通过操作URL强行访问web目录以外的文件,目录和命令,攻击者可以在目标机器的任何位置访问文件,执行命令。

    最基本的目录遍历攻击技术是在URL中使用"../"序列,改变访问资源的路径,访问到web目录以外的文件。

例如:

http://www.test.com/../../../../some/file
http://www.test.com/..%255c..%255c/some/file

正常请求为:

http://www.test.com/test.cgi?look=intex.html

如果存在目录遍历漏洞,攻击者可以访问

http://www.test.com/test.cgi?look=test.cgi

解决办法

过滤请求数据中"../"字符序列及其各种变形。

验证用户请求中提交的需要访问的文件是否在限定的范围内

更佳方案?自行查阅第三方文档或提供的服务


BAC: 越权访问

        越权访问(Broken Access Control,BAC)是web中一种常见的漏洞,且越权漏洞属于逻辑漏洞,是由于权限校验的逻辑不够严谨导致的,所以越权漏洞很难通过扫描工具发现,往往需要通过手动进行测试,而且也是渗透测试过程中必不可少的一步

        越权漏洞是在测试过程中遇到比较多的漏洞,简易理解越权漏洞,一个用户A一般只能够对自己本身的信息进行增删改查,然而由于后台开发人员的疏忽,没有在信息进行增删改查时候进行用户判断,从而导致用户A可以对其他用户进行增删改查等等操作。

        越权漏洞分为:水平越权、垂直越权

水平越权

        其称作访问控制攻击漏洞.Web应用程序在接收到用户的请求时,我们在增删改查某条数据时候,没有判断数据所对应的用户,或者在判断数据的用户时是通过从用户表单参数中获取userid来实现的,可以修改userid来实现水平越权。

        一般在增删改查,登陆,更新的地方寻找越权漏洞。

        漏洞修复建议:如果使用token来作为后续身份识别的令牌的话,应该是在提交密码或者验证码的数据包中而且验证通过后返回token,否则可以利用token直接进行越权访问。另外可通过鉴权表每次校验请求用户是否有相应权限实现拦截。

垂直越权

        垂直越权又叫做权限提升攻击,具体原因就是web应用没有做用户权限控制,或者只是在菜单上做了权限控制,导致恶意用户只要猜测到其他管理页面的URL,就可以访问或者控制其他角色拥有的数据或者页面,达到权限提升的目的。漏洞为绕过登陆验证直接访问后台。


结束语

没有绝对安全的系统

  • 0
    感动
  • 0
    路过
  • 0
    高兴
  • 0
    难过
  • 0
    搞笑
  • 0
    无聊
  • 0
    愤怒
  • 0
    同情
热度排行
友情链接