里客云活码安全增强版
里客云活码系统是目前能够找到的唯一免费活码系统,用户量巨大,包括我们,但网站经常被攻击,后来发现是因为这套代码本身存在安全漏洞,反馈开发者很久也没有修复,因此在源代码基础上进行了修改,并将修改的部分全部开源,希望更多用户收益。
本代码是基于里客云 6.0.1 活码系统进行开发的里客云增强版活码,主要是修复源代码中的安全漏洞,可以满足个人搭建自用的微信/企业微信/QQ/钉钉等活码系统
由于平时工作比较忙,可能无法及时处理issus, 因此建了一个付费交流群,希望大家可以讨论关于活码相关技术,为了防止广告人加入,设置了付费入群,每人仅需1元, 点击付费1元加入里客云官方交流 链接
或者直接扫码加入
这是一套开源、免费、可上线运营的活码系统,便于协助自己、他人进行微信私域流量资源获取,更大化地进行营销推广活动!降低运营成本,提高工作效率,获取更多资源。
微信群二维码活码工具,生成微信群活码,随时可以切换二维码!微信官方群二维码有效期是7天,过期后无法扫码进群,或者是群人数满200人就无法扫码进群,如果我们在推广的时候,群满人或者过期了,别人还想进群,我们将会失去很多推广效果,所以有了群活码,可以在不更换链接和二维码的前提下,切换扫码后显示的内容,灵活变换!
本文主要以在Centos 7 安装为例进行介绍
先安装宝塔管理面板
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
登录宝塔,安装php,nginx,mysql即可
下载代码到服务器 最终目录 /home/www/liKeYun_Huoma-main
在宝塔上,新建站点 选择php和创建mysql数据库
访问网站的/install目录,如下图所示
如果目录权限不对,需要设置权限
输入数据库信息和账号密码(账号和密码尽可能复杂)即可完成安装
登录后台 /dashboard/account/login/ 输入配置的账号和密码
点击系统设置,输入网站域名,注意需要输入http://
前台登录 /console/account/login/ 输入配置的账号和密码
创建群活码
注意默认是暂停使用,需要将其修改成正常使用
保证除后台外功能没有常见的安全漏洞
注册时存在SQL注入漏洞,未对传入参数进行任何处理,进行数据库查询
文件: account\reg\regcheck.php
修复方法:
由于接收的参数都是字符串类型,因此直接将接收到参数进行单引号字符替换
function trim_my($mydata) {
return trim(str_replace("'","",$mydata));
}
$user = trim_my($_POST["user"]);
$pwd = trim_my($_POST["pwd"]);
$email = trim_my($_POST["email"]);
$yqm = trim_my($_POST["yqm"]);
当注册成功后,会向注册邮箱发送邮件
$sendurl = dirname(dirname('http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"])).'/email/send_reg.php?email='.$email.'&user='.$user.'&pwd='.$pwd;
file_get_contents($sendurl);
其中$_SERVER['HTTP_HOST'] 是取自客户端请求的HOST数据
当网站为默认网站(注:不需要通过请求HOST进行转发时)存在SSRF漏洞,由于已经修复了入口的SQL注入 ,导致验证码校验出无法验证通过
// 验证邀请码
$sql_checkyqm = "SELECT * FROM huoma_yqm WHERE yqm = '$yqm'";
$result_yqm = $conn->query($sql_checkyqm);
if ($result_yqm->num_rows > 0) {
因此SSRF需要同时满足,攻击者有验证码,并且网站是默认站点,两个条件才会触发,暂且不进行修复,等下期处理
没有对输入的用户名和密码进行过滤,导致SQL注入,进而造成万能密码登录的问题
文件: account\login\logincheck.php
修复方法:
由于接收的参数都是字符串类型,因此直接将接收到参数进行单引号字符替换
//过滤掉单引号 防止注入
function trim_my($mydata) {
return trim(str_replace("'","",$mydata));
}
// 获取前端POST过来的数据
$user = trim_my($_POST["user"]);
$pwd = trim_my($_POST["pwd"]);
登录未对登录次数进行限制,存在暴力破解
采用session保存错误次数
//防暴力破解 连续输入10次 则禁止登陆
session_start();
if(isset($_SESSION["pass.wrong"])) {
if(intval($_SESSION["pass.wrong"]) > 10) {
$result = array(
'code' => '106',
'msg' => '账号或密码错误'
);
}
}
登录失败一次,记一次数
$result = array(
'code' => '106',
'msg' => '账号或密码错误'
);
if(isset($_SESSION["pass.wrong"])){
$_SESSION["pass.wrong"] = intval($_SESSION["pass.wrong"]) + 1;
}else {
$_SESSION["pass.wrong"] = 1;
}
由于session本身基于客户端传递的cookie,因此当客户端每次爆破未传递cookie,将导致无session,进而防御失效
可通过设置强密码和未知用户名来提高攻击门槛,下一版本增加对IP和图片验证码功能
在account下有个xufei_do.php文件,同样存在SQL注入 ,直接修复
//过滤掉单引号 防止注入
function trim_my($mydata) {
return trim(str_replace("'","",$mydata));
}
// 获得表单POST过来的数据
$yqmstr = trim_my($_POST["yqm"]);
$user = trim_my($_POST["user"]);
与注册功能存在同样的漏洞:SQL注入和特定条件下的SSRF
文件: account\fpwd\fpwdcheck.php
function trim_my($mydata) {
return trim(str_replace("'","",$mydata));
}
// 获取前端POST过来的数据
$user = trim_my($_POST["user"]);
$email = trim_my($_POST["email"]);
存在SQL注入,同样进行修复
文件 \dashboard\account\login\logincheck.php
function trim_my($mydata) {
return trim(str_replace("'","",$mydata));
}
// 获取前端POST过来的数据
$user = trim($_POST["user"]);
$pwd = trim($_POST["pwd"]);
文件地址 \common\qun\index.php
只接收了 hmid 参数,并且是int类型,直接强制转换成int即可
$qun_hmid = intval($qun_hmid);
文件 common\qun\redirect\index.php 这个是字符型 修复代码
//过滤掉单引号 防止注入
function trim_my($mydata) {
return trim(str_replace("'","",$mydata));
}
// 获取数据
$qun_hmid = trim_my($_GET["hmid"]);
common下其它问题 都进行类似处理即可
第一版只修复部分功能,保证登录入口和活码接口的安全性,只适合个人自己使用,部署建议:
- 删除addons和pay文件夹 这个主要是做微信支付的,用不到可以直接删除
- 后台功能如console和dashboard 可以在宝塔上添加401 二次认证 防止漏洞出现
由于平时工作比较忙,可能无法及时处理issus, 因此建了一个付费交流群,希望大家可以讨论关于活码相关技术,为了防止广告人加入,设置了付费入群,每人仅需1元, 点击付费1元加入里客云官方交流 链接
或者直接扫码加入
Name:TANKING
WeChat:sansure2016
Blog:https://segmentfault.com/u/tanking