< 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标签呢?......

  防御和利用都是艰难的。

#html/xhtml/xml专栏

转载于:https://www.cnblogs.com/netcorner/archive/2010/09/03/2911992.html

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

  1. Html标签带来的安全隐患

    Html标签带来的安全隐患 作者:佚名  来源:www.hackbase.com   发布日期:2006-6-5 WWW服务是因特网上最重要的服务之一,提供给客户各种各样的信息资源,而把这种信息资源组 ...

  2. python运行对电脑的要求_这样运行Python命令会给电脑带来极大的隐患

    Python已经成为全球最受欢迎的编程语言之一.原因当然是Python简明易用的脚本语法,只需把一段程序放入.py文件中,就能快速运行. 而且Python语言很容易上手模块.比如你编写了一个模块my_ ...

  3. 跨站脚本攻击 - 危险的脚本标签

    跨站脚本攻击 - 危险的脚本标签 漏洞描述 跨站脚本攻击(XSS)是一种代码注入.具体来说,恶意脚本会被注入到原本正常的网站中.XSS攻击通常发生在攻击者使用网络应用向其它用户发送恶意代码的时候,这些 ...

  4. 大数据带来的安全隐患有哪些

    在大数据时代,没有什么比数据安全更重要了.许多企业存储大量用户敏感的信息和数据.这些数据很容易成为犯罪分子的目标,因此企业数据管理人员对这些用户的数据安全负有重大责任. 大数据会带来哪些安全隐患? 1 ...

  5. Cookie在网站登录所带来的安全隐患及解决办法

    最近几天屡次出现登录CSDN账户登陆问题,具体的问题是:在以往保留的正确的账号和密码的界面上自动登录,登录到了一个不知名的账号上. 于是我便开始寻找正确的解决方案之路: 1. 在账号输入界面重新输入自 ...

  6. sprintf格式化字符串带来的注入隐患

    原文链接:https://paper.seebug.org/386/ 摘要点关键知识点 <?php$input = addslashes("%1$' and 1=1#"); ...

  7. URL中允许携带sessionid带来的安全隐患。

    很多WEB开发语言为了防止浏览器禁止了cookie而无法识别用户,允许在URL中携带sessionid,这样虽然方便,但却有可能引起钓鱼的安全漏洞. 图示: 下图是从测试组发来的安全报告中剪出来的,图 ...

  8. php中sql格式化字符串,sqli注入-sprintf格式化字符串带来的注入隐患

    PHP中 sprintf()格式化输出详解 sprintf()函数把格式化的字符串写入变量中. arg1.arg2.++参数将被插入到主字符串中的百分号(%)符号处.该函数是逐步执行的.在第一个%符号 ...

  9. 假作真时真亦假——“真实”IP带来的安全隐患

    Author: lake2, http://lake2.0x54.org 让我们看一段 ASP 代码先: Function getIP() Dim strIPAddr as string If Req ...

  10. 第四节:HTML5给表单带来的新标签、新属性、新类型

    上一章节讲了21个语义化的标签,这一节我们来讲表单标签,HTML5不仅仅给表单带来了新的标签,还给原来的标签带来了新的属性,这一节我们会来介绍介绍它们. 到目前为止,我们对HTML5的学习还是停留在新 ...

最新文章

  1. CCommandLineInfo类
  2. 防火墙/IDS测试工具Ftester
  3. 驱动WDK7600在VC6.0下的编译开发配置环境
  4. c语言小数点进制转换,新手求教,关于含小数的二进制转换成十进制
  5. 前松鼠拼拼产品总监吴天:做一个接地气的产品经理
  6. shell脚本应用(二)
  7. pdf转换为word小工具,挺好
  8. UVA 10004 - Bicoloring
  9. 【MySQL】Java对SQL时间类型的操作(获得当前、昨天、前年。。时间)
  10. 19.内在摄像机校准——介绍,理想与真实固有参数之比,改善内在参数_1
  11. 【.NET】SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间
  12. oracle scn与数据恢复,Oracle数据恢复:数据文件头的SCN与时间校验
  13. 新闻叙事与文学影视叙事的区别
  14. 聚焦交通缓堵之东城篇,核心区如何重拳治堵
  15. Docker基础入门详解
  16. 程序员为什么要英文好?
  17. 如何配置Binlog
  18. Java我的高效编程之常用函数
  19. android状态栏上显示图标大全,状态栏中的Android应用图标
  20. Mysql查询历史SQL执行记录

热门文章

  1. python超市管理系统总汇总功能解说_AdminModules --- 管理模块
  2. 设计模式之GOF23状态模式
  3. 飞机大战小游戏3.0
  4. java需要了解的几个算法
  5. python多进程与多线程_第十五章 Python多进程与多线程
  6. 手机5g什么时候普及_5G手机什么时间普及,现在买4G手机划算吗?
  7. 【mybatis】mybatis基础知识总结
  8. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-4.动态Sql语句Mybaties SqlProvider...
  9. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_6 mybatis中的事务原理和自动提交设置
  10. 190728-flink官方文档阅读和实战记录