安全笔记系列之XSS(一)

admin 2024年9月28日13:39:12评论14 views字数 1999阅读6分39秒阅读模式
欢迎关注公众号,更多内容喔~

引言

    了解XSS成因,挖掘XSS风险。

基础知识

XSS分类

 1、反射型

反射型跨站脚本(Reflected Cross-Site Scripting)是最常见,也是使用最广的一种,可将恶意脚本附加到URL地址的参数中。

反射型XSS的利用一般是攻击者通过特定手法(如电子邮件) ,诱使用户去访问一个包含恶意代码的URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。此类XSS通常出现在网站的搜索栏、用户登录口等地方,常用来窃取客户端Cookies或进行钓鱼欺骗。

服务器端代码:

```<?php  // Is there any input?if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Feedback for end userecho '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';}?>```

可以看到,代码直接引用了name参数,并没有做任何的过滤和检查,存在明显的xss漏洞。

2、持久型

持久型跨站脚本(Persistent Cross-Site Scripting)也等同于存储型跨站脚本(Stored Cross Site Scripting) 。

此类xss不需要用户单击特定URL就能执行跨站脚本,攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。持久型XSS一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。

服务器端代码:

```<?phpif( isset( $_POST[ 'btnSign' ] ) ) {// Get input$message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] );      // Sanitize message input$message = stripslashes( $message );$message = mysql_real_escape_string( $message );// Sanitize name input$name = mysql_real_escape_string( $name );// Update database$query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";$result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' ); //mysql_close(); }?>```

代码只对一些空白符、特殊符号、反斜杠进行了删除或转义,没有做xsS的过滤和检查,且存储在数据库中,明显存在存储型XSS漏洞。

3.DOM

DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。

安全笔记系列之XSS(一)

dom就是一个树状的模型,你可以编写Javascript代码根据dom一层一层的节点,去遍历/获取/修改对应的节点,对象,值。了解了这么一个知识点,你就会发现,其实dom xss并不复杂,他也属于反射型xss的一种(domxss取决于输出位置,并不取决于输出环境,因此domxss既有可能是反射型的,也有可能是存储型的),简单去理解就是因为他输出点在DOM。dom - xss是通过url传入参数去控制触发的)分析完dom-xss之后,再说说存储型xss,其实也很好理解,存储型xss,自然就是存入了数据库,再取出来,导致的xss。3,)反射型xss实际上是包括了dom - xss了,关键点仍然是在通过url控制了页面的输出(dom-xss也类似,只因为输出地点不同而导致结果不一致)。

DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。

在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

**可能触发DOM型XSS的属性:**

document.referer属性

window.name属性

location属性

innerHTML属性

documen.write属性

下篇更新XSS利用方式总结和代码demo分析

来玩

欢迎进群吹水交流~~~

安全笔记系列之XSS(一)

原文始发于微信公众号(赛博之眼CyberEye):安全笔记系列之XSS(一)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月28日13:39:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安全笔记系列之XSS(一)http://cn-sec.com/archives/1993290.html

发表评论

匿名网友 填写信息