Web安全之后端安全测试-漏洞介绍
一、文件上传漏洞
文件上传漏洞简介
文件上传漏洞是开发者对文件上传功能没有做充足的验证,导致允许用户上传恶意的文件,如木马、病毒、恶意的脚本等。
-
文件上传漏洞发生的场景:
文件上传是大部分web应用都具备的功能,如用户上传头像、附件、图片等到服务器。
文件上传的绕后安全检测
-
初阶绕过:
1、后缀名绕后
2、前端绕过、.htaccess绕过、大小写绕过
-
高阶的绕过:
1、文件流
2、字符串截断绕过
3、文件头检测绕过
二、SQL注入漏洞
SQL注入简介
SQL注入是发生在应用程序与数据库层的安全漏洞。
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
-
基础知识
一般的应用可以划分为:用户的界面层+业务逻辑层+数据访问层
-
原理展示
原始的应用查询语句为:select id,name from user where id = ?
如果程序是直接将用户的输入作为查询条件时如下
当用户输入1时,查询语句为:select id,name from user where id = 1
当用户输入1 or 1=1时,查询语句为:select id,name from user where id = 1 or 1=1 条件恒为真查询出所有数据,实现了数据非法获取。
GET型SQL注入
-
GET型SQL注入简介
通过在URL中修改对应的ID值,为正常数字、大数字、字符(单引号、双引号、双单引号、括号)反斜杠\来探测URL中是否存在注入点。
如网页提供的是通过输入用户id查询用户信息的按钮,输入id点击后发送get请求获取用户信息,但是当用户将原本输入id的输入替换成1'union select 1,2,3,4 --时就可以探测到所查询数据表的信息
即:http://xxxx.com/sqli_1.php?title=1' union select 1,2,3,4 --&action=search
POST型SQL注入
-
POST型SQL注入简介
POST注入信息是存储在HTTP实体内容中不是URL,通过构造实体内容达到执行SQL语句非法获取信息的目的。
三、判断SQL注入点与防御方式
-
判断方式:
1、单引号判断
当用户输入带有单引号的输入时,如果网页返回错误,则存在SQL注入
原因:无论是字符串还是整型都会因为单引号个数不匹配而报错
-
判断注入类型:
1、数字型
如通过构造输入 and 1=1
2、字符串型
通过构造输入and '1'='1
-
防御方式:
1、减少错误信息反馈
2、对输入特殊字符进行转义
3、对特殊词组进行过滤(黑名单)
常见的SQL输入类型
1、时间盲注
2、隐藏的HTTP头盲注
3、利用数据库的bug进行报错注入
四、XSS攻击(Cross-Site Scripting,跨站脚本攻击)
XSS 攻击是如何产生的。作为最普遍的网页语言,HTML 非常灵活,你可以在任意时候对 HTML 进行修改。但是,这种灵活性也给了黑客可趁之机:通过给定异常的输入,黑客可以在你的浏览器中,插入一段恶意的 JavaScript 脚本,从而窃取你的隐私信息或者仿冒你进行操作。这就是 XSS 攻击(Cross-Site Scripting,跨站脚本攻击)的原理。
-
反射型XSS
测试代码<script>alert(document.cookie)</script>
-
存储型XSS
-
DOM型XSS
-
XSS攻击危害
1、窃取 Cookie
2、未授权操作
3、按键记录和钓鱼
-
XSS防御手段
1、验证输入 OR 验证输出
2、编码
3、检测和过滤
五、CSRF(Cross-Site Request Forgery,跨站请求伪造)
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
-
CSRF 攻击的基本条件
1、使用 Cookie 进行认证;
2、参数中不包含任何隐私信息
-
CSRF攻击危害
1、修改密码
2、转账
3、相当于绕过身份认证,进行未授权的操作
-
CSRF防御手段
1、添加CSRFToken
2、二次验证来加强防护
六、SSRF(Server Side Request Forgery,服务端请求伪造)
-
SSRF攻击危害
1、内网探测
2、文件读取
-
SSRF防御手段
1、白名单限制
2、协议限制
3、请求端限制
七、框架级别漏洞利用
CVE-广泛认同的信息安全漏洞或者已经暴露出来的弱点给出的一个公共名称。
注:文中图片来源与极客时间中的web基础安全攻防专栏