freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

文件包含漏洞
Lxiaozhu 2022-08-05 10:17:36 171360
所属地 辽宁省

文件包含漏洞个人理解

存在原因

服务器执行php文件时,通过文件包含函数来加载另一个文件中的php代码,然后未加限制或者限制做的不到位。

$file=$_GET['x'];
include($file);

例如此代码,直接包含get传过来的参数进行包含。 只要执行文件包含函数所包含的文件不管是不是php文件只要里面有php代码那么就会被执行!

php文件包含函数

  1. require()

  2. require_once()

  3. include()

  4. include_once()

思路

  1. 配合文件上传getshell

  2. 利用php伪协议/远程包含

  3. 配合记录日志进行getshell,日志会记录访问UA信息,修改UA信息为后门代码,包含即执行后门代码

配合文件上传

什么是文件上传?可以看一看我前面所写的文章,这里就不多说了。 如果文件上传限制做的比较好的话,那我们只能上传它所规定的文件类型,但是可以这个文件内容我们是可控的(webshell代码)。 如:txt,png,jpg,gif等等其它文件格式 当有文件包含漏洞的话,那我们就可以利用漏洞去包含我们的后门文件执行后门代码。

上一篇文章里面pikachu靶场有一关做的后缀白名单防护,好像是只允许jpg.png.gif文件吧。 当我们上传一个带后门的png文件,然后跳到文件包含那一关,利用漏洞跳出当前目录到后门文件目录执行后发现图片文件被调用了(当时我弄的phpinfo)。

image-20220805085749598

利用php伪协议/远程包含

php伪协议解释网上好的文章有很多何以去看一看我这里就不仔细描述了。 看这张图提示就能明白要想利用是有条件的。 file://协议和远程包含的条件

allow_url_fopen:off/on
allow_url_include:off/on

image-20220805090321872

image-20220805092205008

可以看到filename将png文件执行php代码了,file需要知道绝对路径。 下面看一下http协议 image-20220805092809224

由于我没有服务器我这里就简单测试一下 它可以包含一个远程地址的文件,如果在你的服务器下构造一个webshell让它去包含。

因为我用的是本站执行可能不太严谨,所以换了一个服务器还是一样的结果。 image-20220805093718423

配合记录日志进行getshell,日志会记录访问UA信息,修改UA信息为后门代码,包含即执行后门代码

什么是UA信息? 数据包的User Agent记录的访问者浏览器的版本信息,还可以区分浏览器和移动端还是PC端。 网站日志文件会读取UA信息,通过抓包改包的方式修改UA的内容,然后日志文件记录后,利用文件包含漏洞包含日志文件。 简单来说就是将后面代码写入日志然后通过包含日志文件执行getshell。 条件是要知道日志文件的绝对路径,一般通过网上查询相应中间件的日志文件存放位置来利用。

简单描述这么多吧,还是有很多利用方案的,session和UA大同小异,但是细节不同。

文件包含漏洞防御

设置白名单
代码在进行文件包含时,如果文件名可以确定,可以设置白名单对传入的参数进行比较。
过滤危险字符
由于Include/Require可以对PHP [Wrapper](https://so.csdn.net/so/search?q=Wrapper&spm=1001.2101.3001.7020)形式的地址进行包含执行(需要配置php.ini),在Linux环境中可以通过”…/…/”的形式进行目录绕过,所以需要判断文件名称是否为合法的PHP文件。
设置文件目录(配置php.inn
PHP配置文件中有open_basedir选项可以设置用户需要执行的文件目录,如果设置目录的话,PHP仅仅在该目录内搜索文件。
关闭危险配置(配置php.ini)
PHP配置中的allow_url_include选项如果打开,PHP会通过Include/Require进行远程文件包含,由于远程文件的不可信任性及不确定性,在开发中禁止打开此选项,PHP默认是关闭的。
总结
任意文件包含漏洞出现的主要原因是在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。在开发处理这类功能函数上,一定要遵循编程规范;在代码核心处,对变量进行过滤限制,设置文件路径或者白名单,避免执行任意文件包含。
转载出https://blog.csdn.net/wsnbbz/article/details/104651996
# 渗透测试 # web安全 # 文件包含漏洞 # 经验心得
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Lxiaozhu 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
web安全(漏洞篇)
Lxiaozhu LV.3
这家伙太懒了,还未填写个人描述!
  • 4 文章数
  • 4 关注者
hack the box初学者
2022-08-04
文件上传漏洞
2022-08-04
SQL注入漏洞
2022-08-02
文章目录