古典风格网站模板,网站建设 不违背,广告公司网站首页,全新微信号2元一个一、介绍
解释#xff1a;任意文件读取漏洞就其本身来说就是#xff0c;攻击者绕过网站防御者设置的防御#xff0c;读取到了正常使用者不应该读取到的内容。网站开发者使用不同的语言#xff0c;任意文件读取漏洞利用方式就不同。
二、不同开发语言的不同漏洞点
1.PHP …一、介绍
解释任意文件读取漏洞就其本身来说就是攻击者绕过网站防御者设置的防御读取到了正常使用者不应该读取到的内容。网站开发者使用不同的语言任意文件读取漏洞利用方式就不同。
二、不同开发语言的不同漏洞点
1.PHP
介绍PHP的任意文件读取漏洞主要通过下面这些函数错误使用导致
1.1 PHP常用文件包含函数
require():找不到被包含的文件会产生致命错误并停止脚本运行include():找不到被包含的文件只会产生警告脚本继续执行require_once()与require()类似:唯一的区别是如果该文件的代码已经被包含则不会再次包含include_once()与include()类似:唯一的区别是如果该文件的代码已经被包含则不会再次包含
1.2 伪协议
解释PHP内置了很多伪协议其可能会造成任意文件读取执行任意命令等问题这样的知识点是PHP“任意文件读取漏洞”的关键
文章在此二、PHP伪协议
1.3 目录穿越
解释因为include对内容的解析问题存在该漏洞包括在window上面有类似但不同的情况如下图下面例子cd到一个不存在的目录11515然后../返回上一级目录此时相当于原地踏步这种情况可能就会导致攻击能够绕过一些正则进行目录穿越来暴力访问文件 ?php
include dwadawdaw?/../a.php;
?
上面的例子相当于先cd 进入了dwadawdaw?这个目录发现其不存在然后执行../a.php翻译过来相当于include a.php;include dwadawdaw?/../../a.php; 等价于include ../a.php;1.4 任意代码执行
解释在php里面include函数在执行的时候如果可以将被包含文件里面的内容当做php代码执行也就是说比如include包含了一个png文件但是里面写的都是php代码这个png就会被当作php代码去执行如果此时png里面是一句话木马的话此时网站就被攻击者植入了webshell
例如 解释从上图文件可知道page对应include加载的文件a文件内容如下其并非php后缀文件但是却被当作php执行了
?php
echo odwadawdwak;
?1.5 远程文件包含
解释当php配置项allow_url_include、allow_url_fopen状态为ON的话则include/require函数是可以加载远程文件远程文件-其它服务器上的php文件这种设置如果代码存在文件包含漏洞可能会造成致命的威胁
三、重要文件的作用
解释当我们发现文件读取漏洞一般会对重要文件进行读取例如/etc/passwd下面就会说我们能够从这些文件中获取哪些有用的信息 /etc/passwdLinux系统保存用户信息及其工作目录的文件读到这个文件我们就可以知道系统存在哪些用户、他们所属的组是什么、工作目录是什么其中目录为/home/xxx一般是普通用户其它一般是软件用户权限所有用户/组可读 /etc/shadowLinux系统保存用户信息及密码hash的文件比/etc/passwd更加具备价值其中有用户的哈希密码如果获取可能在本地进行碰撞获取明文权限所有者具有读写权限属组shadow具有只读权限其他用户没有任何权限 /etc/apache2/apache的配置文件保存在此目录下面/etc/apache2/apache2.conf是主配置文件/etc/apache2/sites-enabled下面有具体的包括网站路径端口域名等配置如下图 /etc/nginx/nginx的配置文件保存在此目录下面/etc/nginx/nginx.conf是主配置文件/etc/nginx/sites-enabled下面有具体的包括网站路径端口域名等配置如下图 /proc通常存储着进程动态运行的各种信息本质上是一种虚拟目录如果遇到文件读取漏洞可以通过读取 /proc/self/cmdline读取一些敏感信息(可能有当前项目启动时启动命令例如python3 app.py)/proc/[pid]/cmdline则与上面类似读取pid号对应进行的一些敏感信息/proc/self/mem其是一个特殊文件它提供对当前进程地址空间的访问例如在Flask里面启动项目加载一个密钥其就存在于此文件中可以先通过/proc/self/maps其里面包含进程相关的启动地址、结束地址、权限、内存区域对应文件的路径下面演示相关代码由于篇幅问题在另一篇文章Flask存储在内存中的密钥被读取