LNK文件漏洞简要分析(精选7篇)由网友“张生肥肥”投稿提供,下面小编给大家整理后的LNK文件漏洞简要分析,欢迎阅读与借鉴!
篇1:LNK文件漏洞简要分析
前言
windows的shell32在处理控制面板程序的快捷方式文件时,存在一个漏洞,可以加载硬盘上的任意DLL文件,即可执行任意代码,
漏洞文件的生成
到“控制面板”下面,右键点“显示”,点“创建快捷方式”,把快捷方式创建在桌面上,
然后在桌面用WinHex打开“显示.lnk”文件。
Offset0 1 2 3 4 5 6 7 8 9 A B C D E F
篇2:TinyBrowser远程文件上传漏洞分析
发布日期:-05.27
发布作者:Amxking
影响版本:未知
官方地址: www.lunarvis.com/products/tinymcefilebrowserwithupload.php
漏洞描述: 远程文件上传漏洞
下面我们来看upload.php程序代码
1
2 require_once('config_tinybrowser.php');
3 // Set language
4 if(isset($tinybrowser['language']) && file_exists('langs/'.$tinybrowser['language'].'.php'))
5 {
6 require_once('langs/'.$tinybrowser['language'].'.php');
7 }
8 else
9 {
10 require_once('langs/en.php'); // Falls back to English
11 }
12 require_once('fns_tinybrowser.php');
13
14 // Check session, if it exists
15 if(session_id != '')
16 {
17 if(!isset($_SESSION[$tinybrowser['sessioncheck']]))
18 {
19 echo TB_DENIED;
20 exit;
21 }
22 }
23
24 if(!$tinybrowser['allowupload'])
25 {
26 echo TB_UPDENIED;
27 exit;
28 }
29
30 // Assign get variables
31 $validtypes = array('image','media','file');
32 0now = ((isset($_GET['type']) && in_array($_GET['type'],$validtypes)) ? $_GET['type'] : 'image');
33 $foldernow = str_replace(array('../','..\\','./','.\\'),'',($tinybrowser['allowfolders'] && isset($_REQUEST['folder']) ? urldecode($_REQUEST['folder']) : ''));
34 $passfolder = '&folder='.urlencode($foldernow);
35 $passfeid = (isset($_GET['feid']) && $_GET['feid']!='' ? '&feid='.$_GET['feid'] : '');
36 $passupfeid = (isset($_GET['feid']) && $_GET['feid']!='' ? $_GET['feid'] : '');
37
38 // Assign upload path
39 $uploadpath = urlencode($tinybrowser['path'][0now].$foldernow);
40
41 // Assign directory structure to array
42 $uploaddirs=array();
43 dirtree($uploaddirs,$tinybrowser['filetype'][0now],$tinybrowser['docroot'],$tinybrowser['path'][0now]);
44
45 // determine file dialog file types
46 switch ($_GET['type'])
47 {
48 case 'image':
49 $filestr = TB_TYPEIMG;
50 break;
51 case 'media':
52 $filestr = TB_TYPEMEDIA;
53 break;
54 case 'file':
55 $filestr = TB_TYPEFILE;
56 break;
57 }
58 $fileexts = str_replace(“,”,“;”,$tinybrowser['filetype'][$_GET['type']]);
59 $filelist = $filestr.' ('.$tinybrowser['filetype'][$_GET['type']].')';
60
61 // Initalise alert array
62 $notify = array(
63 'type' =>array(),
64 'message' =>array()
65 );
66 $goodqty = (isset($_GET['goodfiles']) ? $_GET['goodfiles'] : 0);
67 $badqty = (isset($_GET['badfiles']) ? $_GET['badfiles'] : 0);
68 $dupqty = (isset($_GET['dupfiles']) ? $_GET['dupfiles'] : 0);
69
70 if($goodqty>0)
71 {
72 $notify['type'][]='success';
73 $notify['message'][]=sprintf(TB_MSGUPGOOD, $goodqty);
74 }
75 if($badqty>0)
76 {
77 $notify['type'][]='failure';
78 $notify['message'][]=sprintf(TB_MSGUPBAD, $badqty);
79 }
80 if($dupqty>0)
81 {
82 $notify['type'][]='failure';
83 $notify['message'][]=sprintf(TB_MSGUPDUP, $dupqty);
84 }
85 if(isset($_GET['permerror']))
86 {
87 $notify['type'][]='failure';
88 $notify['message'][]=sprintf(TB_MSGUPFAIL, $tinybrowser['docroot'].$tinybrowser['path'][0now]);
89 }
90 ?>
91
92
93
94 TinyBrowser ::
95
96
97
98 if($passfeid == '' && $tinybrowser['integration']=='tinymce')
99 {
100 ?>
101 }
102 else
103 {
104 ?>
105 }
106 ?>
107
108
109 <script. type=“text/javascript”>
篇3:TinyBrowser远程文件上传漏洞分析
From 情blog
程序描述:
TinyBrowser特点 根据配置可以设置是否允许上传、删除、编辑等操作等操作权限
支持多个上传,而且显示上传进度
可以简单编辑图片,比如旋转
可以根据图片名和缩略图列表查看文件
支持FCKeditor编辑器
漏洞分析:
下面我们来看upload.php程序代码
1
2 require_once(config_tinybrowser.php);
3 // Set language
4 if(isset($tinybrowser[language]) && file_exists(langs/.$tinybrowser[language]..php))
5 {
6 require_once(langs/.$tinybrowser[language]..php);
7 }
8 else
9 {
10 require_once(langs/en.php); // Falls back to English
11 }
12 require_once(fns_tinybrowser.php);
13
14 // Check session, if it exists
15 if(session_id() != )
16 {
17 if(!isset($_SESSION[$tinybrowser[sessioncheck]]))
18 {
19 echo TB_DENIED;
20 exit;
21 }
22 }
23
24 if(!$tinybrowser[allowupload])
25 {
26 echo TB_UPDENIED;
27 exit;
28 }
29
30 // Assign get variables
31 $validtypes = array(image,media,file);
32 0now = ((isset($_GET[type]) && in_array($_GET[type],$validtypes)) ? $_GET[type] : image);
33 $foldernow = str_replace(array(../,..\,./,.\),,($tinybrowser[allowfolders] && isset($_REQUEST[folder]) ? urldecode($_REQUEST[folder]) : ));
34 $passfolder = &folder=.urlencode($foldernow);
35 $passfeid = (isset($_GET[feid]) && $_GET[feid]!= ? &feid=.$_GET[feid] : );
36 $passupfeid = (isset($_GET[feid]) && $_GET[feid]!= ? $_GET[feid] : );
37
38 // Assign upload path
39 $uploadpath = urlencode($tinybrowser[path][0now].$foldernow);
40
41 // Assign directory structure to array
42 $uploaddirs=array();
43 dirtree($uploaddirs,$tinybrowser[filetype][0now],$tinybrowser[docroot],$tinybrowser[path][0now]);
44
45 // determine file dialog file types
46 switch ($_GET[type])
47 {
48 case image:
49 $filestr = TB_TYPEIMG;
50 break;
51 case media:
52 $filestr = TB_TYPEMEDIA;
53 break;
54 case file:
55 $filestr = TB_TYPEFILE;
56 break;
57 }
58 $fileexts = str_replace(“,”,“;”,$tinybrowser[filetype][$_GET[type]]);
59 $filelist = $filestr. (.$tinybrowser[filetype][$_GET[type]].);
60
61 // Initalise alert array
62 $notify = array(
63 type =>array(),
64 message =>array()
65 );
66 $goodqty = (isset($_GET[goodfiles]) ? $_GET[goodfiles] : 0);
67 $badqty = (isset($_GET[badfiles]) ? $_GET[badfiles] : 0);
68 $dupqty = (isset($_GET[dupfiles]) ? $_GET[dupfiles] : 0);
69
70 if($goodqty>0)
71 {
72 $notify[type][]=success;
73 $notify[message][]=sprintf(TB_MSGUPGOOD, $goodqty);
74 }
75 if($badqty>0)
76 {
77 $notify[type][]=failure;
78 $notify[message][]=sprintf(TB_MSGUPBAD, $badqty);
79 }
80 if($dupqty>0)
81 {
82 $notify[type][]=failure;
83 $notify[message][]=sprintf(TB_MSGUPDUP, $dupqty);
84 }
85 if(isset($_GET[permerror]))
86 {
87 $notify[type][]=failure;
88 $notify[message][]=sprintf(TB_MSGUPFAIL, $tinybrowser[docroot].$tinybrowser[path][0now]);
89 }
90 ?>
91
92
93
94 TinyBrowser ::
95
96
97
98 if($passfeid == && $tinybrowser[integration]==tinymce)
99 {
100 ?>
101 }
102 else
103 {
104 ?>
105 }
106 ?>
107
108
109
114
115
116 var so = new SWFObject(“flexupload.swf”, “mymovie”, “100%”, “340”, “9”, “#ffffff”);
117 so.addVariable(“folder”, “
118 so.addVariable(”uptype“, ”
119 so.addVariable(“destid”, “
120 so.addVariable(”maxsize“, ”
121 so.addVariable(“sessid”, “
122 so.addVariable(”obfus“, ”
123 so.addVariable(“filenames”, “
124 so.addVariable(”extensions“, ”
125 so.addVariable(“filenamelbl”, “
126 so.addVariable(”sizelbl“, ”
127 so.addVariable(“typelbl”, “
128 so.addVariable(”progresslbl“, ”
129 so.addVariable(“browselbl”, “
130 so.addVariable(”removelbl“, ”
131 so.addVariable(“uploadlbl”, “
篇4:JEECMS漏洞(文件上传)漏洞预警
漏洞描述:这个漏洞很简单,上传没有过滤,注册账号之后去上传头像,jsp 都可以,会提示上传类型错误,弹出对话框,不用管它,关闭弹窗,点击右键查看源代码,你的代码已经上传上了,
JEECMS最新漏洞(文件上传)漏洞预警
,
上传后的格式为:
www.xxx.com/online/upload/M000000070500007/1349769169860.jsp?o=vLogin
篇5:Win32k.sys键盘布局文件提权漏洞分析
作者:Sebastien Renaud
译者:riusksk(泉哥:riusksk.blogbus.com)
本文将向各位揭示一些关于Stuxnet蠕虫病毒的技术细节,主要旨在讲述作者是如何利用0day漏洞实现代码的通用性,文中讨论的是作者所用到的两个Windows提权漏洞之一。这一漏洞在微软发布的MS10-073升级补丁中已经修复了,但还有另一个windows任务调度(Task Scheduler)漏洞尚未修补。虽然本文将深入分析Stuxnet病毒及其执行的恶意行为,但我们仍将不会公布由来自Symantec和ESET的朋友所写的两份详细文档,包括其具体目录和内容。我们将主要关注下Windows Win32K.sys 键盘布局文件提权漏洞(CVE--2743),并分析下Stuxnet病毒是如何使用自定义的Portable Executable (PE)解析方式来实现代码的通用性的。
1. 漏洞分析
此漏洞存在于windows驱动文件”win32k.sys”中,当其从磁盘中加载一个键盘布局文件时,由于不正当地去索引函数指针列表,导致本地提权漏洞的产生。通常,键盘布局文件是通过”LoadKeyboardLayout”函数来加载的,该函数其实是对win32k syscall函数 ”NtUserLoadKeyboardLayoutEx()” 的封装。下面是加载键盘布局文件后内核中的栈情况:
kd>kn
# ChildEBP RetAddr
00 b0982944 bf861cd1 win32k!SetGlobalKeyboardTableInfo
01 b0982958 bf889720 win32k!ChangeForegroundKeyboardTable+0x11c
02 b0982978 bf87580e win32k!xxxSetPKLinThreads+0x37
03 b09829f0 bf875588 win32k!xxxLoadKeyboardLayoutEx+0x395
04 b0982d40 8053d658 win32k!NtUserLoadKeyboardLayoutEx+0x164
05 b0982d40 7c90e514 nt!KiFastCallEntry+0xf8
06 0012fccc 00402347 ntdll!KiFastSystemCallRet ; (transition from user to kernel)
一旦恶意构造的键盘布局文件被win32k内核驱动加载后,恶意程序将会向键盘输入流中发送一个事件,进而有效地触发漏洞。此过程会调用”user32!SendUserInput()”函数来执行,其实,它是调用了”win32k!NtUserSendInput()”和”win32k!xxxKENLSProcs()”这两个函数:
kd>kn
# ChildEBP RetAddr
00 b0a5ac88 bf848c64 win32k!xxxKENLSProcs
01 b0a5aca4 bf8c355b win32k!xxxProcessKeyEvent+0x1f9
02 b0a5ace4 bf8c341b win32k!xxxInternalKeyEventDirect+0x158
03 b0a5ad0c bf8c3299 win32k!xxxSendInput+0xa2
04 b0a5ad50 8053d658 win32k!NtUserSendInput+0xcd
05 b0a5ad50 7c90e514 nt!KiFastCallEntry+0xf8
06 0012fd08 7e42f14c ntdll!KiFastSystemCallRet
07 0012fd7c 00401ded USER32!NtUserSendInput+0xc
WARNING: Stack unwind information not available. Following frames may be wrong.
08 0012fdac 00401331 CVE_2010_2743+0x1ded
在”win32k!xxxKENLSProcs()”函数里面,win32k驱动会去检索先前加载的键盘布局文件中的某一字节。这一字节会被置入ECX寄存器,然后作为函数指针表的索引值:
; In win32k!xxxKENLSProcs() function starting at 0xBF8A1F9C
; Module: win32k.sys - Module Base: 0xBF800000 - version: 5.1.2600.6003
;
.text:BF8A1F50 movzx ecx, byte ptr [eax-83h] // ECX 可被攻击者控制
.text:BF8A1F57 push edi
.text:BF8A1F58 add eax, 0FFFFFF7Ch
.text:BF8A1F5D push eax
.text:BF8A1F5E call _aNLSVKFProc[ecx*4] // 索引函数数组指针
aNLSVKFProc函数数组包含有3个函数,并且后面跟随着一段字节数组:
.data:BF99C4B8 _aNLSVKFProc dd offset _NlsNullProc@12
.data:BF99C4BC dd offset _KbdNlsFuncTypeNormal@12
.data:BF99C4C0 dd offset _KbdNlsFuncTypeAlt@12
.data:BF99C4C4 _aVkNumpad db 67h
.data:BF99C4C5 db 68h
.data:BF99C4C6 db 69h
.data:BF99C4C7 db 0FFh
.data:BF99C4C8 db 64h
.data:BF99C4C9 db 65h
.data:BF99C4CA db 66h
.data:BF99C4CB db 0FFh
.data:BF99C4CC db 61h
.data:BF99C4CD db 62h
.data:BF99C4CE db 63h
.data:BF99C4CF db 60h
.data:BF99C4D0 db 6Eh
.data:BF99C4D1 db 0
.data:BF99C4D2 db 0
.data:BF99C4D3 db 0
[...]
如果请求的索引值大于2,那么代码将会引用字节数组中的值作为指针,
如果索引值为5,那么在函数”win32k!xxxKENLSProcs()”中的代码就会调用0xBF99C4CC处的指针,相当于程序将执行至0x60636261。
kd>dds win32k!aNLSVKFProc L6
bf99c4b8 bf9332ca win32k!NlsSendBaseVk // index 0
bf99c4bc bf93370c win32k!KbdNlsFuncTypeNormal // index 1
bf99c4c0 bf933752 win32k!KbdNlsFuncTypeAlt // index 2
bf99c4c4 ff696867 // index 3
bf99c4c8 ff666564 // index 4
bf99c4cc 60636261 // index 5
[...]
2. 通过PE解析提高代码执行的通用性
当aNLSVKFProc函数数组未被引用输出时,为了获得可在各个”win32k.sys”驱动版本上执行恶意代码的通用性,Stuxnet作者必须确保索引数据位于aNLSVKFProc数组之外,并且指向一个可控制的有效指针,然后执行”call”指令
篇6:IIS短文件和文件夹泄漏漏洞的分析
IIS是有微软使用微软windows功能扩展模块创建的一套web服务器应用程序,是世界上第三个最流行的服务器
IIS是有微软使用微软windows功能扩展模块创建的一套web服务器应用程序,是世界上第三个最流行的服务器,
漏洞描述:
漏洞研究小组发现了一个微软IIS的漏洞,攻击者可以利用一个包含”~“的get请求,来让服务器上的文件和文件夹被泄漏、
影响版本:
IIS 1.0, Windows NT 3.51
IIS 2.0, Windows NT 4.0
IIS 3.0, Windows NT 4.0 Service Pack 2
IIS 4.0, Windows NT 4.0 Option Pack
IIS 5.0, Windows
IIS 5.1, Windows XP Professional and Windows XP Media Center Edition
IIS 6.0, Windows Server and Windows XP Professional x64 Edition
IIS 7.0, Windows Server and Windows Vista
IIS 7.5, Windows 7 (远程开启了错误或者没有web.config配置文件的情况下)
IIS 7.5, Windows 2008 (经典托管管道模式)
漏洞分析与利用:
如果网站是运行在IIS服务器上,可以通过”~“来发现一些文件和文件夹,攻击者可以发现重要的文件或者文件夹,如果这些文件或者文件夹是正规的可见文件.
关于此漏洞的深入分析可以参考以下连接中的文章:
soroush.secproject.com/blog//06/microsoft-iis-tilde-character-vulnerabilityfeature-short-filefolder-name-disclosure/
漏洞详细说明:
一直在寻找一种方法,如果我可以使用通配符”*“ 和”?“发送一个请求到iis,我意识到当IIS接收到一个文件路径中包含”~“的请求时,它的反应是不同的.基于这个特点,我们可以根据http的响应区分一个可用或者不可用的文件.在以下的表中,文件validxxx.xxx是存在于网站服务器根目录的.(备注:xxx.xxx是指不确定,还需要继续猜解判断).下图主要是不同版本的IIS返回根据请求的返回错误来判断是否存在某个文件.
举例说明如果一个IIS6网站www.xxx.com的短文件猜解方法
请求 /a*~1*/.aspx 返回404,就说明存在a开头的一个axxx.xxx的文件.(其中xxx.xxx还需要进一步确定判断是什么字母,什么后缀).
请求www.xxx.com/a*~1*/.aspx 返回400,说明不存在a开头的一个axxx.xxx的文件.(其中xxx.xxx还需要进一步确定判断是什么字母,什么后缀).
IIS5.X的判断方法如下:
请求/a*~1* 返回404 说明存在a开头的一个文件。
请求/a*~1* 返回400 说明不存在a开头的一个文件.
IIS7.x.net 2 no error handing判断方法如上图,各位仔细看.
下面附上一个IIS6猜解文件的全过程。
测试地址:sdl.me/AcSecret.html acsecret.html是存在于服务器上的.猜解过程如下图:
附上详细的poc和漏洞利用说明文件:
PoC: www.exploit-db.com/sploits/19525.zip
Paper: www.exploit-db.com/download_pdf/19527
漏洞修复方案:
使用微软或者安全厂商提供的解决方案
使用配置好的Web应用防护系统(拒绝丢弃掉包含”~“线的Web请求)可能会起到对此漏洞进行防范的作用.
漏洞发现者:
Soroush Dalili (@irsdl)
Ali Abbasnejad
漏洞参考:
support.microsoft.com/kb/142982/en-us
soroush.secproject.com/blog/2010/07/iis5-1-directory-authentication-bypass-by-using-i30index_allocation/
站长评论:
其实这是个很鸡肋的“漏洞”……
首先,如果文件名符合8.3规范的文件(文件名主体部分小于等于8个字节、扩展名部分小于等于3个字节),则根本没有短文件名,
其次,汉字和特殊符号等字符的猜解,也是很 的问题……
最后,即使猜出来了,也只有前六位,只能靠运气碰碰看了……
不过,它还是有不小的用处,也算是很另类的一个“漏洞”吧……
(提示:如果目标站自定义了400、404 错误页面,那么该扫描器是无法判断的……)
可以参考下表:
2012/07/04 20:46
2012/07/04 20:46
2012/07/04 20:44
2012/07/04 20:44
2012/07/04 20:44
2012/07/04 20:44
2012/07/04 20:44
2012/07/04 20:44
2012/07/04 20:44
2012/07/04 20:46
2012/07/04 20:46
2012/07/04 20:43 29 012345~1.TXT 0123456789.txt
2012/07/04 20:43 29 1.txt
2012/07/04 20:43 29 123.txt
2012/07/04 20:43 29 123456.txt
2012/07/04 20:43 29 1234567.txt
2012/07/04 20:43 29 12345678.txt
2012/07/04 20:43 29 123456~1.TXT 123456789.txt
摘自 Nuclear'Atk 网络安全研究中心
篇7:shopxp pinglun.asp文件SQL注入漏洞分析漏洞预警
漏洞作者:zpino
漏洞存在于/admin/pinglun.asp 文件
<%=webname%>--用户评论
<%dim shopxpptid,action
pinglunid=request.QueryString(”id“)
action=request.QueryString(”action“)
if action=”save“ then
set rs=server.CreateObject(”adodb.recordset“)
rs.open ”select * from shopxp_pinglun where pinglunid=“&pinglunid,conn,1,3
rs(”huifu“)=HTMLEncode2(trim(request(”huifu“)))
rs(”huifudate“)=now()
rs.update
rs.close
set rs=nothing
…………………/*省略*/…………………..
<%set rs=server.CreateObject(”adodb.recordset“)
rs.open ”select * from shopxp_pinglun where pinglunid=“&pinglunid,conn,1,3
%>
首先看到
<%
dim conn,connstr,db
startime=timer()
db=”../shopxp/“&dataname&”“ '数据库
on error resume next '尝试连数据库,一直到超时,但可以加强SQL注入过滤
connstr = ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & Server.MapPath(db)
'connstr=”DBQ=“+server.mappath(”“&db&”“)+”;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};“
set conn=server.createobject(”ADODB.CONNECTION“)
conn.open connstr
%>
这个文件的作用是获取数据库连接对象,继续回到/admin/pinglun.asp 文件,
pinglunid=request.QueryString(”id“)
action=request.QueryString(”action“)
获取id的值赋给pinglunid,跟进pinglunid,走到
<%set rs=server.CreateObject(”adodb.recordset“)
rs.open ”select * from shopxp_pinglun where pinglunid="&pinglunid,conn,1,3
%>
可以看到没有过滤就被带入到数据库,接下来在下面打印出了查询结果,导致一个SQL漏洞注入产生,
shopxp pinglun.asp文件SQL注入漏洞分析漏洞预警
,
★ 人力资本的论文
【LNK文件漏洞简要分析(精选7篇)】相关文章:
电脑基础知识教程第30讲:显示隐藏文件2024-04-13
解决Godaddy主机asp.net无法上传文件的问题2023-07-22
userinit病毒原理及其清除和预防方法2022-06-18
一步一步解决局域网无法连通的问题2022-12-24
cgd是什么文件,cgd文件用什么程序打开2023-02-26
环保论文部份2023-01-03
环保论文2022-10-30
人力资源分析报告2023-05-01
事业单位财务分析报告格式及内容2023-12-01
行政人员述职报告精选2022-12-09