动力漏洞

再暴动力上传漏洞
作者:Linzi

出处:www.71345.com[混客部落]

QQ:290329536

这个漏洞我发现很久了,很早都想公布出来了,发到杂志上去,但没有收到回复,所以现在公布出来.

还是先来读一下这个代码吧,可能因为是这个漏洞出来很久了,所以很少有人会再去看一下这个漏

洞的代码,我也是在一样无意中重读这个代码时发现这个漏洞的.

const UpFileType="rar|zip|exe|mpg|rm|wav|mid" 定义了可以上传的文件类型
...
dim EnableUpload 定义了是否允许上传的关键变量
...
FoundErr=false 默认FoundErr变量为假,即没有发现错误(哈哈,关键变量哦,看下面)
EnableUpload=false 默认EnableUpload变量为假,即不能上传(哈哈,关键变量哦)
...
for each formName in upload.file列出所有上传了的文件(!关键,注意这个FOR循环!)
set ofile=upload.file(formName) 生成一个文件对象
...
arrUpFileType=split(UpFileType,"|") 取得定义的可以上传的后缀名
for i=0 to ubound(arrUpFileType)
if fileEXT=trim(arrUpFileType(i)) then
EnableUpload=true hoho,EnableUpload变量改变了!
exit for
end if
next
if fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" then 呵呵,只要是ASP,ASA,ASPX的后缀就废掉了,难怪海洋顶端上不去阿!
EnableUpload=false
end if
if EnableUpload=false then
msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType
FoundErr=true hoho,FoundErr变量改变了!
end if
...
if FoundErr<>true then 又是一个重要地方,看来FoundErr变量是能否上传的关键,那如何决定FoundErr变量呢?(草草虫ps:偶可以瞪大了眼睛看啊)
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) 保存文件
response.write "软件上传成功!软件大小为:" & cstr(round(oFileSize/1024)) & "K"
strJS=strJS & "parent.document.myform.DownloadUrl1.value=" & fileName & ";" & vbcrlf 晕拉~还返回上传后改的名字,这回好了,不用猜了。
strJS=strJS & "parent.document.myform.SoftSize.value=" & cstr(round(oFileSize/1024)) & ";" & vbcrlf
注:...表示省略了部分代码

具体的漏洞原理分析,我不想多说了,因为有太多的人分析了,我这里只分析"if fileEXT="asp" or

fileEXT="asa" or fileEXT="aspx" 这一句,这一句他定义了上传的类型,很多人还在后面加个了

fileEXT="cer"等等等等,用来补上上传漏洞,但经过分析就会发现,这种补法是无济于事的.因为如果

我们上传的东西扩展名为asp.(后面有个.)根据windows中,windows会有自动吃掉吃"."的"好"习惯,

那么我们上传的asp.满足了代码中的要求,且上传后点会自动消失,这样的上传,即使你在后面加

了多少个cer等都无济于事.不过在对动力有的版本时,你上传有点的asp,他会自动生成一个无扩展

名的文件,所以如:我们上传的是newmm.asp.就会变成newmm这个没有扩展名的文件,那怎么办呢,

开始的时候我也郁闷,后来在课堂上想这个问题时,想着想着,突然有了灵感.如果我们在后面加上个

空格呢,asp (注意有空格)不就满足代码上的条件,而且上传之候windows又有吃掉空格的"好习惯",

所以我们构造的上传文件自然就会上传成功.另外如果加个#也一样,同样可以成功.用这个方法可

以突破大多数3.51的补丁限制,不过我说的这个补丁只是fileEXT="asp" or fileEXT="asa" or

fileEXT="aspx" 这种后面加上防上传扩展名的补丁,如果你把upfile.asp改成和3.6的一样的,就不会

有这个漏洞.

不要认为只有动力的文章有这个漏洞,要知道,网络上这种型的web程序非常多,例如武易传奇,还有

凡尘文学,各种OA办公的等等,总之有非常非常多,我试了好几种类型上传文件的全部成功.这样下

菜鸟们可以说又有一大堆的肉鸡了,对于文中所说到的利用,我做成了动画,另外再一下,如果是和动

网整合的动力,下载的数据库在dv_log可以有时可以查看没有加密过的密码.




动力3.51最新多个注入
1、文章,软件评论

每篇文章和软件结尾我们都可以发表评论,在没有任何评论的时候大家看不出来。但是如果你试试发表一篇评论,你会发现多出一个“查看关于此文章(软件)的所有评论”点击。呵呵注入口出来了,这里大家就可以注入了。
Article_CommentShow.asp?ArticleID=228
Soft_CommentShow.asp?SoftID=177


