大家好,这里是上二休一的超级开心牛
先祝大家2025新年快乐!
新年新气象,YAK的新功能大家都用过了吗?
来,试试看⬇️
描述字段 | 简介 | 示例 |
title | 规则的标题。 | title: "Check Direct Path Travel Vulnerability For Java" |
title_zh | 规则的中文标题。 | title_zh: "检测Java直接路径穿越漏洞", |
type | purpose | 规则的目的,包括:漏洞、审计、配置、安全热点。 | type: vuln, |
description | desc | note | 规则的介绍,主要简要介绍该规则的作用。dscription一般使用heredoc语言,以便具备足够强的文本表述能力。 | desc: <<<TEXT 跨站脚本攻击(XSS)是一种常见的...... TEXT, |
level | severity | sev | 风险等级,用来描述该规则审计到的漏洞的风险。包括:关键、高危、中危、低危、信息。 | level:high, |
cve | CVE编号,如果该规则用于审计CVE漏洞,那么可以填写该内容。 | cve:"CVE-2024-22234", |
risk | risk_type | 风险类型。用来描述规则审计漏洞的风险类型,比如:SQL注入、XSS、命令执行等。 | risk:"rce", |
lib | allow_include | as_library | as_lib | library_name | 作为被导入的规则的名称。写了这个字段后,那么该规则就允许被其它规则调用。 | lib: "java-command-exec-sink", |
type
规则类型 | 介绍 | 示例 |
漏洞规则 | 漏洞规则目的专注于寻找代码中的安全漏洞。这可能包括但不限于SQL注入、跨站脚本攻击(XSS)、缓冲区溢出等。漏洞检查的目的是确保代码在部署前没有已知的安全缺陷,从而减少被攻击的风险。 | type:vuln, type:v, type:vulnerability, type:weak, |
审计规则 | 审计规则是指对代码进行安全检查和评估,目的是发现潜在的安全问题或不良的编程实践。相较于漏洞规则而言,审计规则并不一定意味着发现了实际的漏洞,但它可以指出可能需要进一步调查或改进的区域。 | type:audit, type:a, type:audition, |
配置规则 | 配置规则目的关注于代码的配置部分,包括但不限于配置文件、环境变量、数据库设置等。配置检查的目的是确保配置项设置得当,不会导致安全漏洞或系统不稳定。 | type:config, type:c, type:configuration |
安全规则 | 安全规则,更精确的讲,应该叫安全热点规则。这个规则相较于漏洞规则更为广泛,它不仅包括寻找代码中的安全漏洞,还包括检查代码的整体安全架构、访问控制、加密措施、身份验证机制等。 | type:security, type:s, type:secure, |
level
风险等级 | 示例 |
关键 | level:critical, level:fatal, |
高危 | level:high, level:error, |
中危 | level:warning, level:middle, |
低位 | level:low, |
信息 | level:info, |
Risk
risk关键字 | 含义 |
url-redirect | URL重定向 |
sqli, | SQL注入 |
xss | XSS |
rce, rce-command | 命令执行/注入 |
rce-code | 代码执行/注入 |
lfi, file-read, file-download | 文件包含/读取/下载 |
file-write, file-upload | 文件写入/上传 |
xxe | XML外部实体攻击 |
unserialize, deserialization | 反序列化 |
path-traversal | 路径遍历 |
... | ... |
desc(
title: "Check Path Travel Vulnerability For Java",
title_zh: "检测Java路径穿越漏洞",
type: vuln,
level: mid,
risk: "path-traversal",
desc: <<<TEXT
路径穿越漏洞(也称为目录遍历漏洞)允许攻击者通过操纵输入参数,访问或执行服务器上的任意文件。在Java应用中,这种漏洞通常出现在未对用户输入进行适当验证或清理的情况下,导致攻击者可以读取敏感文件或执行任意代码。为了防范这种漏洞,应严格验证和清理所有用户输入,确保它们仅指向预期的文件或目录。
TEXT
)
<include('java-spring-param')> as $source;
<include('java-servlet-param')> as $source;
<include('java-write-filename-sink')> as $sink;
<include('java-read-filename-sink')> as $sink;
<include('java-filename_filter')> as $filter;
check $source;
check $sink;
check $filter;
$sink #{
until:`<self> & $source`,
exclude:`<self>?{opcode:call}?{!<self> & $source}?{!<self> & $sink}`
}->as $high;
alert $high for {
message: "检测到直接路径穿越漏洞。",
level: high,
};
$sink #{
until:`<self> & $source`,
exclude:`<self>?{opcode: call && <self><getCaller> & $filter}`
}->as $low;
alert $low for {
message: "检测到路径穿越漏洞,但是数据流上有过滤函数。",
level: low,
};
END
YAK官方资源
Yak 语言官方教程:
https://yaklang.com/docs/intro/
Yakit 视频教程:
https://space.bilibili.com/437503777
Github下载地址:
https://github.com/yaklang/yakit
Yakit官网下载地址:
https://yaklang.com/
Yakit安装文档:
https://yaklang.com/products/download_and_install
Yakit使用文档:
https://yaklang.com/products/intro/
常见问题速查:
https://yaklang.com/products/FAQ