ZZCMS201910审计——存储XSS漏洞

ZZCMS201910审计——存储XSS漏洞

  1. 在函数集成文件…/inc/function.php中发现如下代码:由此猜测若存在调用此函数的地方,可能会出现sql或者xss注入的存在;下一步应该全局查找存在调用此函数,且第二个参数为true的地方;(shift+ctrl+F)
function stripfxg($string,$htmlspecialchars_decode=false,$nl2br=false) {
   //去反斜杠
$string=stripslashes($string);//去反斜杠,不开get_magic_quotes_gpc 的情况下,在stopsqlin中都加上了,这里要去了
if ($htmlspecialchars_decode==true){
   
$string=htmlspecialchars_decode($string);//转html实体符号
}
if ($nl2br==true){
   
$string=nl2br($string);
}
return $string;
}
/*如上stripfxg函数需要三个参数:
1、首先将参数string进行剥离反斜杠,目的是传入传入变量参数处的addslashes函数对sql的一些字符添加了反斜杠进行转义;例如传入id=1' 服务器接收的是id=1\'  
	若传入的变量id的值再被该函数过滤,那么恢复原状 id=1
2、若函数调用第参数为true,则进入第一个if语句用htmlspecialchars_decode函数对数据进行过滤,目的和上面一样,为了将xss注入的一些字符转义后恢复原状,例如 &lt; 被转回原状 <
3、第三个参数对应换行功能,不重要;最后函数返回值为恢复过的字符串;
	例如url中: " zzcms/inc/test.php?id=<script>1'' "
	服务器接收为: " &lt;xss&gt;1\'\ "
	若调用该函数:服务器接收为: " <script>1'' "
*/

2.在文件…/zt/show.php中:逻辑是找到对应变量是否可控和被打印输出。这一步找到了gsjj变量是可以被打印的;content值是来自于一句sql查询里面某个字段的值,且通过url传入参数id可以被打印出来;

$gsjj=$gsjj. stripfxg($content,true);
//全局发现上面语句(验证了content可能可控和gsjj可打印);同时变量gsjj视乎都是具体html字符串变量;
//之后要判断gsjj是否可打印输出;ctrl+f逐个搜索gsjj,几乎跳到本文件的最下方:出现以下代码:
$strout=str_replace("{#gsjj}",$gsjj,$strout); 
echo  $strout;  
//可见变量strout若存在 " {#gsjj} "字符串,该字符串会被变量gsjj所覆盖; 至于旧的strout变量视乎很多,但是感觉有点是集成化的html字符串,所以可以假设这里大概率会被覆盖; 最后echo出变量strout;由此可见该变量可以被输出。
//之后找变量content:本文件没有,但是在include文件里找到了在top.php文件中:
$rs=query($sql);
$row=num_rows($rs);    //获取行数
if (!$row
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值