安全测试-基础知识

一、安全测试基础知识
1.XSS简介
(1) 什么是XSS?
XSS(Cross Site Scripting)跨站脚本攻击,Web攻击的一种,通过对网页注入可执行代码(html代码或JS代码)成功被浏览器执行。
(2) 实施XSS具备的条件?
需要向web页面能够注入恶意代码(输入框、url);
恶意代码能够被浏览器成功执行;
(3) XSS攻击原理?
用户传入的数据被当做是程序,所以会执行程序。
(4) XSS攻击方式?
反射型XSS:用户访问一个被攻击者篡改后的链接时,被植入的脚本会被用户浏览器执行,也称非持久型因为是一次性,仅对当次的页面访问产生影响;
反射型XSS场景:带有XSS脚本的链接转成的短链;【在url后跟xss脚本】,网址跳转;
存储型XSS:包含XSS攻击脚本的内容会被存储到服务器端,也称持久型,用户读取到内容时会自动执行脚本;
存储型XSS场景:其他用户查看别人发布的留言、评论,管理员发布的公告,黑客发布的博客文章;反馈功能,投诉功能,聊天记录功能。
(5) XSS攻击注入点?
HTML节点内容:动态生成,包含用户输入的内容,从而包含XSS脚本;
HTML属性:像img的src、输入框的value等需要用户自行输入的地方;
JS代码:某个JS代码需要用户传值进入;
富文本:富文本编辑框本身保存的内容就包含html标签,用户可输入XSS脚本。
(6) XSS攻击的危害性?
获取页面数据:通过document即可获取指定元素的值,如获取用户名称、手机号、住址等【偷取网站任意数据包括用户资料】;
获取cookies:通过document.cookies可以获取网站当前的所有cookies,盗取当前登录用户的登录态,从而冒充被盗用户登录网站甚至后台管理系统【偷取用户密码和登录态】;
劫持前端逻辑:可以修改某个操作的反馈内容,譬如点击某个按钮本来应该只提交一个请求,但通过XSS脚本可篡改该请求地址,然后用户提交的信息发送到攻击者封装的接口;或可改变用户跳转的页面【欺骗用户,流量劫持】;
发送请求:攻击者可以让用户在不知情的情况下发送某个请求收集用户信息。
(7) 如何防御XSS攻击?
浏览器自带防御,X-XSS-Protection,主要防御反射型XSS攻击,如参数出现在HTML内容和属性;
对html内容进行转义,譬如将【<>】转义成< > 存入数据库时即转义,或显示时转义;
对html属性中的双引号和单引号【"" ''】转义成&quto; '
CSP1(Content SecurityPolicy)内容安全策略,用于指定哪些内容可执行。

2.CSRF简介
(1) 什么是CSRF?
CSRF(Cross Site Request Forgy)跨站请求伪造,用户访问的网站对恶意网站发出了一些请求,且这些请求是用户不知情的情况下完成的;攻击者盗用受信任用户的身份,以他的名义向第三方网站发送恶意请求,对于服务器来说这个请求是合法的。
(2) CSRF是如何攻击的?
站点B向站点A发送请求
请求带站点Acookies;
不访问站点A前端;
referer为站点B;
(3) CSRF攻击的危害性?
利用用户登录态
用户不知情
完成业务请求(盗取用户资金、冒充用户发帖背锅)
造成蠕虫攻击

3.SQL注入
(1) 什么是SQL注入?
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。
(2) SQL注入原理?
寻找到SQL注入的位置;
判断服务器类型和后台数据库类型;
针对不同的服务器和数据库特点进行SQL注入攻击;
(3) 如何防御SQL注入?
检查变量数据类型和格式;
过滤特殊符号;
绑定变量,使用预编译语句;

4.XPath注入
(1) 什么是XPath注入?
XPath注入攻击本质上和SQL注入攻击是类似的,都是输入一些恶意的查询等代码字符串,从而对网站进行攻击。
XPath注入攻击,是利用XPath 解析器的松散输入和容错特性,能够在 URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。
(2) XPath注入原理?
XPath注入攻击主要是通过构建特殊的输入,这些输入往往是XPath语法中的一些组合,这些输入将作为参数传入Web 应用程序,通过执行XPath查询而执行入侵者想要的操作。(3) 如何防御XPath注入?
数据提交到服务器上端,在服务端正式处理这批数据之前,对提交数据的合法性进行验证。
检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串。
对于系统出现的错误信息,以IE错误编码信息替换,屏蔽系统本身的出错信息。
参数化XPath查询,将需要构建的XPath查询表达式,以变量的形式表示,变量不是可以执行的脚本。
通过MD5、SSL等加密算法,对于数据敏感信息和在数据传输过程中加密,即使某些非法用户通过非法手法获取数据包,看到的也是加密后的信息。

你可能感兴趣的:(安全测试-基础知识)