This media is not supported in your browser
VIEW IN TELEGRAM
中存在命令注入漏洞cgi-bin/sitecustomization。我们可以将 payload 输入到 中portalname。
演示
演示
This media is not supported in your browser
VIEW IN TELEGRAM
在我的 CSS 窃取器运行后,我注册了两个帐户,并使用超级管理员帐户访问了用户页面。窃取器显示了管理员的 CSRF 令牌,因此下一步是向管理员提供使用窃取令牌的 CSRF 漏洞。我的窃取器还构建了 CSRF 漏洞。然后,漏洞会修改管理模板以获取 RCE!
使用 Turbo Intruder 自动利用加密词
当我发现最初几个漏洞时,我发现自动化对于查找其他漏洞非常有用,而 Turbo Intruder通常对于自动化此过程非常有用。Turbo Intruder 是James Kettle 编写的另一个免费 Burp 扩展 。我创建了一个 Turbo Intruder 脚本来帮助利用邮件程序。当您确定服务器支持编码字但想知道邮件程序是否允许您使用空值或其他字符拆分电子邮件时,可以使用此脚本。
它使用了我在测试 Github、Zendesk、Gitlab、Bugcrowd 和许多其他程序时发现的一系列已知拆分电子邮件的技术。您可以轻松自定义脚本以执行本演示文稿中提到的其他攻击。要使用它,您只需将 validServer 变量更改为要欺骗的目标域。然后,将 %s 放在想要添加电子邮件的请求中,然后右键单击请求并发送到 Turbo Intruder 并使用修改后的脚本。然后运行攻击。如果攻击成功,您应该在 Turbo Intruder 中收到合作者交互。这意味着电子邮件域是可欺骗的。如果您遇到有速率限制的应用程序(就像我一样),您可以更改 REQUEST_SLEEP 变量以与这些服务器很好地配合使用
当我发现最初几个漏洞时,我发现自动化对于查找其他漏洞非常有用,而 Turbo Intruder通常对于自动化此过程非常有用。Turbo Intruder 是James Kettle 编写的另一个免费 Burp 扩展 。我创建了一个 Turbo Intruder 脚本来帮助利用邮件程序。当您确定服务器支持编码字但想知道邮件程序是否允许您使用空值或其他字符拆分电子邮件时,可以使用此脚本。
它使用了我在测试 Github、Zendesk、Gitlab、Bugcrowd 和许多其他程序时发现的一系列已知拆分电子邮件的技术。您可以轻松自定义脚本以执行本演示文稿中提到的其他攻击。要使用它,您只需将 validServer 变量更改为要欺骗的目标域。然后,将 %s 放在想要添加电子邮件的请求中,然后右键单击请求并发送到 Turbo Intruder 并使用修改后的脚本。然后运行攻击。如果攻击成功,您应该在 Turbo Intruder 中收到合作者交互。这意味着电子邮件域是可欺骗的。如果您遇到有速率限制的应用程序(就像我一样),您可以更改 REQUEST_SLEEP 变量以与这些服务器很好地配合使用
全新攻击——混乱攻击
基于这些观察,我们开始关注这些模块之间的“关系”和“交互”。如果一个模块意外修改了它认为不重要但对另一个模块至关重要的结构字段,则它可能会影响后者的决策。此外,如果字段的定义或语义不够精确,导致模块对相同字段的理解产生歧义,也可能导致潜在的安全风险!
从这个出发点,我们开发了三种不同类型的攻击,因为这些攻击或多或少与结构字段的滥用有关。因此,我们将这个攻击面命名为“混淆攻击”,以下是我们开发的攻击:
文件名混淆
DocumentRoot 混淆
处理程序混乱
通过这些攻击,我们发现了 9 个不同的漏洞:
CVE-2024-38472 - Windows UNC SSRF 上的 Apache HTTP 服务器
CVE-2024-39573 - Apache HTTP Server 代理编码问题
CVE-2024-38477 - Apache HTTP 服务器:崩溃导致 mod_proxy 通过恶意请求拒绝服务
CVE-2024-38476 - Apache HTTP Server 可能使用可利用/恶意的后端应用程序输出通过内部重定向运行本地处理程序
CVE-2024-38475 - 当替换的第一个段与文件系统路径匹配时,Apache HTTP Server mod_rewrite 中存在弱点
CVE-2024-38474 - Apache HTTP Server 漏洞,反向引用中存在编码问号
CVE-2024-38473 - Apache HTTP Server 代理编码问题
CVE-2023-38709 - Apache HTTP 服务器:HTTP 响应拆分
CVE-2024-?????? - [已删除]
这些漏洞是通过官方安全邮件列表报告的,并由 Apache HTTP Server 在2024-07-01 发布的2.4.60 更新中解决。
基于这些观察,我们开始关注这些模块之间的“关系”和“交互”。如果一个模块意外修改了它认为不重要但对另一个模块至关重要的结构字段,则它可能会影响后者的决策。此外,如果字段的定义或语义不够精确,导致模块对相同字段的理解产生歧义,也可能导致潜在的安全风险!
从这个出发点,我们开发了三种不同类型的攻击,因为这些攻击或多或少与结构字段的滥用有关。因此,我们将这个攻击面命名为“混淆攻击”,以下是我们开发的攻击:
文件名混淆
DocumentRoot 混淆
处理程序混乱
通过这些攻击,我们发现了 9 个不同的漏洞:
CVE-2024-38472 - Windows UNC SSRF 上的 Apache HTTP 服务器
CVE-2024-39573 - Apache HTTP Server 代理编码问题
CVE-2024-38477 - Apache HTTP 服务器:崩溃导致 mod_proxy 通过恶意请求拒绝服务
CVE-2024-38476 - Apache HTTP Server 可能使用可利用/恶意的后端应用程序输出通过内部重定向运行本地处理程序
CVE-2024-38475 - 当替换的第一个段与文件系统路径匹配时,Apache HTTP Server mod_rewrite 中存在弱点
CVE-2024-38474 - Apache HTTP Server 漏洞,反向引用中存在编码问号
CVE-2024-38473 - Apache HTTP Server 代理编码问题
CVE-2023-38709 - Apache HTTP 服务器:HTTP 响应拆分
CVE-2024-?????? - [已删除]
这些漏洞是通过官方安全邮件列表报告的,并由 Apache HTTP Server 在2024-07-01 发布的2.4.60 更新中解决。
混淆攻击:利用 Apache HTTP 服务器中隐藏的语义模糊性!
整个 Httpd 服务依靠数百个小模块协同工作来处理客户端的 HTTP 请求。在官方文档列出的 136 个模块中,大约有一半是默认启用的或网站经常使用的!
更令人惊讶的是,这些模块request_rec在处理客户端 HTTP 请求时还维护着一个庞大的结构。该结构包括处理 HTTP 所涉及的所有元素,其详细定义可在include/httpd.h中找到。所有模块都依赖这个庞大的结构进行同步、通信和数据交换。当 HTTP 请求经过几个阶段时,模块就像接球游戏中的玩家一样,将结构从一个传递给另一个。每个模块甚至可以根据自己的偏好修改此结构中的任何值!
整个 Httpd 服务依靠数百个小模块协同工作来处理客户端的 HTTP 请求。在官方文档列出的 136 个模块中,大约有一半是默认启用的或网站经常使用的!
更令人惊讶的是,这些模块request_rec在处理客户端 HTTP 请求时还维护着一个庞大的结构。该结构包括处理 HTTP 所涉及的所有元素,其详细定义可在include/httpd.h中找到。所有模块都依赖这个庞大的结构进行同步、通信和数据交换。当 HTTP 请求经过几个阶段时,模块就像接球游戏中的玩家一样,将结构从一个传递给另一个。每个模块甚至可以根据自己的偏好修改此结构中的任何值!
This media is not supported in your browser
VIEW IN TELEGRAM
不过,这种利用方式仍然存在一个问题:获取到一个uid的shell并不等于直接进程内代码执行,我们如果想进一步进行hook、代码注入的话,这种利用方式会需要一个额外的代码覆盖执行跳板,但并非每个应用程序都有此功能,且Android14进一步引入了DCL限制。
Template.php catid变量 SQL注入漏洞(CVE-2017-11583)
漏洞分析:
/finecms/dayrui/controllers/api.php 114 data2函数
首先我们要绕过安全码认证
$auth = $this->input->get('auth', true);
if ($auth != md5(SYS_KEY)) {
// 授权认证码不正确
$data = array('msg' => '授权认证码不正确', 'code' => 0);
} else {
这个安全码直接定义在config中,可以在后台被修改,会在cookie中被泄露
当我们第一次访问站点的时候,我们会获得cookie,这个前缀就是安全码
漏洞分析:
/finecms/dayrui/controllers/api.php 114 data2函数
首先我们要绕过安全码认证
$auth = $this->input->get('auth', true);
if ($auth != md5(SYS_KEY)) {
// 授权认证码不正确
$data = array('msg' => '授权认证码不正确', 'code' => 0);
} else {
这个安全码直接定义在config中,可以在后台被修改,会在cookie中被泄露
当我们第一次访问站点的时候,我们会获得cookie,这个前缀就是安全码
通用漏洞挖掘——网关系统
未授权访问查看管理员账号密码
目标是个网关系统,使用弱口令进入系统后,开始测试功能点,在系统用户处测试抓包:
通用漏洞挖掘——网关系统-RadeBit瑞安全
删除cookie后发现仍然可以访问管理员相关信息包括密码、手机号码等:
通用漏洞挖掘——网关系统-RadeBit瑞安全
浏览器直接访问,然后查看密码即可:
通用漏洞挖掘——网关系统-RadeBit瑞安全
任意文件下载
后台存在日志查询功能点, 查看服务器日志时有下载功能:
通用漏洞挖掘——网关系统-RadeBit瑞安全
点击下载并抓包:
通用漏洞挖掘——网关系统-RadeBit瑞安全
将参数fileName的值删除重放后报错泄漏了物理路径,其中fopen(../../../log/)猜测是downFile.php文件中的源代码:
通用漏洞挖掘——网关系统-RadeBit瑞安全
在参数fileName后拼接:../../../VAG/pag/web/html/serverLog/downFile.php,查看downFile.php源码。定义了$file_dir的值为../../../log/,这里用户传入的值$file_name没有进行任何过滤,就直接拼接在变量$file_dir后面然后使用fopen函数打开拼接后的文件。
这里使用../可以直接下载任意文件:
通用漏洞挖掘——网关系统-RadeBit瑞安全
任意文件读取
在测试服务器日志时,服务器返回的代码中含有参数showFile.php?fileName=:
通用漏洞挖掘——网关系统-RadeBit瑞安全
这里构造数据包/serverLog/showFile.php?fileName= 可以直接查看目标源文件:
通用漏洞挖掘——网关系统-RadeBit瑞安全
在测试过程中发现存在未授权访问,在浏览器中可以直接读取文件源代码:
通用漏洞挖掘——网关系统-RadeBit瑞安全
未授权创建存储型XSS
发现在资源管理功能点存在未授权,可以创建存储型XSS,插入XSS平台地址:
通用漏洞挖掘——网关系统-RadeBit瑞安全
当管理员访问资源管理功能点时:
通用漏洞挖掘——网关系统-RadeBit瑞安全
XSS平台成功获取到系统管理员cookie:
通用漏洞挖掘——网关系统-RadeBit瑞安全
任意用户密码修改
在后台管理测试修改密码功能点,这里原始密码随意输入,点击保存并抓包。
通用漏洞挖掘——网关系统-RadeBit瑞安全
发现在/data/checkIsExist.php数据包中会对当前账户的原始密码进行校验,原始密码错误返回1,密码正确返回0。
通用漏洞挖掘——网关系统-RadeBit瑞安全
这里将服务器返回的数据包修改为0,进入下一个数据包,这里是对密码进行修改。
通用漏洞挖掘——网关系统-RadeBit瑞安全
释放数据包后显示密码修改成功:
通用漏洞挖掘——网关系统-RadeBit瑞安全
使用修改之后的密码去尝试登录,可以成功登录到管理后台。
此时想到这个系统存在很多未授权操作,如果修改密码功能点也存在未授权,那么就可以直接重置系统任意用户的密码。
这里浏览器直接访问修改密码的URL,发现用户名为空:
通用漏洞挖掘——网关系统-RadeBit瑞安全
这里按照之前的流程先走一遍,点击保存并抓包,发现name参数的值为空,这里修改为admin:
通用漏洞挖掘——网关系统-RadeBit瑞安全
在修改服务器返回的数据包为0之后,再将参数name的值修改为admin:
通用漏洞挖掘——网关系统-RadeBit瑞安全
释放数据包后,显示修改成功:
未授权访问查看管理员账号密码
目标是个网关系统,使用弱口令进入系统后,开始测试功能点,在系统用户处测试抓包:
通用漏洞挖掘——网关系统-RadeBit瑞安全
删除cookie后发现仍然可以访问管理员相关信息包括密码、手机号码等:
通用漏洞挖掘——网关系统-RadeBit瑞安全
浏览器直接访问,然后查看密码即可:
通用漏洞挖掘——网关系统-RadeBit瑞安全
任意文件下载
后台存在日志查询功能点, 查看服务器日志时有下载功能:
通用漏洞挖掘——网关系统-RadeBit瑞安全
点击下载并抓包:
通用漏洞挖掘——网关系统-RadeBit瑞安全
将参数fileName的值删除重放后报错泄漏了物理路径,其中fopen(../../../log/)猜测是downFile.php文件中的源代码:
通用漏洞挖掘——网关系统-RadeBit瑞安全
在参数fileName后拼接:../../../VAG/pag/web/html/serverLog/downFile.php,查看downFile.php源码。定义了$file_dir的值为../../../log/,这里用户传入的值$file_name没有进行任何过滤,就直接拼接在变量$file_dir后面然后使用fopen函数打开拼接后的文件。
这里使用../可以直接下载任意文件:
通用漏洞挖掘——网关系统-RadeBit瑞安全
任意文件读取
在测试服务器日志时,服务器返回的代码中含有参数showFile.php?fileName=:
通用漏洞挖掘——网关系统-RadeBit瑞安全
这里构造数据包/serverLog/showFile.php?fileName= 可以直接查看目标源文件:
通用漏洞挖掘——网关系统-RadeBit瑞安全
在测试过程中发现存在未授权访问,在浏览器中可以直接读取文件源代码:
通用漏洞挖掘——网关系统-RadeBit瑞安全
未授权创建存储型XSS
发现在资源管理功能点存在未授权,可以创建存储型XSS,插入XSS平台地址:
通用漏洞挖掘——网关系统-RadeBit瑞安全
当管理员访问资源管理功能点时:
通用漏洞挖掘——网关系统-RadeBit瑞安全
XSS平台成功获取到系统管理员cookie:
通用漏洞挖掘——网关系统-RadeBit瑞安全
任意用户密码修改
在后台管理测试修改密码功能点,这里原始密码随意输入,点击保存并抓包。
通用漏洞挖掘——网关系统-RadeBit瑞安全
发现在/data/checkIsExist.php数据包中会对当前账户的原始密码进行校验,原始密码错误返回1,密码正确返回0。
通用漏洞挖掘——网关系统-RadeBit瑞安全
这里将服务器返回的数据包修改为0,进入下一个数据包,这里是对密码进行修改。
通用漏洞挖掘——网关系统-RadeBit瑞安全
释放数据包后显示密码修改成功:
通用漏洞挖掘——网关系统-RadeBit瑞安全
使用修改之后的密码去尝试登录,可以成功登录到管理后台。
此时想到这个系统存在很多未授权操作,如果修改密码功能点也存在未授权,那么就可以直接重置系统任意用户的密码。
这里浏览器直接访问修改密码的URL,发现用户名为空:
通用漏洞挖掘——网关系统-RadeBit瑞安全
这里按照之前的流程先走一遍,点击保存并抓包,发现name参数的值为空,这里修改为admin:
通用漏洞挖掘——网关系统-RadeBit瑞安全
在修改服务器返回的数据包为0之后,再将参数name的值修改为admin:
通用漏洞挖掘——网关系统-RadeBit瑞安全
释放数据包后,显示修改成功: