小迪安全v2023学习笔记(五十一讲)—— 持续更新中
文章目录
- 前记
- WEB攻防——第五十一天
- 前后台功能&文件下载&文件读取&文件删除&目录遍历&目录穿越
- 文件安全 - 下载&删除 - 黑白盒
- 任意文件下载
- 原理
- 演示案例一——文件下载
- 演示案例二——文件读取
- 任意文件删除
- 原理
- 演示案例
- 目录安全 - 遍历&穿越 - 黑白盒
- 目录遍历
- 目录穿越
- 黑盒分析
- 白盒分析
前记
- 今天是学习小迪安全的第五十一天,本节课是PHP文件类安全的最后一讲,主要是关于文件下载、文件删除以及目录遍历和目录穿越方面的内容,知识点比较散碎
- 所需要用到的资源放在下面链接,有需要的自取:
- https://pan.baidu.com/s/1MuQOX9eG_jcxhRJVYCHavQ
- 提取码:gayd
- 另外,之前的笔记内容放在上方的专栏中,那么话不多说,让我们开始今天的学习叭!
WEB攻防——第五十一天
前后台功能&文件下载&文件读取&文件删除&目录遍历&目录穿越
文件安全 - 下载&删除 - 黑白盒
任意文件下载
原理
- 下载 = 读取
- 常规下载URL:
http://www.xiaodi8.com/upload/123.pdf
- 直连下载,如果访问
http://www.xiaodi8.com/upload/1.php
,他可能就不是下载文件,而是解析php
代码了
- 直连下载,如果访问
- 可能存在安全URL:
http://www.xiaodi8.com/download.php?file=123.pdf
- 而如果是这种,就说明他是传参进去的,那就已经固定好下载协议了,如果没做过滤这些,他就会去尝试下载其他文件
- 当下载文件时是通过参数传递的文件名,那就可能存在下载安全
- 利用:常规下载敏感文件(数据库配置,中间件配置,系统密钥等文件信息)
- 比如
Linux
下,参考文章:Linux常见的敏感目录 - 楼–楼 - 博客园
/etc/passwd: 这个文件包含了操作系统用户信息。
/etc/shadow: 这个文件包含了操作系统用户的密码hash。
/etc/sudoers: sudoers文件与sudo命令相关,用于控制用户以其他身份执行命令的权限。
/root/.ssh/authorized_keys: 存储了允许通过SSH登录的用户的公钥。
/etc/my.cnf: MySQL数据库的配置文件,包含了数据库服务器的设置。
...
- 再比如
Windows
下:【安全知识】——系统敏感文件路径汇总_windows10 安全 敏感文件存放位置-CSDN博客
c:/boot.ini: 查看系统版本
c:/windows/php.ini: php配置信息
c:/windows/my.ini: MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
c:\mysql\data\mysql\user.MYD: 存储了mysql.user表中的数据库连接密码
c:\windows\repair\sam: 存储了WINDOWS系统初次安装的密码
...
- 当然很多时候可能并不能成功下载或读取,主要跟主机的策略有关
演示案例一——文件下载
-
这里用一个国外的网站做演示案例:
https://67.202.70.133/files/readfile.php?file=xxx
-
我们可以通过这个点去下载一些文件,这里我们就尝试下载当前的
readfile.php
:
-
可以看到是能够成功下载的,那我们下载之后看一看源码:
-
这就是下载文件的东西,一般我们都会尝试下载
index.php
看一看首页这些有没有包含什么配置文件之类,那这里也是尝试下载一下 -
注意,现在我们的位置是
/files/
目录,所以需要返回上一层:
-
这里是没有任何过滤的,然后看一看源码:
-
这里呢,它
index.php
文件中没有暴露配置文件的位置,但是却暴露了框架的类型,可以看到注释中的Joomla.Site
-
我们可以去搜一下这个是什么:
Joomla 是一个全球知名的内容管理系统(CMS),用于发布和管理Web内容。
它是一个开源项目,使用PHP语言和MySQL数据库开发,支持在Linux、Windows、MacOSX等多种平台上运行
-
所以我们可以看看它默认的配置文件路径放在什么地方,就放在
Home/username/public_html/configuration.php
,那这里应该就在根目录下面,尝试访问下载:
-
确实有,成功获取到数据库账号密码信息:
演示案例二——文件读取
-
这里以BP的靶场作为案例,演示一下文件读取和文件下载的一个相似之处吧
-
靶场地址为: https://portswigger.net/ ,需要登录才能使用
-
这里我们随便点击一个图片看看参数结构:
-
比如这张图片他的地址为
image?filename=38.jpg
,那这里就是通过传参去进行查找图片的,这就可能出现任意文件读取漏洞 -
我们BP抓包,然后尝试读取其他文件,比如看看有没有
index.php
文件:
-
会提示没有此文件,他这里输入
../
也不会报错或提示权限不够,那我们就直接尝试读取../../../etc/passwd
看看能不能读取:
-
可以看到是能够成功读取的,其实这个应该是目录穿越的内容,不过也差不多,因为很多漏洞都是组合使用才能出效果的
任意文件删除
原理
- 这个常常出现在后台中
- 当前台或者后台存在删除功能点时,可能存在这样的安全问题
- 利用:常规删除重装锁定配合程序重装或高危操作
- 需要注意的是,删除文件是高危操作,一般都是看能不能删除自己的文件,然后进行删除操作,不然删到了敏感文件就gg了
演示案例
-
我们使用
seacms
这个CMS框架作为演示案例 -
成功安装之后,我们登入后台,然后找到删除功能点:
-
然后我们随便点一个,抓包看看他的传参形式是否可能存在漏洞:
-
可以看到它的传参形式是
filedir=xxxx
的类型,那就有可能存在漏洞,这里我们在比如根目录下添加一个1.txt
,看他能不能删除:
-
这里提示只能删除
templets
目录下的文件,那说明限制了目录,那我们就改一下:
-
删除成功,所以这个是存在目录穿越以及任意文件删除的
目录安全 - 遍历&穿越 - 黑白盒
目录遍历
-
目录遍历是因为权限控制不当,导致攻击者可以通过遍历获取到有价值的信息文件去利用
-
该漏洞与网站源码目录的设置有关,比如这里的
seacms
,我们可以右击文件夹然后找到安全:
-
这里如果对应的角色有“列出文件夹内容”的权限,那就可能有这个漏洞
-
而在中间件中,就与网站的配置有关,比如这里小皮有一个目录索引的选项,我们可以开启看一看:
-
之后我们再去访问刚刚的官网,这里你会发现访问有的目录它会显示目录遍历的结果,访问有的目录它仍然显示
php
解析后的内容:
-
这是因为设置里有一个网站首页,就是说如果有
index.php
、index.html
这样的文件存在的话,那就解析这个文件,就不会形成目录遍历 -
那这个漏洞存在还是蛮多的,我们可以去
fofa
上搜一搜,语法为:"index of /" && title=="index of /"
:
-
比如这个网站,就有可能泄露一些配置文件或者一些隐私文件
目录穿越
-
目录穿越是因为权限控制不当以及过滤不全,导致攻击者可以通过使用
../
等目录控制序列或者文件的绝对路径来访问存储在文件系统上的任意文件和目录 -
需要注意的一点是,它和目录遍历不等同,只是他们两个经常一起出现配合使用;目录遍历是遍历出某个文件夹的所有目录文件,而目录穿越是可以穿越到其他文件夹
-
我们还是以刚才的
seacms
为例子,还是熟悉的模板那里:
-
我们可以看到上面显示了一个
当前目录:xxxx
,那这里可不可能存在目录穿越呢? -
复制这个
html
的网址链接如上,然后我们发现它也是通过传递参数去实现显示目录的 -
抓包,将参数改为
/
看看:
-
提示只能编辑
templets
,那我们保持当前目录为templets
,然后使用../
看能不能穿越到其他目录:
-
可以看到,绕过了刚刚的限制,访问到了网站的根目录,那这里就存在目录穿越以及目录遍历的漏洞
-
之后的话就可以尝试访问一些配置文件看看能不能配合其他的漏洞打一打了
黑盒分析
- 功能点:文件上传、文件下载、文件删除、文件管理器等地方
- URL特征:
- 文件名:
download
、down
、readfile
、read
、del
、dir
、path
、src
、lang
等 - 参数名:
file
、path
、data
、filepath
、readfile
、data
、url
、realpath
等
- 文件名:
白盒分析
- 上传类函数、删除类函数、下载类函数、目录操作类函数、读取查看类函数等