Html标签带来的安全隐患

作者:佚名  来源:www.hackbase.com   发布日期:2006-6-5

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

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

  是在当前的页面嵌入一个图片,现在的论坛程序在发帖子以及个人头像那里都有这个功能,当浏览器遇到这个Html标记的时候就会根据src的地
址,这里是/UpLoadFiles/NewsPhoto/oveshell.jpg去寻找网络资源,当找到这个图片的时候就会访问并且下载这个资源然后在本地进行解析,
在浏览器里显示出这个图片,如果找不到这个资源就会显示一个红叉表示出错了。这里/UpLoadFiles/NewsPhoto/oveshell.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、刷流量:我们可以在一个流量大的论坛把自己的图象设置成要刷的页面,然后每一个浏览者都会去访问下我们的页面,不管他是否看到了,但是他访问了,不是么?

  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=';update/**/Dv_User/**/set/**/UserEmail=(select/**/top/**/1/**/

[Username]/**/from/**/Dv_admin)/**/where[UserName]='loveshell';--

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

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

  5 ......

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

  防御和利用都是艰难的。

转载于:https://www.cnblogs.com/QDuck/archive/2006/06/22/433202.html

Html标签带来的安全隐患相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. FPGA之道(44)HDL中的隐患写法

    文章目录 前言 有隐患的混写逻辑 VHDL中应该禁止的写法 在时序process中使用variable 在组合process中使用variable 鲁莽的process糅合 Verilog中应该禁止的 ...

最新文章

  1. 中美科技成果转化比较分析
  2. 非常方便的node内置的调试方法
  3. Hadoop自带的一些程序示例
  4. java socket 推送机制_Java中websocket消息推送的实现代码
  5. 上市公司降价200万卖房仍然无人接手,有的甚至降价1900万
  6. Git 出现Branch master set up to track remote branch master问题 与忽略文件上传
  7. 由m种数字组成的n位数有多少个
  8. 转《针对不同版本的ie调用不同css样式》
  9. docker 删除默认连接_database – 如何从已删除的Docker容器中恢复数据?如何将其重新连接到数据?...
  10. matlab 向量元素,MATLAB遍历向量的元素
  11. python机器人开发学校,机器人Python青少年编程开发实例
  12. C++ 第四章 4.1
  13. tcp keeplive
  14. 笔记1-fedora14初识及vmware-tool安装
  15. 2018 UL国际皇冠杯将于10月4日-7日在仁川举行
  16. html页面内容上下左右居中,HTML元素水平垂直居中实现方式(每天一个知识点)...
  17. 北大青鸟S2MySQL内测题答案_ACCP 北大青鸟 S2 结业项目机试答案
  18. html5 声控游戏,声控最爱的10款声音类APP,有趣又好玩!
  19. Ubuntu16.04在4K显示器中,字体太小,进行调整
  20. 叠氮功能化硫铟铜量子点CuInS Qds-N3|炔基修饰碲化镉/硫化硒量子点 CdTe/CdSe Qds-Alkyne科研试剂

热门文章

  1. php ci 表单校验,表单验证 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档
  2. 【NOIP2013模拟】粉刷匠 题解代码
  3. python边缘检测代码_Python中的边缘检测
  4. wegame一键蹲替换文件_iPhone 提示音一键替换,极简教程
  5. linux打开sqlite3数据库,Centos6.5中如何用sqlite3命令打开’.db’后缀的数据库执行sql...
  6. ensp支持哪个版本virtualbox_如何在 Fedora 中安装 VirtualBox
  7. Efficient Sparse Coding Algorithm
  8. 文本分类入门(十)特征选择算法之开方检验
  9. BZOJ 3993 Luogu P3324 [SDOI2015]星际战争 (最大流、二分答案)
  10. ansible安装部署_运维日记|使用ansible批量部署crontab定时删归档任务