《Web安全基础》05. XSS · CSRF · SSRF · RCE

2023-10-29


本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《安全工具录》。

靶场参考:XSS-Labs,pikachu,DVWS。

1:XSS

在这里插入图片描述

1.1:简介

XSS(Cross-Site Scripting),跨站脚本攻击。它允许攻击者向网页注入恶意脚本代码,然后在用户的浏览器上执行这些恶意脚本。

危害

  • 钓鱼欺骗
  • 网站挂马
  • 身份盗用
  • 盗取网站用户信息
  • 垃圾信息发送
  • 劫持用户 Web 行为
  • XSS 蠕虫

分类

  • 反射型(非持久型)
    一般把可以执行的 js 代码放到 URL 里,可通过邮件诱导用户点击。
    攻击过程:发包 h=123 -> x.php -> 返回浏览器执行。
  • 存储型(持久型)
    恶意代码被后台存储之后,用户打开相应页面的时候就会执行脚本。
    攻击过程:发包 h=123 -> x.php -> 写到数据库 -> x.php -> 返回浏览器执行。
  • DOM 型
    攻击过程:发包 h=123 -> 本地浏览器静态前端代码 -> x.php -> 返回浏览器执行。

Webshell 后门中的后门

通过在 webshell 程序中植入后门,形成 “ 黑吃黑 ”,用有后门的木马入侵的网站也可以被木马制造者利用。webshell 的后门就可以利用 XSS 实现。

1.2:防护与绕过

1.2.1:HttpOnly

HttpOnly:如果 HTTP 响应头中包含 HttpOnly 标志,只要浏览器支持,客户端脚本就无法访问 cookie。因此,即使存在 XSS 缺陷,且用户意外访问利用此漏洞的链接,浏览器也不会向第三方透露 cookie。

如果浏览器不支持 HttpOnly,浏览器会忽略 HttpOnly 标志,从而创建一个传统的,脚本可访问的 cookie。

HttpOnly 属性只能防止 cookie 被盗取,不能防止 xss 漏洞。

绕过 httponly

  • 若浏览器保存帐号密码:从浏览器读取帐号密码。
  • 若浏览器未保存帐号密码:需要使用 xss 跳转登录地址,再利用表单劫持。

1.2.2:WAF 绕过

常规 WAF 绕过思路

  • 标签语法替换
  • 特殊符号干扰
  • 提交方式更改
  • 垃圾数据溢出
  • 加密解密算法
  • 结合其他漏洞绕过

1.3:相关资源

XSS 平台
https://xss.yt

webshell 收集
https://github.com/tennc/webshell

工具 XSStrike
https://github.com/s0md3v/XSStrike

工具 Xwaf
https://github.com/3xp10it/xwaf

关于 XSS 漏洞修复
https://www.cnblogs.com/baixiansheng/p/9001522.html

绕过 XSS 检测机制
https://bbs.kanxue.com/thread-250852.htm

Fuzz 字典
https://github.com/TheKingOfDuck/fuzzDicts

2:CSRF

CSRF,或 XSRF(Cross-Site Request Forgery),跨站请求伪造。利用用户已经通过身份验证的会话来执行未经用户许可的操作,通过欺骗用户在不知情的情况下执行恶意请求。

也被称为 “One Click Attack” 或 “Session Riding”。

XSS:利用用户对指定网站的信任。
CSRF:利用网站对用户网页浏览器的信任。

在这里插入图片描述

漏洞攻击两个条件

  1. 用户登录受信任网站 A,并在本地生成 Cookie。
  2. 在不注销 A 的情况下,访问危险网站 B。

如果遇到 POST 型,则需要构造一个表单提交按钮欺骗用户点击。

防御方案

  • 当用户发送重要的请求时需要输入原始密码
  • 设置随机 Token
  • 检验 referer 来源
  • 设置验证码

3:SSRF

在这里插入图片描述

SSRF(Server-Side Request Forgery),服务器端请求伪造。攻击者通过受害者服务器发起网络请求,从而操纵和滥用服务器的资源,甚至访问服务器相关的内网。

SSRF 攻击的目标一般是从外网无法访问的内部系统。

在这里插入图片描述

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

SSRF 利用手段

  • 可以对外网、内网、本地进行端口扫描
  • 攻击运行在内网或本地的有漏洞程序(比如溢出)
  • 可以对内网 Web 应用进行指纹识别(通过请求默认的文件得到特定的指纹)
  • 使用 file:/// 协议或其他协议读取本地文件

