常见的伪协议以及利用场景

admin 2024年6月18日17:12:52评论4 views字数 1202阅读4分0秒阅读模式

前言

在CTF中我们经常会遇到各种文件读取(包含),SSRF的漏洞,遇到这些漏洞的时候可能会经常看到各种PHP的伪协议,这篇文章就是总结一下常用到的PHP伪协议以及用途。

PHP常见的伪协议

PHP中常见的伪协议如下:

协议 协议作用 用法举例
http(s):// 这个不用多说,最常用的一个协议,用来访问http(s)网站 ?file=http://127.0.0.1:8080
file:// 访问本地文件系统 ?file=file:///etc/passwd
php:// 访问各个输入/输出流,包括php://filter,php://input等 ?file=

php://filter/convert.base64-encode/resource=xxx.php

?file=

php://input [post data] <?php phpinfo()?>

phpar://

php解压缩包的一个函数,不管后缀是什么,都会当做压缩包来解压

?file=phar://压缩包/内部文件 phar://xxx.png/shell.php

zip://

zip伪协议和phar协议类似,但是用法不一样

?file=zip://[压缩文件绝对路径]#[压缩文件内的子文件名] zip://xxx.png#shell.php

data://

php://相似都是利用了流的概念,将原本的include的文件流重定向到了用户可控制的输入流中

?file=

data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4

PHP伪协议常用于的场景

读取本地文件

当有SSRF漏洞或者文件包含漏洞时,我们可以利用file协议读取系统中的任意文件。当PHP中有下面的函数时要尝试是否可以利用file协议读取协议文件:file_get_contents(),curl_exec(),readfile(),fopen()。

常见的伪协议以及利用场景

文件包含限制了文件后缀名为PHP

遇到了一个文件包含漏洞但是限制了文件的后缀名只能是PHP时,可以通过php://协议来读取任意的PHP文件或者通过php://执行任意系统命令

如下的一个例子,限制了文件的后缀名为PHP,直接输入文件路径到include中会被当做代码执行,想要获取到文件内容时,就可以利用php://filter协议

常见的伪协议以及利用场景利用php://filter回显include包含文件的内容

常见的伪协议以及利用场景

文件上传+文件包含得到webshell

有的上传点往往限制了只能上传图片或者压缩包,当有一个文件包含漏洞的时候,可以通过上传+文件包含拿到webshell。

首先将文件压缩成zip格式,然后改变后缀为png,上传文件后,拿到路径可以利用文件包含执行文件内容,拿到webshell。

常见的伪协议以及利用场景

总结

PHP伪协议的用法有很多,在实际利用中要可以灵活的利用,结合其它的漏洞可能会得到意想不到的效果。

原文始发于微信公众号(信安路漫漫):常见的伪协议以及利用场景

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月18日17:12:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   常见的伪协议以及利用场景https://cn-sec.com/archives/2859240.html

发表评论

匿名网友 填写信息