前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >看我深夜如何绕过disable_functions拿到主机权限

看我深夜如何绕过disable_functions拿到主机权限

原创
作者头像
WgpSec
修改2021-02-04 18:05:06
1.8K0
修改2021-02-04 18:05:06
举报

声明

本文作者:北美第一突破手 本文字数:1935

阅读时长:20分钟

附件/链接:点击查看原文下载

声明:请勿用作违法用途,否则后果自负

本文属于WgpSec原创奖励计划,未经许可禁止转载

前言

        事情的起因是这样的 昨天晚上还在和女朋友聊天的时候,突然一个好兄弟发了一个连接给我们,说他的朋友被骗了钱,我们拿到主站的时候大概是这样的 :sun_with_face:这种站点一看就知道是那种骗人的站点,也不知为啥有这么多人相信天上掉馅饼。

一、

信息收集

按照一般的思路先做一手信息收集,先手看一下IP和端口:

香港的阿里云?这也太离谱了吧

在扫了一下目录啥的,除了这个还有一个后台,先不管,现从这个主站开始,想着先注册一下账号啥的看看有无业务上的逻辑漏洞,顺便注册一个号抓了一下包,尝试爆破一下用户名啥的。

这里想着爆破一下看看存在的用户,结果才整跑了20个包就ban了ip,打消念头

整了半天的登录入口结果还要邀请码,没有邀请码还没法注册,整挺好的,于是拿上朋友的注册过的账号登上去了,有个客服聊天的东西,看了一下链接跳转,爆破一下,于是就有了这样一个页面:

弱口令无果,于是去注册了一个账号登录:

我不是很清楚这到底是个啥,但是登录上去就是这个玩楞。这开发也太不走心了吧,就这的UI实在是太离谱了,我觉得我又可以了:smile:,于是右键查看源码,看看有无可用的信息,大致扫了一遍找到一个上传文件的路径,打开报错

在最下面可以看到是TP5.0的框架,尝试看看tp框架的漏洞,扫了一遍基本没有已知poc的漏洞,然后就陷入了沉思。

二、

柳暗花明

吃了饭的我在群里和几个好兄弟吹水,他们说了今天有个网站必须要用360才能打开,不然的话都是乱码的,我寻思哪儿有这么离谱,突然想到哪个站,于是我用了一下谷歌打开这个页面:

罢了罢了

三、

上传Shell

找了一会找到一个上传点,尝试上传文件

拿到shell

用冰蝎连一下:

三、

开启外链拿到数据库

然后尝试找他的数据库的配置文件,因为只能本地连接数据库不允许外链,所以我们可以先传一个小马登录他的数据库,然后在开启外链就ok:

开启外链命令:

GRANT ALL PRIVILEGES ON *.* TO ‘root’@'%’ IDENTIFIED BY ‘外链登录密码’ WITH GRANT OPTION;

尝试用工具去链接:

三、

尝试绕过disable_functions

在执行命令的时候出错,看了一下应该是php函数disable_functions禁用了命令执行:

所谓的disable_functions,就是运维人员会禁用PHP的一些“危险”函数,将其写在php.ini配置文件中,就是我们所说的disable_functions了。例如:

passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,link 等

渗透时,上传了webshell却因为disable_functions禁用了我们函数,我们就无法执行相应的命令,这时候就需要去进行一个绕过。

disable_functions其实是一个黑名单机制,我们可以通过观察是否存在可利用的漏网之鱼,直接通过其实现绕过即可。

就我所知的绕过有这几种:

  • 常规绕过:exec,shell_exec,system,passthru,popen,proc_open
  • 利用环境变量LD_PRELOAD绕过mail,imap_mail,error_log,mb_send_mail
  • 利用pcntl_exec绕过利用imap_open函数任意命令执行(CVE-2018-19518)
  • 利用系统组件window com绕过利用Apache+mod_cgi+.htaccess
  • 绕过利用ImageMagick漏洞绕过利用PHP7.4的FFI绕过利用 ShellShock绕过(CVE-2014-6271)
  • 蚁剑插件

因为我知道他是php7.x的版本,所以我先去尝试了github上一个开源的利用环境变量LD_PRELOAD的脚本

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

没有回显,然后又去试了一下另外一个::open_hands:任然没有返回:

<?php​header("Content-Type: text/plain");​$cmd="/tmp/exec";@unlink($cmd);$c = "#!/usr/bin/env bash\n".$_GET[x]."> /tmp/output.txt\n";file_put_contents($cmd, $c);chmod($cmd, 0777);$cd="/tmp/output.txt";print_r(file_get_contents($cd));​​switch (pcntl_fork()) {​  case 0:​    $ret = pcntl_exec($cmd);​    exit("case 0");​  default:​    echo "case 1";​    break;​}

问了一下群里的师傅他们说可以这样: &_GET['a'](&_GET['b']) 然后构造:a=exec&b=phpinfo() 然后进行绕过,想了想在本地写了一下shell没有问题,于是尝试去绕过,当我正要去试的时候突然想起来可以直接用蚁剑的bypass插件啊!

插件地址

看来还是自己太菜了,蚁剑的这个绕过是使用的php_gc_uaf进行baypass

利用原理

`php7-gc-bypass漏洞利用PHP garbage collector程序中的堆溢出触发进而执行命令

影响范围是linux,php7.0-7.3

https://github.com/mm0r1/exploits/blob/master/php7-gc-bypass/exploit.php

php-json-bypass漏洞利用json序列化程序中的堆溢出触发,以绕过disable_functions并执行系统命令

影响范围是linux,php 7.1-7.3

蚁剑插件实现:

两插件首先判断系统版本及php版本是否满足使用条件

启新终端,通过PHP7GCUAFEXP()函数、JSONSerializer_UAF()函数传递执行命令

两EXP函数通过调用原作者POC实现

`

拿到权限 能够执行命令了接下来就是提权了,提权的思路大概就是反弹一下shell,然后在尝试使用已知的EXP进行提权操作,这个站可以用脏牛直接整活:loop

后记

以后多备几个浏览器,有些网站是真的难顶,一般的监控也会存在这样的情况。只能360之类的浏览器进行操作。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站渗透测试
网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档