SSRF漏洞(原理&绕过姿势)
https://www.t00ls.com/articles-41070.html

4:RCE

在这里插入图片描述

RCE(Remote Command/Code Execution),远程命令/代码执行。指攻击者能够成功地在远程目标计算机上执行自己的恶意代码或命令。

出现这种漏洞,一般是因为应用从设计上需要给用户提供远程命令操作的接口。

危害

  • 可能导致系统被完全控制
  • 窃取敏感数据
  • 修改文件
  • 操纵系统配置

PHP远程代码执行漏洞复现(CVE-2019-11043)
http://blog.leanote.com/post/snowming/9da184ef24bd


明月直入,无心可猜。

——《独漉篇》(唐)李白

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《Web安全基础》05. XSS · CSRF · SSRF · RCE 的相关文章

  • 如何使用 htmlpurifier 允许传递整个文档,包括 html、head、title、body

    鉴于下面的代码 我如何使用 htmlpurifier 让整个内容通过 我想允许整个 html 文档 但 html head style title body 和 meta 被删除 我什至尝试过 config gt set Core Conv
  • XSS 背后的一般概念是什么?

    跨站脚本 XSS 是一种类型 计算机安全漏洞 通常出现在网络应用程序中 这使得恶意攻击者能够 将客户端脚本注入网络 其他用户查看的页面 一个 利用跨站点脚本 漏洞可被攻击者利用 绕过访问控制 例如 同源政策 跨站点 在网站上执行的脚本是 大
  • Laravel 5.1 iframe 中的 CSRF,如何使其工作?

    我的应用程序有一个插件 用户可以在包含表单的网站中实现该插件 问题是我得到TokenMismatchException提交表格时 从我所做的所有研究中 我可以看到 Laravel 对跨域的保护 我知道我可以禁用它 但我不知道之后如何保护表单
  • CORS 中的 POST/GET 与 PUT/DELETE

    我刚刚读过this https www w3 org Security wiki Same Origin Policy 同源策略允许使用 GET 和 POST 的跨源 HTTP 请求 方法 但拒绝源间 PUT 和 DELETE 请求 PUT
  • CKEditor 安全最佳实践

    我在用http ckeditor com http ckeditor com 在我建立的一个小型 PHP MySQL 论坛中 我的问题 将用户创建的 HTML 像这样保存在数据库中然后在我的应用程序中重新显示它是否安全 我应该采取哪些预防措
  • HTTP 标头中 CRLF 序列的不正确中和

    我在我的项目上运行了 Veracode 扫描 它在 HTTP 响应拆分下给了我 CWE ID 113 问题 我尝试根据建议解决该问题 但没有成功 例如 try String selNhid req getParameter selNhid
  • 当前端/后端位于两个不同的域时,CSRF 保护如何为我提供比 CORS 控制更高的安全性?

    如果我有 一个域上的 Web 前端 另一个域上的 REST API 通过设置 header 将 REST API 服务器配置为仅允许来自 Web 前端域的跨源请求Access Control Allow Origin到 Web 前端域 除了
  • CSRF 和 X-CSRF-Token 的区别

    使用上有什么区别X CSRF Token在 HTTP 标头中或token在隐藏字段中 何时使用隐藏字段 何时使用标头以及为什么 我觉得X CSRF Token是当我使用 JavaScript AJAX 但我不确定时 CSRF 保护有多种方法
  • 反 CSRF cookie?

    我正在构建一个大量使用ajax 的应用程序 大多数反 CSRF 解决方案都围绕将一些信息放入视图状态并在发布时处理该数据 但是 我无权访问 ajax 调用中的视图状态 我计划生成一个 GUID 以在 cookie 和会话状态中插入令牌 使
  • vue 组件中的 Csrf 令牌

    我有集成了 Vue js 的 Laravel 5 3 项目 我想使用CSRF TOKEN以我的形式 表单html代码在Vue组件文件中 resources assets js bootstrap js 我有这个 Vue http inter
  • 设置配置项 (csrf) 在 Codeigniter 中不起作用

    我只想在我的几个控制器中打开 csrf 保护 所以我有 function construct parent construct this gt load gt library form validation this gt load gt
  • PHP XSS 预防白名单

    我的网站使用所见即所得编辑器 供用户更新帐户 输入评论和发送私人消息 编辑器 CKEditor 非常适合只允许用户输入有效的输入 但我担心通过 TamperData 或其他方式注入 我如何在服务器端控制这个 我需要将特定标签列入白名单 b
  • Ruby on Rails Devise Oauth-facebook OmniAuth::Strategies::OAuth2::CallbackError

    我使用 facebook 实现 oauth 登录并设计 当从接受应用程序 弹出窗口 返回时 我收到以下错误 由于 检测到 Csrf 无法通过 Facebook 验证您的身份 这是日志 于 2014 01 23 23 59 58 0100 开
  • html() 与 innerHTML jquery/javascript 和 XSS 攻击

    我正在对我自己的代码测试 xss 攻击 下面的示例是一个简单的框 用户可以在其中输入他想要的任何内容 按 测试 后按钮 JS 会将输入字符串显示为两个 div 这是我为了更好地解释我的问题而制作的示例
  • HTML-Entity 转义以防止 XSS

    我有一些用户输入 在我的代码中 我确保对以下符号进行转义 gt amp lt gt lt gt gt gt OWASP https www owasp org index php XSS 28Cross Site Scripting 29
  • Cakephp - CSRF 令牌不匹配

    我在 Cakephp 3 6 中有一个项目 其中 MessageController 中的 3 个操作由 Ajax 调用 但是 我有一个问题 当我向其中一个操作发送请求时 XHR 会向我返回以下内容 message CSRF token m
  • 有没有办法阻止 iOS 上的 Safari 在关闭时清除网站的 cookie?

    我的移动网络应用程序的一位用户抱怨说 每次他关闭手机屏幕后使用该应用程序时 他都必须重新登录该应用程序 发生的情况是 当屏幕关闭时 或者当您通过双击主页按钮并滑开 Safari 来完全关闭 Safari 时 Safari 会清除该网站的 C
  • 使用 Flask/WTForms 和 React 进行 CSRF 保护

    有没有人成功地为使用 React 作为受控组件 提交到 Flask 后端 最好使用 WTForms 的表单实现了 CSRF 保护 我看过很多部分答案 其中一个是关于 Django 的 但找不到任何关于 Flask 的明确答案 我的大问题似乎
  • 使用 enctype="multipart/form-data" 时出现 CSRF 错误

    每当我将 enctype multipart form data 添加到我的 html 表单中时 我得到ForbiddenError invalid csrf token 如果我删除 enctype 它就可以工作 我发送的 csrf 代码如
  • 保护基于prototype.js的XHR请求免受CSRF攻击

    Django 已经更新到 1 3 事实上从 1 2 5 开始 它就扩展了该方案 将跨站请求伪造保护令牌传递给 XMLHttpRequests Django 人员提供了帮助jQuery 的一个例子 http docs djangoprojec

