一、 启动环境

1.双击运行桌面phpstudy.exe软件



2.点击启动按钮,启动服务器环境

二、代码审计

1.双击启动桌面Seay源代码审计系统软件



2.因为74CMS3.0源代码编辑使用GBK编辑,所以首先需要先将编码改成GBK



3.点击新建项目按钮,弹出对画框中选择(C:\phpStudy\WWW\74cms),点击确定

漏洞分析

1.点击展开左侧link目录,弹出的下拉列表中双击add_link.php文件,右侧页面可以看到相关代码。

  1. elseif ($act=="save")
  2. {
  3. if ($_CFG['app_link']<>"1")
  4. {
  5. showmsg('已停止自助申请链接,请联系网站管理员!',1);
  6. }
  7. else
  8. {
  9. $setsqlarr['link_name']=trim($_POST['link_name'])?trim($_POST['link_name']):showmsg('您没有填写标题!',1);
  10. $setsqlarr['link_url']=trim($_POST['link_url'])?trim($_POST['link_url']):showmsg('您没有填写链接地址!',1);
  11. $setsqlarr['link_logo']=trim($_POST['link_logo']);
  12. $setsqlarr['app_notes']=trim($_POST['app_notes']);
  13. $setsqlarr['alias']=trim($_POST['alias']);
  14. $setsqlarr['display']=2;
  15. $setsqlarr['type_id']=2;
  16. $link[0]['text'] = "返回网站首页";
  17. $link[0]['href'] =$_CFG['site_dir'];
  18. !inserttable(table('link'),$setsqlarr)?showmsg("添加失败!",0):showmsg("添加成功,请等待管理员审核!",2,$link);
  19. }
  20. }

2.程序首先检测网站是否开启自助申请链接,如果没有,将阻止用户申请。 紧接着网站将获取到链接名字、URL、logo、说明等赋值到setsqlarr数组,最后将数据插入到数据库中。 文件开始程序依然包含了公共文件/include/common.inc.php,程序内部使用了str_tags去除HTML和PHP标签,所以,凡是带有尖括号的一律会被过滤掉。

3. 后台/admin/admin_link.php负责管理申请的友情链接

  1. if($act == 'list')
  2. {
  3. check_permissions($_SESSION['admin_purview'],"link_show");
  4. require_once(QISHI_ROOT_PATH.'include/page.class.php');
  5. $oederbysql=" order BY l.show_order DESC";
  6. $key=isset($_GET['key'])?trim($_GET['key']):"";
  7. $key_type=isset($_GET['key_type'])?intval($_GET['key_type']):"";
  8. if ($key && $key_type>0)
  9. {
  10. if ($key_type===1)$wheresql=" WHERE l.link_name like '%{$key}%'";
  11. elseif ($key_type===2)$wheresql=" WHERE l.link_url like '%{$key}%'";
  12. }
  13. else
  14. {
  15. !empty($_GET['alias'])? $wheresqlarr['l.alias']=trim($_GET['alias']):'';
  16. !empty($_GET['type_id'])? $wheresqlarr['l.type_id']=intval($_GET['type_id']):'';
  17. if (is_array($wheresqlarr)) $wheresql=wheresql($wheresqlarr);
  18. }
  19. $joinsql=" LEFT JOIN ".table('link_category')." AS c ON l.alias=c.c_alias ";
  20. $total_sql="SELECT COUNT(*) AS num FROM ".table('link')." AS l ".$joinsql.$wheresql;
  21. $page = new page(array('total'=>get_total($total_sql), 'perpage'=>$perpage));
  22. $currenpage=$page->nowindex;
  23. $offset=($currenpage-1)*$perpage;
  24. $link = get_links($offset, $perpage,$joinsql.$wheresql.$oederbysql);
  25. $smarty->assign('link',$link);
  26. $smarty->assign('page',$page->show(3));
  27. $smarty->assign('upfiles_dir',$upfiles_dir);
  28. $smarty->assign('get_link_category',get_link_category());
  29. $smarty->display('link/admin_link.htm');
  30. }

4.程序首先检查管理员权限,然后获取前端页面传过来进行拼接SQL语句,最后进入到get_links函数内部进行数据库查询查询

  1. function get_links($offset, $perpage, $get_sql= '')
  2. {
  3. global $db;
  4. $row_arr = array();
  5. $limit=" LIMIT ".$offset.','.$perpage;
  6. $result = $db->query("SELECT l.*,c.categoryname FROM ".table('link')." AS l ".$get_sql.$limit);
  7. while($row = $db->fetch_array($result))
  8. {
  9. $row_arr[] = $row;
  10. }
  11. return $row_arr;
  12. }

