catalog

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

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"),)
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()= 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")<> then alertMsgAndGo"对不起,你不是管理员!","-1"
if rsObj("GroupStatus")<> then alertMsgAndGo"对不起,您所在用户组已被禁用!","-1"
if rsObj("UserStatus")<> then alertMsgAndGo"对不起,您的账号已被禁用!","-1"
'''
Session("adminlogin")= '增加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(),"&quot;") : getForm=replace(getForm,CHR(),"&apos;")
''''
End Function

6. 攻防思考

Copyright (c) 2015 LittleHann All rights reserved

ApsCMS AspCms_SettingFun.asp、AspCms-qqkfFun.asp、AspCms_Slide.asp、AspCms_StyleFun.asp、login.asp、AspCms_CommonFun.asp Vul的更多相关文章

  1. 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建

    作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...

  2. 一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移

    不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.superviso ...

  3. Asp.Net Core 2.0 项目实战(8)Core下缓存操作、序列化操作、JSON操作等Helper集合类

    本文目录 1.  前沿 2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装 3.XmlHelper快速操作xml文档 4.Serializatio ...

  4. 下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法

    下载远程(第三方服务器)文件.图片,保存到本地(服务器)的方法.保存抓取远程文件.图片   将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 ...

  5. 泛型编程、STL的概念、STL模板思想及其六大组件的关系,以及泛型编程(GP)、STL、面向对象编程(OOP)、C++之间的关系

    2013-08-11 10:46:39 介绍STL模板的书,有两本比较经典: 一本是<Generic Programming and the STL>,中文翻译为<泛型编程与STL& ...

  6. 敬请贤者:WEB、IOS开发(2年以上经验,大专);CTO、产品经理,运营专员 电商服装鞋饰买手(2年以上经验,服装或鞋类);体验店店长 (2年以上经验,服装或鞋类) 工作地点:丰台南苑路;有意者小窗QQ2211788980 - V2EX

    敬请贤者:WEB.IOS开发(2年以上经验,大专):CTO.产品经理,运营专员 电商服装鞋饰买手(2年以上经验,服装或鞋类):体验店店长 (2年以上经验,服装或鞋类) 工作地点:丰台南苑路:有意者小窗 ...

  7. SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外的取值方法(0、1两个值被取值的概率相等) C# MD5 加密,解密 C#中DataTable删除多条数据

    SELECT INTO和INSERT INTO SELECT的区别   数据库中的数据复制备份 SELECT INTO: 形式: SELECT value1,value2,value3 INTO Ta ...

  8. 用js写已知abc+cba = 1333,其中a、b、c均为一位数,编程求出满足条件的a、b、c所有组合。

    <!--<script type="text/javascript"> //已知abc+cba = 1333,其中a.b.c均为一位数,编程求出满足条件的a.b. ...

  9. CRMEB系统就是集客户关系管理+营销电商系统,能够真正帮助企业基于微信公众号、小程序实现会员管理、数据分析,精准营销的电子商务管理系统。可满足企业新零售、批发、分销、等各种业务需求。

    **可以快速二次开发的开源小程序商城系统源码**源码开源地址:https://github.crmeb.net/u/LXT 项目介绍: CRMEB系统就是集客户关系管理+营销电商系统,能够真正帮助企业 ...

随机推荐

  1. Hadoop:pig 安装及入门示例

    pig是hadoop的一个子项目,用于简化MapReduce的开发工作,可以用更人性化的脚本方式分析数据. 一.安装 a) 下载 从官网http://pig.apache.org下载最新版本(目前是0 ...

  2. express:webpack dev-server开发中如何调用后端服务器的接口?

    开发环境:     前端:webpack + vue + vue-resource,基于如下模板创建的开发环境: https://github.com/vuejs-templates/webpack  ...

  3. Web性能优化-合并js与css,减少请求

    Web性能优化已经是老生常谈的话题了, 不过笔者也一直没放在心上,主要的原因还是项目的用户量以及页面中的js,css文件就那几个,感觉没什么优化的.人总要进步的嘛,最近在被angularjs吸引着,也 ...

  4. 用c#操作Mongodb(附demo)

    因为需要,写了一个基于泛型的helper,这样要使用起来方便一点. 为了大家也不重复造轮子,所以发出来希望能帮到谁. 复杂的查询最好用linq,这也是mongodb官方建议的. mongodb的C#配 ...

  5. 20151120 - 蓝牙鼠标与 WiFi 冲突的解决办法

    问题现象描述:Windows 下蓝牙鼠标移动时不连贯 电脑:Dell 2015 版 NEW XPS 15 鼠标:Microsoft Bluetooth Designer Mouse 操作系统:Wind ...

  6. 彻底明白IP地址——IP地址的介绍

    彻底明白IP地址——IP地址的介绍 [ 作者:担子    转贴自:赛迪网    点击数:9692    更新时间:2004-12-22  ]   IP地址的介绍 1.IP地址的表示方法 IP地址 = ...

  7. 检测IE浏览器方法

    var isIE=function(){ var b=document.createElement("b"); b.innerHTML="<!--[if IE]&g ...

  8. 【转】关于Class.forName(“com.mysql.jdbc.Driver”)

    原文:http://www.cnblogs.com/gaojing/archive/2012/03/23/2413638.html 传统的使用jdbc来访问数据库的流程为: Class.forName ...

  9. 【JavaEE企业应用实战学习记录】sessionListener

    package sanglp.servlet; import javax.servlet.ServletContext; import javax.servlet.annotation.WebList ...

  10. java设计模式(六) 命令模式

    [命令模式]将"请求"封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也支持可撤销的操作. 1,定义命令接口 package com.pattern.comm ...