Web安全基础 - LFI Labs

打印 上一主题 下一主题

主题 813|帖子 813|积分 2439

Web安全基础 - LFI Labs

本实验来自于https://github.com/paralax/lfi-labs
做到一半了才发现BUUCTF上有,可以参考本篇做一下更有成就感
CMD

CMD-1

该关卡直接执行Get方法cmd对应的命令
  1. [/code][img]https://img2022.cnblogs.com/blog/2860856/202211/2860856-20221125222254133-22053178.png[/img]
  2. [size=4]CMD-2[/size]
  3. 和上题相似,接收参数方式换成POST请求
  4. [code]
复制代码

CMD-3

本实验应该在LNIUX环境下运行,我们要修改/usr/bin/whois为作用相近的nslookup
  1. [/code]补充一些常用的绕过方法
  2. [indent]cmd1|cmd2:不论cmd1是否为真,cmd2都会被执行;
  3. cmd1;cmd2:不论cmd1是否为真,cmd2都会被执行;
  4. cmd1||cmd2:如果cmd1为假,则执行cmd2;
  5. cmd1&&cmd2:如果cmd1为真,则执行cmd2;
  6. [/indent][img]https://img2022.cnblogs.com/blog/2860856/202211/2860856-20221125224910243-1264250768.png[/img]
  7. [size=4]CMD-4[/size]
  8. [code]
复制代码
Windows同样没有whois改代码可以用Docker创建。
在实验目录下运行docker-compose up记得开启Docker-Desktop来启动守护进程。

CMD-5
  1. [/code]本关先对域名进行解析,然后传参进入whois -h [server] [domain]
  2. 根据hint,不是所有的参数都要在文本框输入,我们可以通过控制server来进行RCE
  3. http://localhost:8080/CMD-5/?domain=facebook.com&server=127.0.0.1|whoami||
  4. [size=5]LFI部分[/size]
  5. 我们重点学习LFI的相关绕过
  6. [size=4]基础知识[/size]
  7. 文件包含漏洞就是利用文件包含函数,来实现信息泄露或代码注入等恶意操作。
  8. 文件包含的条件:
  9. [list=1]
  10. [*]allow_url_fopen=On (默认为 On) 规定是否允许从远程服务器或者网站检索数据
  11. [*]allow_url_include=On (php5.2 之后默认为 Off) 规定是否允许 include/require 远程文件
  12. [/list]两个配置选项均需要为On,才能远程包含文件(RFI)成功,由于危害较大,所以常见的是LFI。
  13. [size=4]LFI-1[/size]
  14. [code]
复制代码
最简单的文件包含,基本原理是include会将文件作为php文件来解释。
在docker里面创建要包含的文件
  1. root@lfiweb:/var/www/html# cat payload.php
复制代码
直接get请求包含即可http://localhost:8080/LFI-1/?page=../payload.php
LFI-2
  1. [/code]我的环境下LFI-2没有includes文件夹,创建后按照上一题的思路构造
  2. http://localhost:8080/LFI-2/?library=../../payload
  3. 这里涉及到了file://协议
  4. [indent]file:// 文件系统是 PHP 使用的默认封装协议,展现了本地文件系统。当指定了一个相对路径(不以/、、\或 Windows 盘符开头的路径)提供的路径将基于当前的工作目录。在很多情况下是脚本所在的目录,除非被修改了。使用 CLI 的时候,目录默认是脚本被调用时所在的目录。在某些函数里,例如 fopen() 和 file_get_contents(),include_path 会可选地搜索,也作为相对的路径。
  5. [/indent][size=4]LFI-3[/size]
  6. [code]
复制代码
file_get_contents() 函数是用来将文件的内容读入到一个字符串中的方法。
这里补充下其他常见的文件包含利用点
include():程序执行到才包含,遇到错误生成警告,继续执行脚本
require():程序运行起来立刻包含,遇到错误生成致命错误,脚本继续
include_once():如果文件已包含,则不再进行包含
require()_once():如果文件已包含,则不再进行包含
fopen(),file_get_contents()等:文件读取函数
根据源码,这里的后四位不能是.php
我学到的几种绕过方法如下,但是都是基于windows文件系统特性的绕过,docker搭建的环境下还是不会绕,又用回去phpstudy了(对不起我是废物)
<blockquote>
大小写绕过:php->PHp
空格绕过:php->php,这个得抓包后在hex中修改
加点饶工:php->php.
特殊字符绕过:php->php::$DATA
使用'.ph

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

石小疯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表