2、栏目标题

大家在点击每个文章栏目或是软件栏目的时候可以注入。
Article_Class2.asp?ClassID=3
Soft_Class.asp?ClassID=4


3.用户排行

在首页大家一般都可以看见用户排行,大家点击任何一个用户。就可以注入了。
UserInfo.asp?UserID=3440
我想应该还有些地方存在,我在这里要请各位站长注意,在使用动力系统的时候一定要检查勿出现这种低级的错误。还有就是我测试的是艺龙美化版本,具体其他版本在美化过程中有没有修补就不知道了,但是我还是系统大家检查一下。
自由动力3.6 sp2的注入漏洞
by:rain[918x]  http://www.918x.com

涉及程序:
自由动力3.6 sp2以下免费版本
部分Easypower4.0以下免费版本



详细:
自由动力3.6 sp2中多个文件过滤不严存在注入漏洞
下列文件匀存在被注入的危险:
Article_Class.ASP
Photo_Class.asp
Soft_Class.asp
UserInfo.ASP

对于广大黑客朋友可以使用破解版的NBSI轻松获得admin表里的管理员名和md5加密后的密码.如果暴力破解成功,再利用数据库备份,可轻松获得一个webshell.
自由动力使用广泛,请各站长注意!!!

攻击方法:(注意:本站旨在提供安全学习,勿做危险用途)
使用破解版的NBSI轻松注入:
http://www.target.com/UserInfo.asp?UserID=1
注意:特征字符填写 id
即可破解.
其他文件关键在于特征字符的找寻,即可注入.
这里不祥解.

动力3.51网站管理系统的又一收费漏洞及其解决方法
作者:科技创作自由(真名:康健)
                                                        QQ:330950407    MSN:htlaeh@hotmail.com
    今天又发现了一个动力3.51网站管理系统的收费破解漏洞!该漏洞和之前发现的三个漏洞一样可以使普通注册会员免费阅读收费文章完整内容!
    漏洞破解方法:注册为网站会员,然后打开收费文章,提示您没有权限阅读全文,不要管它,直接点"打印本文",接下来出现的"打印文章"页面就可以看到收费文章的全文了!
    解决方法:
    打开网站主目录下的Article_Print.asp文件(修改前请先备份!)
查找:
<!--#include file="Inc/conn.asp"-->
<%
dim ArticleID,sql,rs
ArticleID=Clng(trim(request("ArticleID")))
if ArticleId="" then
response.Redirect("Default.asp")
end if
sql="select * from article where ArticleID=" & ArticleID & ""
Set rs= Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,1,3
if rs.bof and rs.eof then
response.Write("<p>找不到文章</p>")
else
%>


替换为:

<!--#include file="Inc/syscode_article.asp"-->
<%
const ChannelID=2
Const ShowRunTime="Yes"
dim tLayout,tUser
PageTitle="正文"
strFileName="Article_Show.asp"
if ArticleId<=0 then
FoundErr=true
ErrMsg=ErrMsg & "<br><li>请指定文章ID</li>"
end if
if FoundErr=True then
call WriteErrMsg()
else
%>

