SEC-2022版-0031-WEB攻防-22-通用漏洞(逻辑漏洞)之文件包含&LFI&RFI&伪协议编码算法&代码审计
总览
过滤功能:
1.嵌入式过滤或者单独写一个过滤文件
2.过滤文件的代码共享和执行,一旦有变量则存在文件包含漏洞风险
3.文件包含意味着执行,能正确执行PHP代码
核心知识:
本地包含LFI&远程包含RFI-区别
- 一个只能包含本地,一个可以远程加载
- 具体形成原因由代码和环境配置文件决定
各类脚本语言包含代码写法-见下文
<!--#include file="1.asp" -->
<!--#include file="top.aspx" -->
<c:import url="http://thief.one/1.jsp">
<jsp:include page="head.jsp"/>
<%@ include file="head.jsp"%>
Include('test.php')各类脚本语言包含伪协议玩法
思路要点:
黑盒发现:
主要观察参数传递的数据和文件名是否对应
修改文件名以包含文件
http://xx.xxx.xx/xxx.php?x=文件名
白盒发现:
- 可通过应用功能追踪代码定位审计
- 可通过脚本特定函数搜索定位审计
- 可通过伪协议玩法绕过相关修复等
总结:
文件上传:
- 有文件的情况:
- 网站有文件、网站能上传:包含网站本身的文件
本地包含:LFI local file include
包含一个文件,带上后门代码就能getshell=>文件上传到网站目录,利用网站本地执行
没文件的时候:
文件不能指定,借助日志写入(UA)和session文件写入把后门代码搞上去.
PHPSESSIONID对session临时文件的命名有控制作用.(全部试验一遍就知道那个有控制作用了)
条件竞争:使用不及时就把上传的文件删除掉
session默认保存路径:/tmp或/var/lib/php/session或C:\WINDOWS\Temp
session.save_path //session文件存储地址
session.upload_progress.enabled //session文件上传上传
session.upload_progress.cleanup //定时清空文件
伪协议:直接执行代码,相当于直接创建一个后门
- 没有文件上传也能进行PHP代码执行
- 读、写文件,同时进行编码、算法等。
- 缺点:
这种会导致伪协议失效
include('conn/'.$file)
include('conn/'.$file.'.php')
没有漏洞的文件上传,上传后门代码就不能被解析。上传文件只能上传非脚本格式文件,就不能被触发。
文件包含不管文件是什么,都当做PHP执行
解决办法
师
- 有可控文件如能上传文件,配合上传后包含
- 无可控文件可以利用日志或Session&伪协议
- 代码固定目录及文件后缀时需考虑版本绕过
- 伪协议玩法是建立在代码中只有变量存在时
实战
CTF应用-CTFSHOW-78关卡到117关卡
打题前提:使用旧渗透版的火狐,好像新版火狐谷歌等都有自带的防护,出不了结果。
打开PHP配置 |
78-php&http协议
payload: ?file=php://filter/read=convert.base64-encode/resource=flag.php |
79-data&http协议
# 过滤掉"php"关键字,将其替换为"???" |
80 81-日志包含
禁用远程包含、data |
82-86-SESSION包含
82~86已损坏 |
87-php://filter/write&加密编码
1、利用base64:把后门写进去 |
88-data&base64协议
过滤PHP,各种符号,php代码编码写出无符号base64值 |
117-php://filter/write&新的算法
convert.iconv.:一种过滤器,和使用iconv()函数处理流数据有等同作用 |
CMS源码-XHCMS-代码审计&日志&绕过
限制很多。
- 搜索特定函数寻包含点(include等包含类漏洞)
- 固定目录及后缀名需绕过(无法使用伪协议,前端没有文件上传)
- 由CMS无上传用日志包含
- 利用长度绕过后缀名固定(低版本PHP可行)
Payload:
?r=../../../Apache/logs/access.log/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 矢幽武博客!
评论