01
Upturnhms CMS 文件下载漏洞
通过黑+白的测试方法,发现该CMS dashboard/Patient/document.php文件下载处存在未授权任意文件下载。
点击下载跟踪到 download.php 页面
接下来根据路由找到download.php 文件进行审计。
这里可以看到readfile函数之前没有做任何过滤然后就拼接下载了,而且还存在未授权
漏洞利用:
POC: /dashboard/Patient/download.php?file=../../../index.php
02
漏洞文件位置:/App/Manage/Controller/TempletsController.class.php
通过上面代码可以看到edit函数中对提交的参数进行处理,先是判断是否POST数据上来,如果有就进行保存,如果没有POST数据,则跳过这段代码继续向下执行。这里我们可以通过GET传入fname,跳过前面的保存文件过程,进入文件读取file_get_contents()函数。
往上跟踪我们可以发现先是对fname进行base64解码,然后判断fname参数是否为空,不为空则拼接成完整的文件路径,然后判断这个文件是否存在,最后读取文件内容。这里整个流程下来并没有对fname未进行任何限制,所以导致存在任意文件读取漏洞。
漏洞利用:
登录网站后台,数据库配置文件路径:AppCommonConfdb.php我们将这段组成相对路径
..\..\..\App\Common\Conf\db.php
然后进行base64编码,Li5cXC4uXFwuLlxcQXBwXFxDb21tb25cXENvbmZcXGRiLnBocA==
最后构造的POC如下:
http://127.0.0.1/xyhai.php?s=/Templets/edit/fname/Li5cXC4uXFwuLlxcQXBwXFxDb21tb25cXENvbmZcXGRiLnBocA==
通过POC访问,成功获取到数据库敏感信息:
03
PHPCMS 任意文件读取漏洞
漏洞文件位置:phpcms/modules/search/index.php
这里可以看到该函数直接从GET参数里面获取要读取的URL,然后使用file_get_contents函数来读取内容,但是这里如果直接提交?url=&q=1. php我们打印出来url变量可以看到值为"&q=1.php",带到函数里面则是f ile_get_contents ("&q=1.php")
这样是读不到当前文件的,所以需要?url=&q=../../1.php这样多加两个"../",把"&q="当成目录来跳过
漏洞利用:
分析完成之后,最后利用这个漏洞读取数据库配置文件,POC如下:
POC:
/index.php?m=search&c=index&a=public_get_suggest_keyword&url=&q=../../phpsso_server/caches/configs/database.php
End
原文始发于微信公众号(贝雷帽SEC):WEB 安全—深入学习文件读取漏洞 (三)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论