继续查找:
<%=replace(rs("Content"),chr(34),"")%>
替换为:
<%call ShowArticleContent()%>


    好了,大功告成!这样的话,除非是点数足够(或有效期未过期)的收费用户,否则是不能打印此文章全文的!快测试看看吧!此修改方法在我自己的网站上()测试,没有任何副作用!(如果有人发现新的动力漏洞或发现我的修改方法有错误,希望能够告诉我(可以加我QQ,验证信息就填"动力漏洞",虽不能保证肯定能解决问题,但我会尽力的!^-^)
需要的话大家可以到我的网站上去测试,飞越快乐家园
如不想注册的话,可以用测试账号:test    密码:testtest

注:此解决方法并不是我先发现的,但却是我花了半个小时,改了十余次代码、打印了几张纸而找出的!(我在编程方面是菜菜,所以得这么费周折~~~~大家别笑我哦~~^-^)

这是我已修改好的文件:
<!--#include file="Inc/syscode_article.asp"-->
<%
const ChannelID=2
Const ShowRunTime="Yes"
dim tLayout,tUser
PageTitle="正文"
strFileName="Article_Show.asp"
if ArticleId<=0 then
FoundErr=true
ErrMsg=ErrMsg & "<br><li>请指定文章ID</li>"
end if
if FoundErr=True then
call WriteErrMsg()
else
%>

<html>
<head>
<title><%=rs("Title")%></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="STYLE.CSS" rel="stylesheet" type="text/css">
</head>
<body leftmargin="2" topmargin="0" marginwidth="0" marginheight="0" oncontextmenu="return false" ondragstart="return false" onselectstart ="return false" onselect="document.selection.empty()" oncopy="document.selection.empty()" onbeforecopy="return false" onmouseup="document.selection.empty()">
<noscript><iframe src=*></iframe></noscript>
<table width="99%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="border" style="word-break:break-all">
  <tr>
    <td> <table width="100%" border="0" cellspacing="4" cellpadding="1">
        <tr>
          <td><table width=100% border=0 cellpadding=0 cellspacing=0 class="title">
              <tr>
                <td width=2% height="20"> <div align="center">&nbsp;<img src="Images/ARROW2.GIF" width="6" height="7" align="absmiddle">&nbsp;</div></td>
                <td width=87%>您要打印的文件是:<font color="#CC0000"><%=rs("Title")%></font>
                </td>
                <td width="11%" align=right><div align="center"><a href="javascript:window.print()"><img src=Images/printpage.gif alt="打印" width="16" height="16" border="0" align=absmiddle></a>
                    <a href=javascript:window.print()>打印本文</a></div></td>
              </tr>
            </table></td>
        </tr>
      </table>
      <p align="center"><strong><font size="4" face="黑体"><%=rs("Title")%></font></strong></p>
      <p align="center"><strong><font size="2"><%=rs("Title1")%></font></strong><br>
        <br>
        作者:<%=rs("Author")%>&nbsp;&nbsp;&nbsp;&nbsp;转贴自:<%=rs("CopyFrom")%>&nbsp;&nbsp;&nbsp;&nbsp;点击数:<%=rs("Hits")%></p>
      <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td background="images/bj4.gif" height="1"></td>
        </tr>
      </table>
      <br>
      <table width="100%" border="0" cellspacing="6" cellpadding="4">
        <tr>
          <td><%call ShowArticleContent()%></td>
        </tr>
      </table></td>
  </tr>
</table>
</body>
</html>
<%
end if
rs.close
set rs=nothing
call CloseConn
%>



动力3.51管理系统漏洞“填补”方法!
动力3.51管理系统最新可破解收费漏洞“填补”方法!
                                                           作者:科技创造自由(真名:康健)
                                                         QQ:330950407 MSN:htlaeh@hotmail.com

    今天在动易(原动力)文章管理系统的服务论坛(动易论坛)浏览帖子,忽然看到一篇贴子说动力3.51网站管理系统有漏洞!这个漏洞导致任何会员都可以查看网站力任何收费内容!为此,我研究了一宿,终于找出了漏洞的填堵方法!

    一、收费文章利用“告诉好友”功能破解漏洞填堵
打开动力3.51目录里的sendmail.asp文件(修改前请备份),查找以下代码(在文件最后面,一般是在第155行一直到完:
mailbody=mailbody &"--&nbsp;&nbsp;发布时间:"&rs("UpdateTime")&"<br><br>"
mailbody=mailbody &"--&nbsp;&nbsp;"&rs("title")&"<br>"
mailbody=mailbody &""&rs("content")&""
mailbody=mailbody &"</TD></TR></TBODY></TABLE>"

mailbody=mailbody &"<center><a href='" & SiteUrl & "'>" & SiteName & "</a>"

end sub

%>
替换为:
mailbody=mailbody &"--&nbsp;&nbsp;发布时间:"&rs("UpdateTime")&"<br>"
mailbody=mailbody &"--&nbsp;&nbsp;文章题目:"&rs("title")&"<br>"
mailbody=mailbody &"--&nbsp;&nbsp;文章地址(请复制到IE地址栏打开,如不能访问请在Article_Show后加1或2或3,或者联系您的朋友!):http://free.ptidc.com/flyue/Article_Show.asp?ArticleID=" & ArticleID & "<br><br>"
    mailbody=mailbody &"--&nbsp;&nbsp;"& SiteName &"<br>"
mailbody=mailbody &"</TD></TR></TBODY></TABLE>"


end sub

%>
其中http://free.ptidc.com/flyue/ 须改为你的动力3.51管理系统的index.asp文件所在的地址.例如你的网站访问地址为:index.asp,则应将上面代码里的http://free.ptidc.com/flyue/更改为(前后不要加其他字符!)

    因为这样修改之后"告诉好友"时发给好友的邮件里只有文章地址而无文章内容,所以解决了非收费会员可以利用"告诉好友"发收费文章给自己的邮箱然后在邮箱里查看收费文章完整内容的漏洞,但因此也留下了副作用:普通会员发普通文章或收费会员发普通/收费文章给好友,全部都只能显示文章地址,并且用这个地址访问文章时不一定会使用这篇文章该用的模板,而是使用一个相同的模板!本人认为这个副作用关系并不大,有时还有好处哩!^-^,因为本来使用"告诉好友"这个功能的人就不怎么多,而且修改成现在这样后,收到邮件的好友不能直接在邮箱里看文章而是得访问网站才能看,这样岂不是可以增加我们网站的访问量么^-^


   二、收费文章破解漏洞填堵
    打开动力3.51目录里的User_ArticleShow.asp文件(修改前请备份!),查找下面的代码:
<%=rs("Content")%>
替换为:
<%
     if PurviewChecked=True then
            response.write "<font>"&rs("Content")&"</font>"
     else
          response.write "<font color=red><strong>您没有权限查看此软件下载地址!!</strong></font>"    
      end if
    %>  
然后保存文件,上传到网上就可以!
   三、收费软件下载破解漏洞填堵
    打开动力3.51目录里的User_SoftShow.asp文件(修改前请备份!),查找下列代码(如用编辑器查找不着请手动查找,一般在第226行!):
response.write "下载地址一:&nbsp;<a href='" & rs("DownloadUrl1") & "' target='_blank'>" & rs("DownloadUrl1") & "</a><br>"
接着是不是看到了:
      response.write "下载地址一:&nbsp;<a href='" & rs("DownloadUrl1") & "' target='_blank'>" & rs("DownloadUrl1") & "</a><br>"
      response.write "下载地址二:&nbsp;<a href='" & rs("DownloadUrl2") & "' target='_blank'>" & rs("DownloadUrl2") & "</a><br>"
      response.write "下载地址三:&nbsp;<a href='" & rs("DownloadUrl3") & "' target='_blank'>" & rs("DownloadUrl3") & "</a><br>"
      response.write "下载地址四:&nbsp;<a href='" & rs("DownloadUrl4") & "' target='_blank'>" & rs("DownloadUrl4") & "</a>"
呢?把它们全部选中吧!^-^
选中之后,将它们替换为下列内容:
       if PurviewChecked=True then
      response.write "下载地址一:&nbsp;<a href='" & rs("DownloadUrl1") & "' target='_blank'>" & rs("DownloadUrl1") & "</a><br>"
      response.write "下载地址二:&nbsp;<a href='" & rs("DownloadUrl2") & "' target='_blank'>" & rs("DownloadUrl2") & "</a><br>"
      response.write "下载地址三:&nbsp;<a href='" & rs("DownloadUrl3") & "' target='_blank'>" & rs("DownloadUrl3") & "</a><br>"
      response.write "下载地址四:&nbsp;<a href='" & rs("DownloadUrl4") & "' target='_blank'>" & rs("DownloadUrl4") & "</a>"
      else
          response.write "<font color=red><strong>您没有权限查看此软件下载地址!!</strong></font>"    
      end if

然后保存文件>>上传到网上去就OK了!

    看出修改前和修改后代码的区别了吗?呵呵,其实只是假如了if判断语句,先判断访问页面的会员是否有查看此软件下载地址的权限,如果是网站管理员或此软件的添加者,则显示软件下载地址,如果不是,则显示红字:"您没有权限查看此软件下载地址!!",这样的话,那些想通过漏洞偷看收费软件下载地址的人就只能看到红字"您没有权限查看此软件下载地址!!"啦!^-^

我的网站 飞越快乐家园 已经按上面修改过并测试成功啦!有兴趣的可以到我的网站上去测试!



突破动力文章上传asp的限制
在入侵动力文章
在入侵动力文章系统,成功进入后台后,也许你会发现,它的后台没有上传ASP的功能,因为动力文章系统的文件过滤是直接写在代码里的。我介绍一种突破这种限制的方法。虽然它禁止了上传ASP,但是我们可以直接写代码啊!
推荐版权信息输入框,框框大比较好写一点^_^。注意,动力文章系统是将这里写入的代码以字符串的形式写道Config.asp里的,所以我们直接复制ASP木马的代码是行不通的。我们需要修改一下代码,使其符合ASP语法就可以了。注意:这种方法只有一次,写入后config.asp就会改变,整个动力文章系统就不能访问了。所以你最好先在自己的电脑里试好了再到网上用。
如果你不会ASP的话,只有用现成的改了。听一个朋友说用海洋3.1写入插件改挺容易,只要把前后的<%  %>去掉,再在前后加上个双引号就行了。写入成功后,在浏览器里输入inc/config.asp?alien=1就可以得到一个可写入文件的ASP页面了。


posted @ 2005-07-27 10:08  狂歌  阅读(2000)  评论(0编辑  收藏  举报