如果你觉得本站还不错,为方便下次访问,可以【加入收藏】 最快知道本站更新,请订阅切换到繁體中文
百姓生活网
首页 | 时尚女性 | 家有爱车 | 妈妈宝贝 | 美食厨房 | 亲亲大自然 | 爱上摄影 | 电脑学堂 | 我爱我家 | 健康人生 | 小小书房 | 壁纸下载 | 影视评论 | 学英语 | 商业
养殖 | 种殖 | 产业信息
子 栏 目 导 航: 电脑学堂硬件资讯 软件资讯 网页设计 实战地带 互联八卦 游戏世界
您现在的位置: 百姓生活网 >> 点点滴滴 >> 电脑学堂 >> 软件资讯 >> 信息安全 >> 正文
动力3.51存在严重的文件上传漏洞

作者:佚名    文章来源:本站原创    点击数:    更新时间:2005-10-13
为了证明结论正确性,我在搜索引擎里找了下,结果MyPower Ver3.51 站点出来一大堆,随便找了个测试,下面是详细过程,为了避免不必要麻烦,已经屏蔽图片中的网址,请读者见谅:

用到的工具:WinSock Expert 、UltraEdit、NC和ASP后门

1,注册用户名 test111,进入 个人信息控制面板


此主题相关图片如下:


此主题相关图片如下:


2,开启WinSock Expert 监视,并且随便上传个ASP后门,结果是“无法上传,…”,预料中的事,没关系:
此主题相关图片如下:



3,将WinSock Expert 捕获的数据,复制到文本文件,并且用UltraEdit修改其中的关键代码:filename="C:\test\webshell.asp" ,webshell.asp后加:1个空格及.rm,然后修改16进制的20为00,Content-Length 长度增加4。


此主题相关图片如下:


此主题相关图片如下:


此主题相关图片如下:


4,这时NC派上场了:

此主题相关图片如下:


5,上传马成功,得到了个webshell:

此主题相关图片如下:


此主题相关图片如下:


此主题相关图片如下:



最后说明下,本人没有破坏该网站的任何数据,并且测试完后,删除了全部木马,同时告诉了他们网站管理员。



修补此漏洞方法:

一,见dispbbs.asp?boardid=34&star=1&replyid=46493&id=55222&skin=0&page=1

此方法使得用户上传的文件全部按照程序自动命名。

修改Upfile_Soft.asp 代码 ,找到

if FoundErr<>true then
FileName=SavePath & ofile.FileName
If IsObjInstalled("Scripting.FileSystemObject") Then
dim fso
set fso=CreateObject("Scripting.FileSystemObject")
if fso.FileExists(Server.mappath(FileName)) then
randomize
ranNum=int(900*rnd)+100
filename=
end if
set fso=nothing
end if

ofile.SaveToFile Server.mappath(FileName) '保存文件


改为

if FoundErr<>true then
randomize
ranNum=int(900*rnd)+100
filename=SavePath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt

ofile.SaveToFile Server.mappath(FileName) '保存文件


即可解决。(此修改由网友coolsun提供)。

也就是删除如下内容:

FileName=SavePath & ofile.FileName
If IsObjInstalled("Scripting.FileSystemObject") Then
dim fso
set fso=CreateObject("Scripting.FileSystemObject")
if fso.FileExists(Server.mappath(FileName)) then
(有人提出是否安全了,本人没有对此进行测试,但从代码上分析,不再从本地获取文件名,而是按时间加随机数生成文件名,应该补上了漏洞)



二,我自己写了个过滤文件名的函数,测试可以防止上面的漏洞攻击,请高手看看有没有什么问题:

此方法可以保留用户上传的文件名。

Upfile_Soft.asp 找到

FileName=SavePath & ofile.FileName

下增加:


'检查文件中是否含有非法字符
FileName=ChkFileName(FileName)


然后在文件最尾部

%>

上增加:

'作 用:检查文件中是否含有非法字符,防止用户构造数据欺骗计算机
Function ChkFileName(FileName)
If IsEmpty(FileName) Then Exit Function
FileName = Lcase(FileName)
If Instr(FileName,".") <> InstrRev(FileName,".") Then
msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType
FoundErr=true
strJS="<SCRIPT language=javascript>" & vbcrlf
strJS=strJS & "alert('" & msg & "');" & vbcrlf
strJS=strJS & "history.go(-1);" & vbcrlf
strJS=strJS & "</script>" & vbcrlf
Response.Write strJS
Response.End
End If
ChkFileName = Replace(FileName,Chr(0),"")
End Function
%>

测试结果图:


此主题相关图片如下:

发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
  • 上一篇文章:

  • 下一篇文章:
  • 赞助商链接: | 阅读过这篇文章的网友,同时还还阅读了以下几篇文章:
    ldb文件 是什么?
    动力系统打印页面SQL注入漏洞
    留言本谢绝SPAM,防址垃圾留
    动力文章系统漏洞的检测
    动易网络发布的漏洞补丁公告
    动力文章上传漏洞的本地利用
    动力(My Power)系统SQL注射漏洞
    MY动力系统3.51常见问题解答汇集(2)
    MY动力系统3.51常见问题解答汇集(1)
    原版动力3.51整合动网7.0SP2详细安装说明!

    本栏目最近更新的图片文章:
    Google

    学习强大的Regsvr32命令

    在一台服务器上实现多个We
    网友评论:(只显示最新10条。评论内容只代表网友观点,请注意礼貌用语,与本站立场无关!)

    ©2005 百姓生活网 www.y8u8.com 琼ICP备13000608号 网站地图