前言
这个漏洞的成因主要是因为程序对用户的输入没有进行过滤而导致的
代码审计
漏洞出现在注册页面上,这里因为没有进行过滤,所以我们可以直接注册一个XSS语句,且每次访问index.php页面都会执行这个语句。
先来看一下/php/register.php的代码吧
可以看到,POST过来的username直接就赋值给了$username,下面的sql语句也是直接拼接进去的,连个单引号都没加
这个bbs系统怎么说呢,但凡有数据交互的地方,就有利用点…
漏洞验证
首先注册一个XSS语句的用户,直接就注册成功了…
返回index.php,成功弹框:
临时修复
临时修复我采用的是htmlspecialchars() 进行简单过滤,先来看一下效果,这里为了体现加固效果,我把之前攻击的XSS测试语句先删除掉了
关键代码:
<?php
$lifeTime = 999 * 3600;
session_set_cookie_params($lifeTime);
session_start();
require_once('conn.php');
#############################################################
# 进行htmlspecialchars()编码