5.查询完成以后将获得结果传入到/link/admin_link.htm文件中

  1. <tr>
  2. <td class="admin_list admin_list_first">
  3. <input name="id[]" type="checkbox" value="{#$list.link_id#}" />
  4. <a href="{#$list.link_url#}" target="_blank" {#if $list.display<>"1"#}style="color:#CCCCCC"{#/if#}>{#$list.link_name#}</a>
  5. {#if $list.Notes<>""#}
  6. <img src="data:images/comment_alert.gif" border="0" class="vtip" title="{#$list.Notes#}" />
  7. {#/if#}
  8. {#if $list.link_logo<>""#}
  9. <span style="color:#FF6600" title="<img src={#$list.link_logo#} border=0/>" class="vtip">[logo]</span>
  10. {#/if#}
  11. {#if $list.display<>"1"#}
  12. <span style="color: #999999">[不显示]</span>
  13. {#/if#}
  14. </td>

6.模板文件中显示logo直接使用数据库传入过来的link_logo参数,并将作为img图像 src的参数,并且src参数用户可控,所以构成存储型XSS。

漏洞利用

1.首先点击网站底部的申请友情连接



2.弹出的页面中,输入如下参数,然后点击提交



其中Logo地址处为真正的攻击payload,x为了使img图像报错,然后调用onerror参数弹出对话框。 3.登录后台,依次点击广告->友情链接,将鼠标移动到LOGO位置,页面立刻弹出对话框

74CMS 3.0 存储型XSS漏洞的更多相关文章

  1. 74CMS3.0储存型XSS漏洞代码审计

    发现一个总结了乌云以前代码审计案例的宝藏网站:https://php.mengsec.com/ 希望自己能成为那个认真复现和学习前辈们思路的那个人,然后准备慢慢开始审计一些新的小型cms了 骑士cms ...

  2. Java Web开发 - 持久型/存储型XSS漏洞

    Java Web开发 - 持久型/存储型XSS漏洞 1.什么是XSS漏洞攻击? XSS是跨站脚本攻击(Cross Site Scripting)的简称,之所以叫XSS而不是CSS相比大家都能明白了吧, ...

  3. 【代码审计】eduaskcms_v1.0.7前台存储型XSS漏洞分析

      0x00 环境准备 eduaskcms官网:https://www.eduaskcms.xin 网站源码版本:eduaskcms-1.0.7 程序源码下载:https://www.eduaskcm ...

  4. 【代码审计】iZhanCMS_v2.1 前台存储型XSS漏洞分析

      0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...

  5. 【代码审计】大米CMS_V5.5.3 后台多处存储型XSS漏洞分析

      0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...

  6. Phpwind v9.0 存储型xss跨站漏洞

    漏洞版本: Phpwind v9.0 漏洞描述: Phpwind专注于中小网站应用的整合和价值的发掘,我们认为,以社区为网站的基础,可以提供丰富的应用,满足人们获取信息.交流.娱乐.消费等生活需求.获 ...

  7. 存储型XSS靶场作业

    首先进入靶场:http://59.63.200.79:8082/index.php xss平台使用:xss8c 发现CMS版本号,搜索是否此版本号存在可利用漏洞: 找到存储型xss漏洞,在xss平台生 ...

  8. DVWA之Stored XSS(存储型XSS)

    目录 Low Medium High Impossible Low 源代码: <?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $m ...

  9. 【代码审计】QYKCMS_v4.3.2 前台存储型XSS跨站脚本漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...

随机推荐

  1. appium填坑

    首次使用appium web driver,不说搭建环境的麻烦,初次写完一个操作计算器的程序,但是运行一直报错:selenium.common.exceptions.WebDriverExceptio ...

  2. Linux源码编译安装php7.2

    以下简单的介绍下如何源码安装PHP,对于版本不一定是7.2,也可以是7.3,当然方法都是换汤不换药的,核心东西不变. 一.下载PHP源码 需要到指定的路径下载源码,执行下面的命令 wget http: ...

  3. 理解Faster R-CNN

    首先放R-CNN的原理图 显然R-CNN的整过过程大致上划分为四步: 1.输入图片 2.生成候选窗口 3.对局部窗口进行特征提取(CNN) 4.分类(Classify regions) 而R-CNN的 ...

  4. 协程 & IO模型 & HTTP协议

    今日内容 进程池与线程池的基本使用 协程理论与实操 IO模型 前端简介 内容详细 一.进程池与线程池的基本使用 1.进程池与线程池的作用 为了保证计算机硬件安全的前提下,提升程序的运行效率 2.回调机 ...

  5. Note -「计算几何」模板

      尚未完整测试,务必留意模板 bug! /* Clearink */ #include <cmath> #include <queue> #include <cstdi ...

  6. MXNet源码分析 | KVStore进程间通信

    本文主要基于MXNet1.6.0版本进行分析. 在上一篇文章中,我们分析了MXNet中KVStore的进程内通信机制.在这篇文章中,我们主要分析KVStore如何进行多节点分布式通信. 在KVStor ...

  7. python3发微信脚本

    企业微信发微信脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- #GuoYabin import requests,json,sys,imp imp.r ...

  8. SopringBoot2.x整合Redis

    1.导入相关依赖 <!-- redis 依赖 --> <dependency> <groupId>org.springframework.boot</grou ...

  9. [LeetCode]1295. 统计位数为偶数的数字

    给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数. 示例 1: 输入:nums = [12,345,2,6,7896] 输出:2 解释: 12 是 2 位数字(位数为偶数)  345 ...

  10. 使用Hot Chocolate和.NET 6构建GraphQL应用(9) —— 实现Mutate更新数据

    系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在上一篇文章中,我们演示了如何使用Hot Chocolate进行GraphQL的Mutate新增数据,这篇文 ...