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

2020-06-10 约 141 字 预计阅读 1 分钟

声明:本文 【实战之另辟蹊径绕过waf并getshell拿下站群】 由作者 nglsth 于 2020-06-10 10:10:52 首发 先知社区 曾经 浏览数 165 次

感谢 nglsth 的辛苦付出!

前言

今天本来应该过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

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

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now