【原创】PageAdminCMS 前台SQL注入漏洞(2)

本文详细分析了PageAdmin网站管理系统中留言模块存在的SQL注入漏洞,包括漏洞成因、利用步骤及修复建议,指出该漏洞可能导致的严重后果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前根据公司的要求找了几个web程序的漏洞提交CNVVD,发现漏洞提交上去两个月了,CNVVD却没有任何回应,我提交的这几个漏洞却悄悄的修补掉了。

文章作者:rebeyond

受影响版本:V3.0

漏洞说明:

PageAdmin网站管理系统(CMS)是.NET开发的一款支持多分站、多语种,集成内容发布、信息发布、自定义表单、自定义模型、会员系统、业务管理等功能于一体的独立网站管理系统,支持Access和MSSQL Server数据库。用户可以下载安装使用,系统于2008年正式发布,目前全国用户已经超过50万以上,被广泛用于全国各级政府、学校和企业的网站搭建,具有以下特点:  1、简单易用、强大灵活;2、高负载功能;3、样式和内容分离;4、周密的安全策略和攻击防护。

该系统的留言模块对用户提交的参数没有进行充分的过滤,导致SQL注入。可直接获取数据库数据,如果采用的是MSSQL Server数据库,则有可能直接获取数据库服务器系统权限。

漏洞分析:

PageAdmin的逻辑代码混合存在于aspx页面、aspx.cs文件,以及dll文件中,dll文件中的代码对属性和方法名称、程序流程进行了混淆处理。程序通过IsStr和IsNum两个自定义函数对用户的请求数据进行过滤。

系统在整个程序流程中对当前登录用户名的获取都是通过数据库查询获得的,但是在用户留言模块,把用户名从数据库取出之后,并没有直接使用,而是放到了留言表单的一个隐藏字段中,提交留言的时候,会从该隐藏字段读取用户名,并带入数据库,从而导致SQL注入。

private void Check_IsMember()

 {

     if(Request.Cookies["Member"]==null)

      {

        P2.Visible=true;

      }

     else

      {

        Member_Valicate Member=new Member_Valicate();

        Member.Member_Check(); //此处从数据库中读取用户名

        Current_LoginName=Member._UserName; 

        Lb_CurrentLoginName.Text=Current_LoginName; //此处把读取到的用户名放到了一个表单控件中

        P1.Visible=true; //把该表单控件设置为隐藏状态

      }

 }

 

程序在下面的代码中带入数据库中:

private void Post_Fbk()
 {
   string Fbk_Content=Request.Form["fb_content"];
   if(Fbk_Content.Trim()=="")
    {
      conn.Close();
      Response.Write("<script type='text/javascript'>alert('留言内容不能为空!');location.href=location.href</script>");
      Response.End();
    }
   else
    {
      Fbk_Content=ResplayJs(Fbk_Content);
      Current_LoginName=Request.Form["Current_LoginName"]; //此处从隐藏表单中取用户名
      sql="insert into pa_spcfbk(space_owner,fbk_username,feedback,reply) values('"+UserName+"','"+Current_LoginName+"','"+Sql_Format(Fbk_Content)+"','')"; //把用户名带入数据库,没有经过任何过滤。
      OleDbCommand Comm=new  OleDbCommand(sql,conn);
      Comm.ExecuteNonQuery();
      conn.Close();
      Response.Write("<script type='text/javascript'>alert('提交成功!');location.href=location.href</script>");
      Response.End();
    }
 }

 

漏洞利用:

1、     注册用户并登录。url:http://xx.xx/e/member/index.aspx?type=login&s=1

2、     登录之后,访问我的空间:

3、     点击“给我留言”:

 

4、     随便填写留言内容,点击提交,然后抓包修改Current_LoginName内容:

 

6、     返回如下内容,成功注入:

  

 

转载于:https://www.cnblogs.com/rebeyond/p/5141182.html

### 安装和配置 PageAdminCMS 对于希望在 Linux 上安装和配置 PageAdminCMS 的用户来说,可以遵循以下指导: #### 准备工作环境 确保所使用的服务器或者本地计算机能够满足运行 PageAdminCMS 所需的基础条件。如果是在虚拟主机环境中,则应通过 FTP 工具上传 PageAdmin 文件至对应的网站根目录,并确认主机服务商提供的服务是否兼容所需的运行环境[^1]。 #### 下载 PageAdminCMS 虽然特定版本的下载链接指向 Windows 平台下的软件包[^4],为了获取适用于 Linux 系统的最新稳定版 PageAdminCMS,建议直接访问官方文档或官方网站查找适合 Linux 发行版的安装包。 #### 部署 CMS 应用程序 一旦获得了正确的安装文件,在 Linux 终端中解压该压缩包到指定位置。通常情况下,这可能涉及到创建一个新的 Web 项目目录并将解压后的文件放置于此处。之后按照官方说明完成数据库连接和其他必要的初始化设置。 #### 使用 Docker 进行快速测试(可选) 考虑到部分开发者倾向于利用容器化技术简化开发流程,也可以考虑采用类似于 Vulhub 这样的平台来进行初步尝试。不过需要注意的是,这里提到的例子是关于 WordPress 的部署方式[^2],因此具体针对 PageAdminCMS 的镜像名称和服务启动参数会有所不同,请参照官方指南调整相应的 `docker-compose.yml` 文件内容以适配目标应用的需求。 ```bash cd /path/to/pageadmin/docker/ docker-compose up -d ``` #### 后续维护与管理 成功搭建起 PageAdminCMS 实例后,日常管理和更新操作同样重要。熟悉常用的 Linux 命令如 find 可帮助更好地定位系统中的资源文件[^5];而对于源码级别的修改或是插件扩展而言,掌握 Vim 或其他高效的文本编辑器将是提高工作效率的关键技能之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值