上一篇介绍的系统,已能预警现实中的大多数 XSS 攻击,但想绕过还是很容易的. 由于是在前端防护,策略配置都能在源代码里找到,因此很快就能试出破解方案.并且攻击者可以屏蔽日志接口,在自己电脑上永不发出报警信息,保证测试时不会被发现. 昨天提到最简单并且最常见的 XSS 代码,就是加载站外的一个脚本文件.对于这种情况,关键字扫描就无能为力了,因为代码可以混淆的千变万化,我们看不出任何异常,只能将其放行. 因此,我们还需增加一套可疑模块跟踪系统. 被动扫描 和之前说的一样,最简单的办法仍是遍历扫描.…
前一段时间,在EtherDream大神的博客里看到关于XSS防火墙的一系列文章,觉得很有意思.刚好科创要做一个防火墙,就把XSS前端防火墙作为一个创新点,着手去实现了. 在实现过程中,由于各种原因,比如说JavaScript不熟练啦,SQL注入防火墙的干扰啦,出现了一系列问题,在文章中也会提到. 0x00 对XSS的分类 根据触发方式和可执行脚本的位置,把XSS分成如下几类,每一种都有不同的防御方式: 1) 内嵌型,直接内嵌在HTML标签中的一些可执行JS代码的属性中,如: <a href=&quo…
上一篇讲解了钩子程序的攻防实战,并实现了一套对框架页的监控方案,将防护作用到所有子页面. 到目前为止,我们防护的深度已经差不多,但广度还有所欠缺. 例如,我们的属性钩子只考虑了 setAttribute,却忽视还有类似的 setAttributeNode.尽管从来不用这方法,但并不意味人家不能使用. 例如,创建元素通常都是 createElement,事实上 createElementNS 同样也可以.甚至还可以利用现成的元素 cloneNode,也能达到目的.因此,这些都是边缘方法都是值得考虑…
昨天尝试了一系列的可疑模块拦截试验,尽管最终的方案还存在着一些兼容性问题,但大体思路已经明确了: 静态模块:使用 MutationObserver 扫描. 动态模块:通过 API 钩子来拦截路径属性. 提到钩子程序,大家会联想到传统应用程序里的 API Hook,以及各种外挂木马.当然,未必是系统函数,任何 CPU 指令都能被改写成跳转指令,以实现先运行自己的程序. 无论是在哪个层面,钩子程序的核心理念都是一样的:无需修改已有的程序,即可先执行我们的程序. 这是一种链式调用的模式.调用者无需关心…
昨天尝试了一系列的可疑模块拦截试验,尽管最终的方案还存在着一些兼容性问题,但大体思路已经明确了: 静态模块:使用 MutationObserver 扫描. 动态模块:通过 API 钩子来拦截路径属性. 提到钩子程序,大家会联想到传统应用程序里的 API Hook,以及各种外挂木马.当然,未必是系统函数,任何 CPU 指令都能被改写成跳转指令,以实现先运行自己的程序. 无论是在哪个层面,钩子程序的核心理念都是一样的:无需修改已有的程序,即可先执行我们的程序. 这是一种链式调用的模式.调用者无需关心…
例如,我们的属性钩子只考虑了 setAttribute,却忽视还有类似的 setAttributeNode.尽管从来不用这方法,但并不意味人家不能使用. 例如,创建元素通常都是 createElement,事实上 createElementNS 同样也可以.甚至还可以利用现成的元素 cloneNode,也能达到目的.因此,这些都是边缘方法都是值得考虑的. 下面我们对之前讨论过的监控点,进行逐一审核. 内联事件执行 eval 在第一篇文章结尾谈到,在执行回调的时候,最好能监控 eval,setTi…
由于是在前端防护,策略配置都能在源代码里找到,因此很快就能试出破解方案.并且攻击者可以屏蔽日志接口,在自己电脑上永不发出报警信息,保证测试时不会被发现. 昨天提到最简单并且最常见的 XSS 代码,就是加载站外的一个脚本文件.对于这种情况,关键字扫描就无能为力了,因为代码可以混淆的千变万化,我们看不出任何异常,只能将其放行. 因此,我们还需增加一套可疑模块跟踪系统. 被动扫描 和之前说的一样,最简单的办法仍是遍历扫描.我们可以定时分析页面里的脚本元素,发现有站外地址的脚本就发送预警日志. 如果昨天…
到目前为止,我们把能用前端脚本防御 XSS 的方案都列举了一遍. 尽管看起来似乎很复杂累赘,不过那些是理论探讨而已,在实际中未必要都实现.我们的目标只是为了预警,能发现问题就行,并非要做到滴水不漏的程度. 事实上,HTML5 早已制定了一套浏览器 XSS 解决方案 -- Content Security Policy,并且大多主流浏览器实现了这个标准. 既然我们使用前端脚本重新实现一遍,因此得在各个方面占有优势. 兼容性 CSP 目前主流浏览器大多已支持,IE10.11 支持部分功能.对于 IE…
到目前为止,我们把能用前端脚本防御 XSS 的方案都列举了一遍. 尽管看起来似乎很复杂累赘,不过那些是理论探讨而已,在实际中未必要都实现.我们的目标只是为了预警,能发现问题就行,并非要做到滴水不漏的程度. 事实上,HTML5 早已制定了一套浏览器 XSS 解决方案 —— Content Security Policy,并且大多主流浏览器实现了这个标准. 既然我们使用前端脚本重新实现一遍,因此得在各个方面占有优势. 兼容性 CSP 目前主流浏览器大多已支持,IE10.11 支持部分功能.对于 IE…
关于 XSS 怎样形成.如何注入.能做什么.如何防范,前人已有无数的探讨,这里就不再累述了.本文介绍的则是另一种预防思路. 几乎每篇谈论 XSS 的文章,结尾多少都会提到如何防止,然而大多万变不离其宗.要转义什么,要过滤什么,不要忘了什么之类的.尽管都是众所周知的道理,但 XSS 漏洞十几年来几乎从未中断过,不乏一些大网站也时常爆出,小网站更是家常便饭. 预警系统 事实上,至今仍未有一劳永逸的解决方案,要避免它依旧使用最古老的土办法,逐个的过滤.然而人总有疏忽的时候,每当产品迭代更新时,难免会遗…
XSS报警机制(前端防火墙:第二篇) 在第一章结尾的时候我就已经说了,这一章将会更详细的介绍前端防火墙的报警机制及代码.在一章出来后,有人会问为什么不直接防御,而是不防御报警呢.很简单,因为防御的话,攻击者会定位到那一段的JavaScript代码,从而下次攻击的时候绕过代码.如果不防御而报警的话,攻击者会降低警觉,不会在看JavaScript代码(至少我是这样).回到正题,下面说的代码,是基于thinkphp框架和bootstrap3.3.5框架.如果你的网站没有使用thinkphp3.2.3框…
最近 工作需要  接触了Mock.js. Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试.提供了以下模拟功能: 根据数据模板生成模拟数据 模拟 Ajax 请求,生成并返回模拟数据 基于 HTML 模板生成模拟数据 http://mockjs.com/ 什么入门之类的 看官网就会~~~ Fiddler   web调试利器 便于我们调试前后端数据等. Fiddler是一个web调试代理.它能够记录所有客户端和服务器间的http请求,允许你监视,设置断点,…
一.路由拦截使用 首先在定义路由的时候就需要多添加一个自定义字段requireAuth,用于判断该路由的访问是否需要登录.如果用户已经登录,则顺利进入路由,否则就进入登录页面,路由配置如下: const routes = [ { path: '/', name: '/', component: Index }, { path: '/repository', name: 'repository', meta: { requireAuth: true, // 添加该字段,表示进入这个路由是需要登录的…
测试网站: http://testphp.vulnweb.com/login.php 浏览器代理设置为:127.0.0.1:8080 查看拦截流量: 方式1:通Proxy - Intercept 方式二:Proxy - HTTP history…
这份学习链接已经足够了:http://seajs.org/docs/#intro 我假设你至少已经浏览过上述链接文档.并且掌握了基本的seajs基础知识~ 手把手教你创建helloworld~ HelloWorld 程序员嘛,难免有helloworld情结~ 平台:win7.chrome ① 创建helloworld文件夹 ② 在helloworld文件夹下,创建index.html.style.css.init.js.data.js.test-export.js.还有一个 lib 文件夹 ③…
1. 什么是XSS攻击? 正常的页面被渗出了攻击者的js脚本,这些脚本可以非法地获取用户信息,然后将信息发送到attacked的服务端. XSS是需要充分利用输出环境来构造攻击脚本的 2. 危害 非法获取用户cookie.ip等内容 窃取用户输入的内容 劫持浏览器,形成DDOS攻击 3. 类型 Reflected XSS:可以理解为参数型XSS攻击,攻击的切入点是url后面的参数 // 合法页面 url: http://aa.com?test=1234 <input type="text&…
前言 之前介绍了 HTTPS 前端劫持 的方案,虽然很有趣,然而现实却并不理想.其唯一.也是最大的缺陷,就是无法阻止脚本跳转.若是没有这个缺陷,那就非常完美了 -- 当然也就没有必要写这篇文章了. 说到底,还是因为无法重写 location 这个对象 -- 它是脚本跳转的唯一渠道.尽管也流传一些 Hack 能勉强实现,但终究是不靠谱的. 事实上,在最近封稿的 HTML5 标准里,已非常明确了 location 的地位 -- Unforgeable. 这是个不幸的消息.不过也是件好事,让我们彻底打…
之前介绍了 HTTPS 前端劫持 的方案,尽管非常有趣.然而现实却并不理想. 其唯一.也是最大的缺陷.就是无法阻止脚本跳转.若是没有这个缺陷,那就非常完美了 -- 当然也就没有必要写这篇文章了. 说究竟,还是由于无法重写 location 这个对象 -- 它是脚本跳转的唯一渠道.虽然也流传一些 Hack 能勉强实现,但终究是不靠谱的. 其实,在近期封稿的 HTML5 标准里,已很明白了 location 的地位 -- Unforgeable. 这是个不幸的消息.只是也是件好事,让我们彻底打消各种…
作为前端,一直以来都知道HTTP劫持与XSS跨站脚本(Cross-site scripting).CSRF跨站请求伪造(Cross-site request forgery).但是一直都没有深入研究过,前些日子同事的分享会偶然提及,我也对这一块很感兴趣,便深入研究了一番. 最近用 JavaScript 写了一个组件,可以在前端层面防御部分 HTTP 劫持与 XSS. 当然,防御这些劫持最好的方法还是从后端入手,前端能做的实在太少.而且由于源码的暴露,攻击者很容易绕过我们的防御手段.但是这不代表我…
作为前端,一直以来都知道HTTP劫持与XSS跨站脚本(Cross-site scripting).CSRF跨站请求伪造(Cross-site request forgery).但是一直都没有深入研究过,前些日子同事的分享会偶然提及,我也对这一块很感兴趣,便深入研究了一番. 最近用 JavaScript 写了一个组件,可以在前端层面防御部分 HTTP 劫持与 XSS. 当然,防御这些劫持最好的方法还是从后端入手,前端能做的实在太少.而且由于源码的暴露,攻击者很容易绕过我们的防御手段.但是这不代表我…
说到跨站资源监控,首先会联想到『Content Security Policy』.既然 CSP 好用,我们何必自己再搞一套呢.那就先来吐槽下 CSP 的缺陷. 目前的 CSP 日志不详细 用过 CSP 的都很郁闷,上报的只有违规的站点名,却没有具体路径.这是缺陷,还是特意的设计? 显然,CSP 是为安全定制的,里面的规范自然要严格制定,否则就会带来新的安全问题.如果支持详细路径的上报,那又会引出什么问题? 由于 CSP 会上报所有的请求,甚至包括重定向的,因此可以用来探测重定向后的地址.假如已登…
一个基于php的防火墙程序,拦截sql注入和xss攻击等 安装 composer require xielei/waf 使用说明 $waf = new \Xielei\Waf\Waf(); $waf->run(); 自定义拦截规则 $rules = [ '\.\./', //禁用包含 ../ 的参数 '\<\?', //禁止php脚本出现 '\s*or\s+.*=.*', //匹配' or 1=1 ,防止sql注入 'select([\s\S]*?)(from|limit)', //防止sql…
封装 axios 模块 封装背景 使用axios发起一个请求是比较简单的事情,但是axios没有进行封装复用,项目越来越大,会引起越来越多的代码冗余,让代码变得越来越难维护.所以我们在这里先对 axios 进行二次封装,使项目中各个组件能够复用请求,让代码变得更容易维护. 封装要点 统一 url 配置 统一 api 请求 request (请求) 拦截器,例如:带上token等,设置请求头 response (响应) 拦截器,例如:统一错误处理,页面重定向等 根据需要,结合 Vuex 做全局的…
x64内核HOOK技术之拦截进程.拦截线程.拦截模块 一丶为什么讲解HOOK技术. 在32系统下, 例如我们要HOOK SSDT表,那么直接讲CR0的内存保护属性去掉. 直接讲表的地址修改即可. 但是在64位系统下,不可以这样操作了. 第一是因为 SSDT表加密了. 第二是 SSDT表你就算解密了. 那么你的API的地址也会很远. SSDT表放不下4G以外的地址. 所以也不能放. 而现在.试想一下, 杀毒软件也要在内核中做点手脚. 如果不能HOOK了,它们该怎么发展那? 所以到了win7 (64…
前端开发和其他开发工作的主要区别,首先是前端是基于多语言.多层次的编码和组织工作,其次前端产品的交付是基于浏览器,这些资源是通过增量加载的方式运行到浏览器端,如何在开发环境组织好这些碎片化的代码和资源,并且保证他们在浏览器端快速.优雅的加载和更新,就需要一个模块化系统,这个理想中的模块化系统是前端工程师多年来一直探索的难题. 模块系统的演进 script 标签 <script src="module1.js"></script> <script src=&…
楔子 上篇文章解决了提交/合并请求自动触发的需求,但所有前端模块都在同一个代码仓库里,如何获取变更文件路径确定要发布哪个模块呢?本文将带你解决这个问题. 思路 分别解决 3 个问题: 获取变更的文件列表 根据文件列表判断所属模块 构建与发布脚本 过程 GitLab 事件触发 Jenkins 构建只是一个启动信号,获取变更文件列表需要知晓上一次构建时某个仓库的版本号,这里 Jenkins 的插件 git-plugin 已经帮我们实现了这部分工作.所以只需要通过 git-plugin 检出代码即可.…
给你讲清楚什么是XSS攻击 1. 什么是XSS攻击 跨站脚本攻击(Cross Site Scripting)本来的缩写为CSS,为了与层叠样式表(Cascading Style Sheets,CSS)的缩写进行区分,将跨站脚本攻击缩写为XSS.因此XSS是跨站脚本的意思. XSS跨站脚本攻击(Cross Site Scripting),的本质是攻击者在web页面插入恶意的script代码(这个代码可以是JS脚本.CSS样式或者其他意料之外的代码),当用户浏览该页面之时,嵌入其中的script代码…
许多应用系统都有注册模块,正常用户通过注册功能,获得应用系统使用权限:而非法用户通过注册模块,则是为了达到不可告人的目的,非法用户可以通过注册模块与服务端进行交互(一切用户输入都不可信),因此系统上线前,有必要对注册模块进行重点测试. 一.注册模块是否面向大众 根据系统业务需求,分析注册模块面向群体:如果是面向大众,则注册模块应该放在显而易见的地方:比如freebuf的注册功能 重点要强调一下面向内部的注册功能,此时注册模块应该是尽可能的隐藏起来.对内部注册模块隐藏的是否完美,上线前就必须进行测…
官方文档地址: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html#sec-Introduction_to_firewalld1 修改防火墙配置文件之前,需要对之前防火墙做好备份 重启防火墙后,需要确认防火墙状态和防火墙规则是否加载,若重启失败或规则加载失败,则所有请求都会被防火墙拦截 1 2 3 4 5 6 7…
作为一只小小小白的安全新手,只会简单的用sqlmap扫扫网站,用burpsuite的proxy模块拦截一些请求.最近又对proxy有点儿小理解,记录之. 1. 查看sqlmap注入的语句以及HTTP request/response信息 sqlmap是很好用的自动测试工具,但有时候想要查看请求具体的内容,也就是payload的内容.sqlmap自带了-v 参数,当-v >= 3的时候会显示注入的payload,但在实际测试过程中页面刷的太快看不清内容,且呈现的效果不易读.可以通过设置proxy参…