记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

实战之另辟蹊径绕过waf并getshell拿下站群

2020-06-10 14:05

前言

今天本来应该过6.1儿童节的,恰巧昨天和mrx渗透的一个站上传还没有绕过,早上mrx和我就开始重新看看,先说一下背景,首先通过弱口令进了后台,经过一番寻找发现了如下配置


看到这个,已经胸有成竹,接下来就是常规的加上php后缀,并且上传一波,于是我来了一发如下:


waiting了很久有waf检测 我直接 cancle了,接下来就是有趣的绕waf,我绕了3个小时,各种奇葩姿势都弄出来了,比如下图


都改成这个鬼样子了 还是过不鸟 尝试过各种一般用的过waf的方法:

1.jpg.php  1.php.jpg 1.php%00.jpg 
filename=1.jpg
filename=1.php
Content-Disposition: form1-data; name="Filedata"; filename="3.php"
Content-Disposition: form-data; name="filename"; filename="3.jpg" .php
filename="垃圾数据 30w".jpg.php

因为系统是windwos的 利用windows特性 文件如果以::$DATA结果那么这部分自动会被去掉 所以配置允许后缀为php::$DATA,拿去发包,waf直接检测到,我改为 ::data 就可以发包但是返回保存出错,同理我利用? . 等windows特性尝试绕过(如果这些特殊字符比如? . ! 等在文件名结尾的时候有一定几率被直接去掉),把这些特殊字符作为文件结尾进行尝试结果全部以失败告终,失败原因都是和下面这个图片一样
尝试用长文件名截断同样失败

等等等等 还尝试了各种后缀

pht,php,phtml,php3,php4,php5,php6,php7,aspx,asmx,asp,jsp,jspx

我的心情如下:


全都告以失败,弄到了前一天的晚上12点,还是拿不下,于是洗澡睡了.........
第二天 也就是 6.1儿童节 又开始一杯茶一包烟一个破站绕一天.........

正文

其实前一天晚上我就想到了这种方法,但是嫌麻烦就没试,今天没办法了,实在是绕不过,于是尝试使用这种方法,利用内网ip或者是ip白名单来绕过waf,如果两个服务器在同一个内网,那么他们之间互相访问可能并不会经过waf在的服务器,又或者是ip白名单的原因导致这样有可能绕过waf,因为之前拿过和这个站同属一个体系的另外一个站,所以我想试试这种方法,我在已经拿到shell的那个站上(可以出网),ping 现在这个站 解析的ip 并不是内网ip 心中有一丝灰暗掠过....管他的,只有试试了,说明一下已经被getshell的站我称为A站,A站为linux环境,现在这个还没拿下的称为B站.
首先我要在A站上弄一个socks代理 然后通过这个代理我去访问B站,然后上传,因为A站是在内网,所以我先尝试用web代理,用的是这个Neo-reGeorg,流量加密版 reGeorg,但是用之前我就感觉成功率不高,因为php版本的这个代理不是很好用,之前没有使用成功过,不过asp,aspx的倒是很好用,我将本地端口8888与A站上的tunnel.php 建立连接 然后我用burp走 8888 端口,结果失败,连接有问题,这是预料之中的,那就换一种代理方法,既然可以出网,可以用ew 让他 与我的公网vps 建立连接,然后我通过我的vps对应的端口走代理,这里就不详述了,因为当时觉得这种方法比较麻烦,既然我已经有一个shell并且可以执行命令了,而且有curl,那我为什么不直接通过curl 来发post包上传呢 于是搜索了一下curl的使用方法,如果要用curl传文件 必须要用 -F 选项 使用了-F参数,curl会以multipart/form-data的方式发送POST请求。-F以key=value的形式指定要上传的参数,如果是文件,则需要使用key=@file的形式

然后现在我的vps上测试了一下直接给B站发上传包成功了,ok,咱们直接上A站发包

sessid=1590980086 和 moudl=content 都是上传包需要的

可以看见我们成功绕过了waf,因为之前上传如果是php后缀都是直接封掉不会有返回包,现在没有被封,说明已经绕过了waf,这两台机器应该在同一内网,但是为什么会出现上传类型不允许呢,而且我已经在配置中设置了允许php后缀,如果看过我前面审计发卡平台文章的兄弟应该已经明白了,虽然设置了允许php后缀,但是我猜测后台应该是大概长个样子:

$store=['jpg','png','php']  #类似这样 如果我设置了允许php后缀 那么 php就会被加入这个数组  $ext视为获取的文件后缀名
if(in_array($ext,$store)&&$ext!="php"&&$ext!="php3"&&$ext!="pht"...){ 类似这样
上传操作
} else{
echo "上传类型不允许";
}

这样子的话就很好绕过了,在windwos条件下 文件名称最后如果有空格那么是会被去掉的,利用这个特性就可以轻松绕过,配置一下允许上传的后缀

然后上传

到这里我以为基本已经拿下 访问之 没想到404 难道没传上去? 于是我把php后缀换成了p 方法完全一样 在配置中增加 p空格 然后上传 访问发现是成功去掉最后的空格并且上传成功了的 那应该就是设置了配置文件 设置某个目录下 访问php文件就返回 404 那这时候需要跨目录去别的目录,我发现上传包中的 module参数的值 content是被放到了 上传后的文件路径中 我加入 ../ 发包 一发入魂 成功跨目录

蚁剑访问之 看到了 绿色的成功连接 心中一丝舒爽........

站群的截图就不放了 执行命令一发whoami 哦哟

end

这应该是个梦把.......


知识来源: xz.aliyun.com/t/7860

阅读:18270 | 评论:0 | 标签:WAF

想收藏或者和大家分享这篇好文章→复制链接地址

“实战之另辟蹊径绕过waf并getshell拿下站群”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

ADS

标签云