(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程

目录

后端黑名单绕过

特殊可解析后缀

原理:就是加上数字等,但是可以被当做原来的类型进行执行

利用过程:

.htaccess解析

原理:上传.htaccess文件到指定的目录,重写当前目录下的解析规则,上传图片马,打开图片马所在位置将以新指定的方式解析运行

环境条件:

利用过程:

大小写绕过

原理:对大小写不敏感,上传大小写混写的php进行绕过

利用过程:

重写(双写)绕过

原理:被删除一个黑名单字符后,形成新的预期类型

利用过程:

‘.’或者空格点绕过

原理:还是相当于是绕过了黑名单

第一步:打开burpsuite进行代理拦截

第二步:把shell.php文件改为shell.png,然后将其上传

第三步:用burpsuite进行抓包修改,把后缀改为php,并在后缀后面加上空格或者点

第四步:获取webshell权限,即浏览器打开上传的图片马地址

第五步:使用工具(蚁剑/菜刀)进行连接等操作

利用过程:

::$$DATA绕过

原理:

换言之:

第一步:burpsuite拦截

第二步:文件上传

第三步:抓包修改,后缀改为php,并在后缀后面加上::$DATA

第四步:获取webshell权限,即浏览器打开上传的图片马地址

第五步:使用工具(蚁剑/菜刀)进行连接等操作

利用过程:

配置解析漏洞

原理:

触发点:

利用:

以Apache解析漏洞为例

第一步:新建一个Apache无法正确解析识别的文件

第二步:在这个文件里面写入执行语句

第三步:获取wheshell权限,即访问这个文件所在的位置

后端白名单绕过

MIME绕过

原理:服务端MIME类型检测通过检查http包的Content-Type的值来判断上传文件是否合法。

利用过程:

第一步:上传写入语句的执行类型文件,即.php文件

第二步:用burpsuite等代理工具进行抓包,修改Content-Type字段的值为image/jpeg

第三步:放包

第四步:获取webshell权限,即浏览器打开上传的图片马地址

第五步:用蚁剑等工具进行连接操作等

%00截断

原理:

利用过程:

0x00截断

原理:

环境:

利用过程:

0x0a截断

原理:

利用过程:


(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第1张图片

upload-labs靶场下载地址:https://github.com/c0ny1/upload-labs/

第一次下时候,没下最新版的,结果我又重新到GitHub去下载了更新后的最新版

(注:此博文从绕过原理方法入手,下篇博客将从upload-labs刷关入手)

后端黑名单绕过

特殊可解析后缀

原理:就是加上数字等,但是可以被当做原来的类型进行执行

黑名单规则不严谨,在某些特定环境中某些特殊后缀仍会被当作php文件解析

$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第2张图片

利用过程:

盲猜准备的php20就不在范围内

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第3张图片

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第4张图片

 (21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第5张图片

再获取webshell权限,即浏览器打开上传的图片马地址

 接下来的工作交给蚁剑和菜刀了

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第6张图片

.htaccess解析

原理:上传.htaccess文件到指定的目录,重写当前目录下的解析规则,上传图片马,打开图片马所在位置将以新指定的方式解析运行

参考:【文件上传.htaccess重定解析规则】phpstudy apache本地配置.htaccess进行url重写

.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置,即可以用来控制所在目录的访问权限以及解析设置,通过设置可以将该目录下的所有文件作为php文件来解析。

通过.htaccess文件,可以帮我们实现:自定义404错误页面、网页301重定向、允许/阻止特定的用户或者目录的访问、改变文件扩展名、禁止目录列表、配置默认文档等功能。

.htaccess可以写入apache配置信息,改变当前目录以及子目录的apache配置信息

环境条件:

phpstudy+php5.6以下不带nts的版本

upload-labs-Pass04

服务器和服务商没有禁止.htaccess文件

Allow Override All

LoadModule rewrite_module modules/mod_rewrite.so #rewrite模块为开启状态

利用过程:

第一步:准备好.htaccess文件内容:

第一种:会误伤正常文件,容易被发现


AddHandler php5-script .gif          #当前目录下,只针对gif文件解析成php执行
SetHandler application/x-httpd-php    #当前目录下,所有文件都被解析成php执行

或者直接

AddType application/x-httpd-php .gif

第二种:能精确解析,不容易被发现

"1.gif">             #1.gif是自己将要上传执行的文件名
SetHandler application/x-httpd-php   #在当前目录下,如果匹配到1.gif文件,则被解析成PHP代码执行
AddHandler php5-script .gif          #在当前目录下,如果匹配到1.gif文件,则被解析成PHP代码执行

第二步:准备好图片马

在1.gif中写入了(测试一下能否执行)

   

#一般都写入

准备好 

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第7张图片

第三步:先上传 .htaccess文件,再上传图片马

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第8张图片

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第9张图片

上传写了代码的要执行文件(图片马)

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第10张图片

 

第四步:获得webshell权限,即复制图片地址并粘贴到地址栏,进行访问:

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第11张图片

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第12张图片

 (21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第13张图片(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第14张图片

尝试用到 .htaccess文件试试

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第15张图片

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第16张图片

 

将.htaccess文件尝试改为:


setHandler application/x-httpd-php
  (21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第17张图片

 未被执行为PHP类型

试了很多不同的.htaccess文件代码,最终还是没能以PHP代码执行,可能环境条件不满足

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第18张图片

 

大小写绕过

原理:对大小写不敏感,上传大小写混写的php进行绕过
 

利用过程:

后端一般验证后缀字符串是否和‘php’相等(前提是没有将你传入的字符串进行小写转换后再对比),大写字母和小写字母肯定不相等,利用这一特性绕过

windows对大小写不敏感,所以.PhP文件被当成php文件解析)

准备文件: 

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第19张图片

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第20张图片

当检测不全面的时候,还是有各种混乱进行绕过

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第21张图片

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第22张图片

 

重写(双写)绕过

原理:被删除一个黑名单字符后,形成新的预期类型

利用过程:

服务端将黑名单的后缀名替换为空,但是仅替换一次,所以可以上传.pphphp后缀,替换后就成了.php

(被拦截的shell.php,上传不了的这个我就不一直试了)

它会删掉第一个php

(中间第二个是错误的讲解)

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第23张图片

 (21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第24张图片

正确的应该是第三个

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第25张图片

 

‘.’或者空格点绕过

原理:还是相当于是绕过了黑名单

(不考虑直接把空格或者点加在后缀的末尾,因为在PHP文件后加..,会被windows删掉空格或者点)

第一步:打开burpsuite进行代理拦截

第二步:把shell.php文件改为shell.png,然后将其上传

第三步:用burpsuite进行抓包修改,把后缀改为php,并在后缀后面加上空格或者点

第四步:获取webshell权限,即浏览器打开上传的图片马地址

第五步:使用工具(蚁剑/菜刀)进行连接等操作

利用过程:

shell.png------>shell.php.(空格). ------>shell.php.(空格和点被去除了)---->shell.php(windows会自动去掉末尾的空格和点,这个可以在自己的桌面上新建的试)

我实验的环境:在主机上安装的靶场,burpsuite安装在虚拟机上

我遇见的问题是:burpsuite抓包,无法抓住文件的上传,并将其修改

现象是:拦截不到包,但是访问其他联网的网站,可以拦截到

我分析得出的结论是:upload-labs的上传是在本地完成,不需要再访问另一台电脑上的burpsuite代理服务器

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第26张图片

 (21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第27张图片

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第28张图片

 

::$$DATA绕过

原理:

NTFS交换数据流(Alternate DataStreams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流。

换言之:

在windows下,在php文件名后面加上::$DATA系统会把它当作文件流来进行处理,不会检测文件的后缀名,且保留::$DATA之前的文件名以及后缀

(不考虑直接在windows上新建,因为::已经被windows所禁止输入)

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第29张图片

加::$DATA的操作过程和前面的加‘.’和空格是一样

第一步:burpsuite拦截

第二步:文件上传

第三步:抓包修改,后缀改为php,并在后缀后面加上::$DATA

第四步:获取webshell权限,即浏览器打开上传的图片马地址

第五步:使用工具(蚁剑/菜刀)进行连接等操作

利用过程:

shell.png------>shell.php.(空格). ------>shell.php.(空格和点被去除了)---->shell.php(windows会自动去掉末尾的空格和点,这个可以在自己的桌面上新建的试)

配置解析漏洞

原理:

解析漏洞是web容器将其他格式的文件解析为可执行脚本语言,这一特点会被利用进行其他操作

触发点:

常见的解析漏洞的web容器有IIS (5.x-6.x 7.5)、Nginx、Apache

利用:

目录解析,文件解析,其他默认可执行文件格式等。

以Apache解析漏洞为例

Apache解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如test.php.a.b的“.a”和“.b”这两种后缀是apache不可识别解析,apache就会把test.php.a.b解析成test.php。

影响版本:

Apache 1.x
Apache 2.2.x

查看Apache版本:

方法一:

如果安装的phpstudy集成环境,那这个就简单了

打开phpstudy面板首页就能看到

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第30张图片

方法二:

打开Apache\bin目录,复制绝对路径

用命令提示符进入到Apache\bin中,再执行下面语句查看Apache版本信息:

httpd -v

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第31张图片

或者直接在Apache\bin执行命令提示符

(按住shift键,同时点击右键,点击Open in Windows Terminal)

 然后会直接在当前目录执行

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第32张图片

再输入以下代码查看版本

.\httpd.exe -v

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第33张图片

我的版本已经Apache2.4,已经不存在上面的解析漏洞了

但是操作不能少

第一步:新建一个Apache无法正确解析识别的文件

(存在解析漏洞的版本会将这个软件识别为a.php文件执行)

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第34张图片

第二步:在这个文件里面写入执行语句

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第35张图片

第三步:获取wheshell权限,即访问这个文件所在的位置

(老生常谈又是你)

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第36张图片

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第37张图片

 

后端白名单绕过

MIME绕过

原理:服务端MIME类型检测通过检查http包的Content-Type的值来判断上传文件是否合法。

web服务器使用MIME来说明发送数据的种类, web客户端使用MIME来说明希望接收到的数据种类。

利用过程:

第一步:上传写入语句的执行类型文件,即.php文件

第二步:用burpsuite等代理工具进行抓包,修改Content-Type字段的值为image/jpeg

第三步:放包

第四步:获取webshell权限,即浏览器打开上传的图片马地址

第五步:用蚁剑等工具进行连接操作等

常见的MIME类型(/后面为对应的MIME值)
  超文本标记语言文本 .html,.html text/html 
  普通文本 .txt text/plain 
  RTF文本 .rtf application/rtf 
  GIF图形 .gif image/gif 
  JPEG图形 .jpeg,.jpg image/jpeg 
  au声音文件 .au audio/basic 
  MIDI音乐文件 mid,.midi audio/midi,audio/x-midi 
  RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio 
  MPEG文件 .mpg,.mpeg video/mpeg 
  AVI文件 .avi video/x-msvideo 
  GZIP文件 .gz application/x-gzip 
  TAR文件 .tar application/x-tar

%00截断

原理:

在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束

利用过程:

./?filename=test.txt             此时输出的是test.txt

./?filename=test./?filename=test.php%00.txt           此时输出的是test.php

0x00截断

原理:

0x开头表示16进制,0在十六进制中是00, 0x00就是%00解码成的16进制,%00被服务器解码为0x00发挥了截断作用

环境:

php版本小于5.3.4

magic_quotes_gpc需要为OFF状态

利用过程:

第一步:准备一个写入执行语句的php文件,在PHP后缀后加上空格(占位作用,空格的16进制为0x20)和任意其他字符(便于标识) 

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第38张图片

第二步:用burpsuite等工具设置代理

第三步:上传文件

第四步:抓包并打开hex表,将空格对应的16进制(0x20,会显示出20)将20改为00实现截断

第五步:放包

修改完空格hex值后,空格被□取代,就是0x00(不可见字符),系统读到0x00时就认为已经结束了

0x0a截断

原理:

查看ASCII表,可以发现0x0a是换行即\n,当读取到\n时会进行换行,后面的将不会读取

利用过程:

和0x00类似

(21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程_第39张图片 

你可能感兴趣的:(web安全,渗透测试,网络安全,网络协议,web安全,测试工具)