随机推荐

  • OC门和OD门概念

    OC门和OD门概念 OC门和OD门 OC 集电极开路 Open Collector OD 漏极输出 Open Drain OC门和OD门是相对于两个器件而言的 OC门是对三极管而言 OD门是对场效应管而言 OC门电路如下所示 Input信号
  • 【计算机毕业设计】74.家教平台系统源码

    一 系统截图 需要演示视频可以私聊 摘 要 21世纪的今天 随着社会的不断发展与进步 人们对于信息科学化的认识 已由低层次向高层次发展 由原来的感性认识向理性认识提高 管理工作的重要性已逐渐被人们所认识 科学化的管理 使信息存储达到准确 快
  • java storm是干什么的_实时计算入门篇-了解storm

    离线计算 最近在了解离线系统 根据自己的了解 以及参考网上的相关资料 总结了相关知识 供刚入门的同学们了解 离线计算 就是批量获取数据 批量传输数据 周期性批量计算数据 数据展示 相信大家在了解实时计算的时候肯定对离线计算有一定的了解了 比
  • 题目 2659:蓝桥杯2022年第十三届省赛真题-统计子矩阵

    题目描述 给定一个 N M 的矩阵 A 请你统计有多少个子矩阵 最小 1 1 最大 N M 满足子矩阵中所有数的和不超过给定的整数 K 输入格式 第一行包含三个整数 N M 和 K 之后 N 行每行包含 M 个整数 代表矩阵 A 输出格式
  • 【CNN时序预测】基于混合卷积神经网络和循环神经网络 CNN - RNN 实现时间序列预测附Matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • 解决电脑无法访问某些网站的问题

    解决电脑无法访问某些网站的问题 参考文章 1 解决电脑无法访问某些网站的问题 2 https www cnblogs com chy18883701161 p 10863879 html 备忘一下
  • RUN apt-get 慢

    RUN apt get 慢 在docker 的RUN apt get XXX上一行加上 RUN echo gt etc apt sources list RUN echo deb http mirrors ustc edu cn debia
  • js前端实现简单模糊匹配

    实现功能 如图所示 Input框中输入要查询字段包含的字符 即可查出想要的结果 图例 Input中输入QA333 即可查粗出相关结果 代码展示 var queryCondition var data projectdata map obj
  • ABIs [armeabi] are not supported for platform 的解决

    解决方法 在app的build gradle的ndk标签下 将armeabi 删除掉 修改前 ndk abiFilters armeabi armeabi v7a 修改后 ndk abiFilters armeabi v7a 附详细出错lo
  • matlab textscan读结构化.txt文件

    要用 matlab 读之前处理的 COCO 的 ID map 1 将 sample ID 映射去 image name 用来读图片 ID map 文件每一行的形如 0 9 000000000009 jpg 空格间开 第一列是 sample
  • (安装pclpy)pclpy+windows+anaconda

    pclpy 0 12 0版本 支持windows的python3 6和3 7版本 但pclpy 0 12 0移除了可视化模块 即看不到点云效果了 安装方法 进入对应python版本的虚拟环境 然后输入 pip install pclpy 0
  • kylin在hadoop 中的架构图_kylin跨集群配置实现读写分离

    社区提供的读写分离架构图如下 通过架构图可以看到Kylin会访问两个集群的HDFS 建议两个集群的NameService务必不能相同 尤其是集群启用NameNode HA时 相同的NameService会导致组件在跨集群访问HDFS时因无法
  • nginx配置ssl证书https解决公网ip可以访问但是域名不行的问题

    进入nginx文件夹 将下载得到的crt和key文件放到这个目录下 以下来自腾讯云官方 https cloud tencent com document product 400 35244 server SSL 访问端口号为 443 lis
  • 警告:[SetPropertiesRule]Setting property 'source' to xxx did not find a matching property.的消除

    启动JSP页面时报错 全文如下 九月 25 2016 7 47 39 下午 org apache tomcat util digester SetPropertiesRule begin 警告 SetPropertiesRule Serve
  • Python(练习七)

    一 max 0 count 0 while True num int input Enter a number 0 for end of input if num 0 break if num gt max max num count 1
  • mongodb如何使用授权登录

    前言 mongodb默认是不需要授权登录的 这样在实际生产环境中是非常危险的一件事情 接下来就来讲一下如何开启安全授权访问 1 第一次登录不启动授权 默认就是不启动 我们先来创建admin和root账号 他们是用来开启授权后操作用户 创建数
  • PWNHUB 一场新鲜赛事速达【六月内部赛】 web - login game + Misc - 伏羲八卦

    PWNHUB 一场新鲜赛事速达 六月内部赛 web login game Misc 伏羲八卦 web login game Misc 伏羲八卦 本文来自csdn的 shu天 平时会记录ctf 取证和渗透相关的文章 欢迎大家来我的主页 shu
  • thinkpad笔记本如何进bios设置u盘启动步骤

    thinkpad笔记本从u盘启动有两种方法 一种是使用u盘启动快捷键直接进入u盘装系统 另一种则需要进bios设置u盘为第一启动项 但首先要下载个u盘启动盘制作工具制作成启动u盘在进行 下面详细为大家介绍如何操作 方法一 使用u盘启动快捷键
  • 脚本一:编写一个脚本要求检测文件类型(简化版)

    要求 1 命名为check file sh 2 检测判断它是否存在 3 判断它是否为普通文件 4 判断其是否为目录 5 判断其是否为软链接 6 如没有文件名则报错 编写脚本如下 验证文件如下 可见如果文件不存在 直接报错 如果符合条件直接给
  • 《Web安全基础》05. XSS · CSRF · SSRF · RCE

    web 1 XSS 1 1 简介 1 2 防护与绕过 1 2 1 HttpOnly 1 2 2 WAF 绕过 1 3 相关资源 2 CSRF 3 SSRF 4 RCE 本系列侧重方法论 各工具只是实现目标的载体 命令与工具只做简单介绍 其使