安全测试基础知识

作者: 小菠萝测试笔记

常见安全问题

跨站脚本攻击XSS

跨站请求伪造攻击CSRF

前端Cookies安全性

点击劫持攻击

传输过程安全问题

用户密码安全问题 SQL注入攻击

XSS(Cross Site Scripting)跨站脚本攻击介绍

什么是XSS web攻击的一种,通过对网页注入可执行代码(html代码或JS代码)成功被浏览器执行 实施XSS攻击具备的条件

  1. 需要向web页面能够注入恶意代码(输入框、url)
  2. 恶意代码能够被浏览器成功执行 XSS攻击原理

用户传入的数据被当做是程序,所以会执行程序

XSS能干嘛

  • 获取页面数据:通过document即可获取指定元素的值,如获取用户名称、手机号、住址等【偷取网站任意数据包括用户资料】
  • 获取cookies:通过document.cookies可以获取网站当前的所有cookies,盗取当前登录用户的登录态,从而冒充被盗用户登录网站甚至后台管理系统【偷取用户密码和登录态】
  • 劫持前端逻辑:可以修改某个操作的反馈内容,譬如点击某个按钮本来应该只提交一个请求,但通过XSS脚本可篡改该请求地址,然后用户提交的信息发送到攻击者封装的接口;或可改变用户跳转的页面【欺骗用户,流量劫持】
  • 发送请求:攻击者可以让用户在不知情的情况下发送某个请求收集用户信息 XSS攻击方式
  • 反射型XSS:用户访问一个被攻击者篡改后的链接时,被植入的脚本会被用户浏览器执行,也称非持久型因为是一次性,仅对当次的页面访问产生影响
  • 反射型XSS场景:带有XSS脚本的链接转成的短链;【在url后跟xss脚本】,网址跳转
  • 存储型XSS:包含XSS攻击脚本的内容会被存储到服务器端,也称持久型,用户读取到内容时会自动执行脚本
  • 存储型XSS场景:其他用户查看别人发布的留言、评论,管理员发布的公告,黑客发布的博客文章;反馈功能,投诉功能,聊天记录功能

 XSS攻击注入点

  • HTML节点内容:动态生成,包含用户输入的内容,从而包含XSS脚本
  • HTML属性:像img的src、输入框的value等需要用户自行输入的地方
  • JS代码:某个JS代码需要用户传值进入
  • 富文本:富文本编辑框本身保存的内容就包含html标签,用户可输入XSS脚本 潜在注入点

判断输入点是否可以成功把数据注入到页面内容,对于提交数据内容但是不输出到页面的输入点是没有必要进行Fuzzing的,因为即使可以提交攻击代码,也不会产生XSS; Fuzzing:模拟XSS攻击,模糊测试挖漏洞最常用的一种手段,不断尝试的过程 Payload:相当于测试用例

标签属性中: 如<a href="注入位置">test</a>,       Payload:"></a><script>alert(0)</script><a href="
标签事件中: <img href="a.jpg" onload="注入位置">,   Payload:alert(0)

防御XSS攻击

  1. 浏览器自带防御,X-XSS-Protection,主要防御反射型XSS攻击,如参数出现在HTML内容和属性
  2. 对html内容进行转义,譬如将【<>】转义成\< \> 存入数据库时即转义,或显示时转义
  3. 对html属性中的双引号和单引号【“” ''】转义成\&quto; '
  4. CSP1(Content SecurityPolicy)内容安全策略,用于指定哪些内容可执行

CSRF(Cross Site Request Forgy)跨站请求伪造

通俗易懂的理解CSRF

  1. 用户访问的网站对恶意网站发出了一些请求,且这些请求是用户不知情的情况下完成的
  2. 攻击者盗用受信任用户的身份,以他的名义向第三方网站发送恶意请求,对于服务器来说这个请求时合法的 CSRF攻击原理

 CSRF是如何攻击的?又如何防御

  1. 站点B向站点A发送请求
  2. 请求带站点Acookies
  3. 不访问站点A前端
  4. referer为站点B CSRF攻击危害
  5. 利用用户登录态
  6. 用户不知情
  7. 完成业务请求(盗取用户资金、冒充用户发帖背锅)
  8. 造成蠕虫攻击

    原文创作:小菠萝测试笔记

    原文链接:https://www.cnblogs.com/poloyy/p/12098590.html

文章列表

更多推荐

更多
  • Pharo敏捷人工智能-第一部分:神经网络
    Apache CN

  • Pharo敏捷人工智能-第二部分:遗传算法
    Apache CN

  • Pharo敏捷人工智能-# 第三部分:神经进化 第三部分:神经进化
    Apache CN

  • Go安全-二、Go 编程语言 Go 语言规范,The Go playground,Go之旅,关键词,评论,类型,Boolean,数字的,通用编号,具体数字,无符号整数,Signed integers,浮点数,其他数字类型,一串, 在深入研究使用 GO 进行安全
    Golang资深开发

  • Go安全-三、使用文件 File basics,创建空文件,截断文件,获取文件信息,重命名文件,删除文件,打开和关闭文件,检查文件是否存在,检查读写权限,更改权限、所有权和时间戳,硬链接和符号链接,读写,复制文件,Seeking positions in a
    Golang资深开发

  • Go安全-一、Go 安全简介 About Go,Go语言设计,The History of Go,收养与社区,关于Go的常见批评,Go工具链,Go吉祥物,学习Go,为什么要用Go?,为什么使用 Go 进行安全保护?,为什么不使用 Python 呢?,为什么不使用 J
    Golang资深开发

  • Go安全-零、前言 这本书是给谁的,这本书涵盖的内容,充分利用这本书,下载示例代码文件,使用的惯例,联系,评论, 本书涵盖了 Go 编程语言,并解释了如何将其应用于网络安全行业。所涵盖的主题对于红色和蓝色团队、希望编写安全代码的开发人员以及希望保护其
    Golang资深开发

  • Go安全-十、爬虫 爬虫基础,使用 strings 包在 HTTP 响应中查找字符串,使用正则表达式查找页面中的电子邮件地址,从 HTTP 响应中提取 HTTP 头,使用 HTTP 客户端设置 Cookie,在 web 服务器上查找未列出的文件,更改请求的
    Golang资深开发

  • Go安全-六、密码学 散列,散列小文件,散列大文件,安全地存储密码,加密,加密安全伪随机数生成器CSPRNG,Symmetric encryption,AES,非对称加密,生成公钥和私钥对,对邮件进行数字签名,验证签名,TLS,生成自签名证书,创建证书签名请
    Golang资深开发

  • Go安全-七、安全 Shell(SSH) 七、安全 ShellSSH使用 GoSSH 客户端,Authentication methods,使用密码进行身份验证,使用私钥进行身份验证,验证远程主机,通过 SSH 执行命令,启动交互式 shell, 安全外壳(S
    Golang资深开发

  • 近期文章

    更多
    文章目录

      推荐作者

      更多