Web安全深度剖析读书笔记
1. LFI
2. RFI
<?php
if(isset($_GET[‘page‘])){
include $_GET[‘page‘];
}else{
include ‘home.php‘;
}
?>
// 前台代码
<a href="Index.php?page=main.php">主页</a>
<a href="Index.php?page=news.php">新闻</a>
读取敏感文件
远程包含SHELL
本地包含配合文件上传
上传后门,使用文件包含构造可以利用的URL
PHP 伪协议
Apache 日志文件包含: access.log
文件内容每一行记录一次网站访问记录。当访问一个不存在的资源时,Apache日志同样会记录,这就意味着如果网站存在本地包含漏洞,却没有可以包含的文件时,就可以去访问:http://www.xxx.com/<?php phpinfo();?>
。Apache 会记录请求,并写到 access.log 中,这时再去包含 Apache 的日志文件,就可以利用包含漏洞。
截断包含
很多程序员认为PHP中的包含漏洞比较好修复,固定扩展名即可,
<?php
if(isset($_GET[‘page‘])){
include $_GET[‘page‘]. ".php";
}else{
include ‘home.php‘;
}
?>
当你上传图片木马,访问jpg
后缀的文件时,它会为其加上 php
后缀解析。而该PHP文件是不存在的,从而使包含漏洞无法正常利用。
可以在URL的最后加上 %00
进行截断。此方法只适用于 magic_quotes_gpc = Off
时。
JSP 包含分为两种方式,静态包含和动态包含。
<%-- 静态包含 --%>
<%@ include file="..." %>
<%-- 动态包含 --%>
<jsp:include page="...">
静态包含
静态包含语句先进行包含再做处理操作。JSP语法规定,include指令为静态包含,只允许包含一个已经存在于服务器中的文件,而不能使用变量来控制包含某个文件。
动态包含
动态包含与静态包含恰恰相反,在运行时首先会处理被包含页面,然后再包含,而且可以包含一个动态页面。
../
;原文:https://www.cnblogs.com/chalan630/p/12885519.html