ZZCMS审计(XSS)

如何引发的 Xss漏洞

🎈在一个项目中寻找XSS漏洞,个人认为需要找到一个用户的输入点,且这个输入点会在客户端返回一个输出,其实就是用户输入一个JS标签alert(1)在浏览器中直接执行了(后台没有进行过滤)。

记录审计思路,审计CMS(ZZCMS)

不记录审计细节。

一、在项目文件 zt/show.php中发现目标

在这里插入图片描述

在show.php中找到echo这个函数,最终相关的变量,最终选择了gsjj,因为这是一个和用户最紧密的字段,后续跟踪进行解释。

二、gsjj变量追踪

追踪这个变量要注意变量接收的参数用户是否可控。
在这里插入图片描述

继续进入stripfxg这个函数中进行查看,看整个交互过程。

跟进去发现是这样一个函数:
在这里插入图片描述
下面看看这个函数是如何执行的:

入的参数是 content变量和true,所以执行的是下面这一个if

if ($htmlspecialchars_decode==true){
$string=htmlspecialchars_decode($string);//转html实体符号
}

htmlspecialchars这个函数可以把html实体转化为字符,htmlspecialchars_decode顾名思义解码,写一个代码例子:

<?php
$a="<srcipt>alert(1)</srcipt>";
$string = htmlspecialchars($a); //把html实体转为字符
echo  'htmlspecialchars函数:'.$string;
$s = htmlspecialchars_decode($string); //字符实体还原
echo  "htmlspecialchars_decode函数:".$s;

在浏览器的打印两个函数分别操作后的结果,就一目了然了:
在这里插入图片描述
这里可以得出结论,就算内部存在对XSS过滤的htmlspecialchars函数,只要在其后执行了stripfxg这个方法,就可以无视哪些过滤。
继续下一步。

三、content变量追踪 top.php

在查找时发现在show.php这个文件中没有content这个变量的定义,把目标移向include包含的文件中,最后找到top.php
在这里插入图片描述

在top.php追踪content

48行row变量又是一个转折点
在这里插入图片描述
对整个文件进行分析,数据可能在数据库中进行了中转如下图:
在这里插入图片描述
这串代码分析的结果是,存在数据库的数据判断(用户信息),判断与否操作把数据进行提取,这个情况需要找到数据库中和用户绑定的更新语句

在usermodify.php追踪content

ctrl+shift+r全局查找update:
在这里插入图片描述

最后跟进方法usermodify.php:
在这里插入图片描述
在这个文件中需要满足一个if条件才能进入这部分的数据更新

在这里插入图片描述
action的传参位置
在这里插入图片描述
下面直接抓包调试:
在这里插入图片描述
最终发现停在了checkadminisdo这个方法里直接提示无法找到指定用户
在这里插入图片描述

这个时候要把思路装换,注册一个用户,但是现在的文件在admin中,这个权限是不能注册的,只能去寻找普通用户的界面,看是否存在相同的字段操作,当然也有别的操作。

四、尝试是否可以使用普通用户操作字段

发现user/manage.php同一个判断
在这里插入图片描述
找到content变量:
在这里插入图片描述
抓包进行代码测试
在这里插入图片描述
此处的action是get请求
代码调试结果
在这里插入图片描述
成功绕过这个判断。
在这里插入图片描述
最后执行到目标语句。
修改content加入下面的js代码

<script>alert('xss')</script>

在这里插入图片描述
最终结果:
在burp抓包访问时,若出现提示非法字符不执行,在url中任意给一个参数a=siteconfig.php。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让我在看看

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值