ApsCMS AspCms_SettingFun.asp、AspCms-qqkfFun.asp、AspCms_Slide.asp、AspCms_StyleFun.asp、login.asp、AspCm...

catalog

1. 漏洞描述
2. 漏洞触发条件
3. 漏洞影响范围
4. 漏洞代码分析
5. 防御方法
6. 攻防思考

 

1. 漏洞描述

AspCMS管理系统有较多漏洞,涉及到SQL注入、密码泄漏、后台写SHELL等,本文逐一枚举这些入侵向量

Relevant Link:

http://www.qhwins.com/ShowNews/?11-200812616063028285.html
http://www.webshell.cc/2914.html


2. 漏洞触发条件

0x1: 万能Cookie免登进入后台

0x2: 后台直接向配置文件写WEBSHELL


3. 漏洞影响范围
4. 漏洞代码分析
5. 防御方法

/admin/_system/AspCms_SettingFun.asp
/admin/_style/AspCms_StyleFun.asp

<!--#include file="../inc/AspCms_SettingClass.asp" -->
<% 

dim action : action=getForm("action","get") 

'''
checklogin() '添加校验函数
'''

/inc/AspCms_CommonFun.asp

Function checkLogin()
    '''
    if isnul(Session("adminlogin")) then
        alertMsgAndGo"您还没有登陆","/"
    '''增加校验admin登陆的session
    if isnul(rCookie("adminName")) or rCookie("adminName")="" then
        alertMsgAndGo"您还没有登陆","/"
    else
        dim Permissions
        Permissions=rCookie("groupMenu")
        if Permissions<>"all" and isnul(Permissions) then
            alertMsgAndGo"您没有访问权限","-1"
        end if
    end if
End Function

/admin/login.asp

<!--#include file="../inc/AspCms_SettingClass.asp" -->
<%
dim action : action=getForm("action","get")
if action = "login" then
    dim UserName,Password,sql,code,Rs
    UserName = filterPara(getForm("username","post"))
    Password = md5(getForm("Password","post"),16)
    code     = getForm("code","post")
    if code <> Session("Code") then alertMsgAndGo "您填写的验证码错误!","-1"
    if isOutSubmit then  alertMsgAndGo"非法外部提交被禁止","-1"

'   User UserGroup
'   LoginName
'Password
'GroupID
'IsAdmin
    sql = "select count(*) from {prefix}User where LoginName = '"& UserName &"' and Password='"&Password&"'"
    Dim rsObj : Set rsObj=Conn.Exec(sql,"r1")
    if rsObj(0)=1 then
        Set rsObj=Conn.Exec("select IsAdmin, GroupStatus,GroupName, UserStatus, UserID, GroupMenu, LanguageID from {prefix}User as a, {prefix}UserGroup as b where LoginName='"&UserName&"' and a.GroupID=b.GroupID","r1")

        if not rsObj.Eof Then
            if rsObj("IsAdmin")<>1 then alertMsgAndGo"对不起,你不是管理员!","-1"
            if rsObj("GroupStatus")<>1 then alertMsgAndGo"对不起,您所在用户组已被禁用!","-1"
            if rsObj("UserStatus")<>1 then alertMsgAndGo"对不起,您的账号已被禁用!","-1"
            '''
            Session("adminlogin")=1 '增加admin的session
            '''
            wCookie"adminName",UserName
            wCookie"GroupName",rsObj("GroupName")
            wCookie"adminId",rsObj("UserID")
            wCookie"groupMenu",repnull(rsObj("GroupMenu"))

这种修复方案会存在问题,session打标的代码和session验证的代码不在同一个文件中,而对于很多站长来说,它们会刻意修改login.asp文件,以此来防止自己的网站后台被黑客恶意扫描到,这导致了基于相对路径识别文件的过程中,会漏过对login.asp文件的修复,最终导致防御代码各逻辑部分的不一致

0x1: 最终修复方案

/inc/AspCms_CommonFun.asp

'获取参数值
Function getForm(element,ftype)
    Select case ftype
        case "get"
            getForm=trim(request.QueryString(element))
        case "post"
            getForm=trim(request.Form(element))
        case "both"
            if isNul(request.QueryString(element)) then getForm=trim(request.Form(element)) else getForm=trim(request.QueryString(element))
    End Select    
    ''''
    getForm=replace(getForm,CHR(34),"&quot;") : getForm=replace(getForm,CHR(39),"&apos;")
    ''''
End Function


6. 攻防思考

Copyright (c) 2015 LittleHann All rights reserved

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
更新日志: *更新了数据库链接安全 *更新了数据库调用计算 *增加了前后台对应帮助,参阅根目录下图片。 睡死猪企业网站管理系统(睡死猪CMS)是睡死猪研发中心(sspig.com)专业为企业建站而开发的一款网站程序。该系统采用最简单易用的asp+access进行搭建,拥有完善的网站前后台,并特别根据企业网站的特点开发出独具特色的栏目和功能。 睡死猪CMS是企业建站的绝佳选择! 系统三大特色: 1、全静态:全站生成.html静态页面。降低服务器压力,增强百度收录。 2、高优化:特别针对搜索引擎进行优化处理,让客户快速找到你。 3、够简单:拥有完善后台管理系统,所有内容均可在后台进行更新。非专业人士也可操作。 后台管理地址:http://你的网站域名/Admin/login.asp 用户名:admin 密码:admin 后台文件夹名:Admin 数据库存放位置:Data21293 提醒:为确保网站安全,我们建议: 1、更改默认的后台用户名和密码; 2、更改默认的后台文件夹名Admin,直接修改根目录下的文件夹名称即可; 3、更改默认的数据库文件夹Data21293及数据库名称,请确保inc文件夹下的数据库连接文件conn.asp内也作相应修改。 1、本地测试请使用windows2003、完整的IIS6.0以上。 2、整站程序请上传至虚拟主机根目录下。 3、整站程序绝对无功能限制,完全开放免费使用。请不要再反复咨询这个问题了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值