PHP代码审计——存储型XSS(华科企业网站管理系统 -hkqyglxt )

一、漏洞描述

对传入数据库的参数未进行过滤导致存储型xss

在我的资源中下载::hkqyglxt-含有存储型XSS漏洞的源码包 下载即可

二、代码审计

2.1 查看代码

2.2.1 第一个漏洞文件位置

在 /admin/cms_channel_add.php 文件中

2.2.1.1 代码审计

在图中红框 标记起来的位置,存在问题
在这里插入图片描述
以“请填写导航名称”这一句 为例,其余几句参照本例即可

	null_back($_POST['n_name'] ,'请填写频道名称');

意思是: 采用POST方式通过 n_name 参数传递数据,之后将传递过来的数据带入 null_back()函数

接下里查看null_back()函数的作用
使用seay源代码审计系统的全局搜索功能,查找 null_back ,如下图所示
在最下面找到 function null_back($str, $rul) ,就是该函数
在这里插入图片描述
双击最后一行,跳转到文件 library.php 中null_back()函数
查看代码,意思是:判断字符串内容是否为空,没有进行任何过滤
在这里插入图片描述
接着回到 /admin/cms_channel_add.php 文件,继续往下执行,

**意思是:
**判断是否已存在相同的频道名称,判断是否已存在相同的导航名称
经过判断,如果不存在相同的频道名称、导航名称,继续向下执行

将通过POST方式获取n_aname的参数值,赋值给$_data['n_aname']
将通过POST方式获取n_nname的参数值,赋值给$_data['n_nname']

	$_data['n_aname'] = $_POST['n_aname'];
	$_data['n_nname'] = $_POST['n_nname'];

在这里插入图片描述
继续向下执行,通过POST方式传递的参数值全部都赋值给$data变量,并且将data变量的值代入arrtoinsert()函数
在这里插入图片描述
使用seay源代码审计系统,查看arrtoinsert()函数
在这里插入图片描述
发现arrtoinsert()函数的作用是将:将数组转换成供insert用的字符串,也没有进行任何过滤
在这里插入图片描述
接着回到 /admin/cms_channel_add.php 文件,继续往下执行下一句

	$sql = 'insert into cms_nav ('.$str[0].') values ('.$str[1].')';

在这里插入图片描述

**意思是:**将获取到的内容插入进数据库,其中列名值是 n_parent 参数的值,对应的数据值是 n_name 参数的值

总结:
请填写频道名称的值 n_name ,未经任何过滤,直接插入到数据库中,导致可以插入XSS的payload:<script>alert(1)</script>

2.2.1.2 漏洞复现

通过文件路径/admin/cms_channel_add.php 猜测应该是在后台管理的位置

输入账号密码登录后台
在这里插入图片描述
登录后台后,直接将文件路径拼接到127.0.0.1上,之后访问发现是 内容管理-》添加频道
在这里插入图片描述
输入payload:

3<script>alert(123)</script>

之后点击添加新频道
在这里插入图片描述

在这里插入图片描述
访问网站首页,触发XSS弹窗,并且新频道已成功添加
在这里插入图片描述
在这里插入图片描述

2.2.2 第二个漏洞文件位置

在 /admin/cms_message_answer.php 文件中

2.2.2.1 代码审计

在图中红框 标记起来的位置,存在问题
在这里插入图片描述

	$_data['m_answer'] = $_POST['m_answer'];

**意思是:**将通过POST方式m_answer参数传递过来的值,直接赋值给 $_data变量
在这里插入图片描述
之后将$_data变量的值代入到 arrtoupdate()函数,并赋值给$str
查找arrtoupdate()函数
在这里插入图片描述
arrtoupdate()函数的作用是“将数组转换成供update用的字符串”,没有进行任何过滤
在这里插入图片描述
接着回到 /admin/cms_message_answer.php 文件,继续向下执行
直接将$str的值,带入数据库中执行
在这里插入图片描述
总结:
参数 m_answer ,未经任何过滤,直接插入到数据库中,导致可以插入XSS的payload:<script>alert(666)</script>

2.2.1.2 漏洞复现

通过文件路径/admin/cms_message_answer.php 猜测应该是在后台管理的位置
访问http://127.0.0.1/admin/cms_message_answer.php后直接跳转到下图所示位置
在这里插入图片描述
选择详情回复
在这里插入图片描述
输入payload:<script>alert(666)</script> 点击保存
在这里插入图片描述

在这里插入图片描述
之后我们进入前台。查看访客留言,触发XSS弹窗
在这里插入图片描述
更多web安全工具与存在漏洞的网站搭建源码,收集整理在知识星球。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40412037/article/details/115166481
今日推荐