<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>SpellBook</title>
    <link>https://ag2s.ca/spellbook/2.-web-pentesting/2.4-whitebox-attacks/deserialization/</link>
    <description>Recent content on SpellBook</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <atom:link href="https://ag2s.ca/spellbook/2.-web-pentesting/2.4-whitebox-attacks/deserialization/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title></title>
      <link>https://ag2s.ca/spellbook/2.-web-pentesting/2.4-whitebox-attacks/deserialization/asp.net/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ag2s.ca/spellbook/2.-web-pentesting/2.4-whitebox-attacks/deserialization/asp.net/</guid>
      <description>&lt;h2 id=&#34;setup&#34;&gt;Setup&lt;a class=&#34;anchor&#34; href=&#34;#setup&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Install &lt;a href=&#34;https://visualstudio.microsoft.com/vs/community/&#34;&gt;Visual Studio&lt;/a&gt;. If you already have, open &lt;code&gt;Visual Studio Installer&lt;/code&gt; -&amp;gt; &lt;code&gt;Modify&lt;/code&gt;&#xA;&lt;img src=&#34;https://ag2s.ca/spellbook/images/46ced486e5005bdc7966f2be4292c4808ccab9290ff77ef3ef68cfe22f8b70cd.jpeg&#34; alt=&#34;&#34; /&gt;&#xA;And install &lt;code&gt;.NET desktop development&lt;/code&gt;&#xA;&lt;img src=&#34;https://ag2s.ca/spellbook/images/62633696c59ca882c621fcd1e2b23fd4e905bb75cb2b021fb4d2bf0b491ae968.jpeg&#34; alt=&#34;&#34; /&gt;&#xA;We can create a new &lt;code&gt;Console App (.NET Framework)&lt;/code&gt; project for all the exploit developments here&#xA;&lt;img src=&#34;https://ag2s.ca/spellbook/images/1438d6befba67d0958ca61d675307433f98926ec209f79b5f37b32de8dc39f5b.jpeg&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;net-deserialization-gadgets&#34;&gt;.NET Deserialization gadgets&lt;a class=&#34;anchor&#34; href=&#34;#net-deserialization-gadgets&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Before exploiting any .NET deserialization vulnerabilities, we need to know about the gadgets that we can use to invoke a method (function) that we want. We will walk through 2 gadget chains that results in RCE.&#xA;The reason we need these gadgets is because we cannot directly invoke a method via deserialization. Creating an object is not the same as running a function. However, there are some workaround that we can use to invoke a method without directly do so.&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://ag2s.ca/spellbook/2.-web-pentesting/2.4-whitebox-attacks/deserialization/php/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ag2s.ca/spellbook/2.-web-pentesting/2.4-whitebox-attacks/deserialization/php/</guid>
      <description>&lt;h2 id=&#34;example-1---php&#34;&gt;Example 1 - PHP&lt;a class=&#34;anchor&#34; href=&#34;#example-1---php&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;We found a webapp with a &lt;code&gt;export settings&lt;/code&gt; &lt;code&gt;import settings&lt;/code&gt; function. When we try exporting our settings, we got this string:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;TzoyNDoiQXBwXEhlbHBlcnNcVXNlclNldHRpbmdzIjo0OntzOjMwOiIAQXBwXEhlbHBlcnNcVXNlclNldHRpbmdzAE5hbWUiO3M6NzoicGVudGVzdCI7czozMToiAEFwcFxIZWxwZXJzXFVzZXJTZXR0aW5ncwBFbWFpbCI7czoyMzoicGVudGVzdEBwZW50ZXN0LnBlbnRlc3QiO3M6MzQ6IgBBcHBcSGVscGVyc1xVc2VyU2V0dGluZ3MAUGFzc3dvcmQiO3M6NjA6IiQyeSQxMCROdjAyRWppUjNheDcwMFJNZUFtd2oua2JUOVNQaGNJMjhJT0dKN2ZadTIwL0pYNlhGZTRNYSI7czozNjoiAEFwcFxIZWxwZXJzXFVzZXJTZXR0aW5ncwBQcm9maWxlUGljIjtzOjExOiJkZWZhdWx0LmpwZyI7fQ==&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We try to base64 decode it, and got this string. It looks like a php serialized data.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;TzoyNDoiQXBwXEhlbHBlcnNcVXNlclNldHRpbmdzIjo0OntzOjMwOiIAQXBwXEhlbHBlcnNcVXNlclNldHRpbmdzAE5hbWUiO3M6NzoicGVudGVzdCI7czozMToiAEFwcFxIZWxwZXJzXFVzZXJTZXR0aW5ncwBFbWFpbCI7czoyMzoicGVudGVzdEBwZW50ZXN0LnBlbnRlc3QiO3M6MzQ6IgBBcHBcSGVscGVyc1xVc2VyU2V0dGluZ3MAUGFzc3dvcmQiO3M6NjA6IiQyeSQxMCROdjAyRWppUjNheDcwMFJNZUFtd2oua2JUOVNQaGNJMjhJT0dKN2ZadTIwL0pYNlhGZTRNYSI7czozNjoiAEFwcFxIZWxwZXJzXFVzZXJTZXR0aW5ncwBQcm9maWxlUGljIjtzOjExOiJkZWZhdWx0LmpwZyI7fQ==&amp;#39;&lt;/span&gt; | base64 -d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;O:24:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;App\Helpers\UserSettings&amp;#34;&lt;/span&gt;:5:&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;s:30:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;App\Helpers\UserSettingsName&amp;#34;&lt;/span&gt;;s:7:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;pentest&amp;#34;&lt;/span&gt;;s:31:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;App\Helpers\UserSettingsEmail&amp;#34;&lt;/span&gt;;s:23:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;pentest@pentest.pentest&amp;#34;&lt;/span&gt;;s:30:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;App\Helpers\UserSettingsRole&amp;#34;&lt;/span&gt;;s:4:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;;s:34:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;App\Helpers\UserSettingsPassword&amp;#34;&lt;/span&gt;;s:60:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$2&lt;span style=&#34;color:#e6db74&#34;&gt;y&lt;/span&gt;$10$Nv02EjiR3ax700RMeAmwj&lt;span style=&#34;color:#e6db74&#34;&gt;.kbT9SPhcI28IOGJ7fZu20/JX6XFe4Ma&amp;#34;&lt;/span&gt;;s:36:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;App\Helpers\UserSettingsProfilePic&amp;#34;&lt;/span&gt;;s:11:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;default.jpg&amp;#34;&lt;/span&gt;;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;source-analysis&#34;&gt;Source analysis&lt;a class=&#34;anchor&#34; href=&#34;#source-analysis&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;When we see the source code for the &lt;code&gt;handleSettingsIE&lt;/code&gt; function, we can see that it deserialize user input &lt;code&gt;base64&lt;/code&gt; data into &lt;code&gt;userSettings&lt;/code&gt; object without sanitizing/filtering&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://ag2s.ca/spellbook/2.-web-pentesting/2.4-whitebox-attacks/deserialization/python/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ag2s.ca/spellbook/2.-web-pentesting/2.4-whitebox-attacks/deserialization/python/</guid>
      <description>&lt;h2 id=&#34;python&#34;&gt;Python&lt;a class=&#34;anchor&#34; href=&#34;#python&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;When we login to this webapp, we got a cookie like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-http&#34; data-lang=&#34;http&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;HTTP&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1.1&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;302&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Found&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Set-Cookie&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;auth_8bH3mjF6n9=gASVSgAAAAAAAACMCXV0aWwuYXV0aJSMB1Nlc3Npb26Uk5QpgZR9lCiMCHVzZXJuYW1llIwNZnJhbnoubXVlbGxlcpSMBHJvbGWUjAR1c2VylHViLg==&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We try to &lt;code&gt;base64&lt;/code&gt; decode the cookie and it starts with the bytes &lt;code&gt;80 04 95&lt;/code&gt; and ends with a &lt;code&gt;period&lt;/code&gt;.&#xA;Compare it to our cheatsheet at &lt;a href=&#34;#black-box&#34;&gt;#Black-Box&lt;/a&gt;, this is python &lt;code&gt;Pickle&lt;/code&gt; version 4 serialized object.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ echo gASVSgAAAAAAAACMCXV0aWwuYXV0aJSMB1Nlc3Npb26Uk5QpgZR9lCiMCHVzZXJuYW1llIwNZnJhbnoubXVlbGxlcpSMBHJvbGWUjAR1c2VylHViLg&lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; | base64 -d | xxd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;00000000: &lt;span style=&#34;color:#ae81ff&#34;&gt;8004&lt;/span&gt; 954a &lt;span style=&#34;color:#ae81ff&#34;&gt;0000&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0000&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0000&lt;/span&gt; 008c &lt;span style=&#34;color:#ae81ff&#34;&gt;0975&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;7469&lt;/span&gt;  ...J.........uti&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;00000010: 6c2e &lt;span style=&#34;color:#ae81ff&#34;&gt;6175&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;7468&lt;/span&gt; 948c &lt;span style=&#34;color:#ae81ff&#34;&gt;0753&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;6573&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;7369&lt;/span&gt; 6f6e  l.auth...Session&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;00000020: &lt;span style=&#34;color:#ae81ff&#34;&gt;9493&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;9429&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;8194&lt;/span&gt; 7d94 288c &lt;span style=&#34;color:#ae81ff&#34;&gt;0875&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;7365&lt;/span&gt; 726e  ...&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;..&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;.&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;..usern&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;00000030: 616d &lt;span style=&#34;color:#ae81ff&#34;&gt;6594&lt;/span&gt; 8c0d &lt;span style=&#34;color:#ae81ff&#34;&gt;6672&lt;/span&gt; 616e 7a2e 6d75 656c  ame...franz.muel&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;00000040: 6c65 &lt;span style=&#34;color:#ae81ff&#34;&gt;7294&lt;/span&gt; 8c04 726f 6c65 948c &lt;span style=&#34;color:#ae81ff&#34;&gt;0475&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;7365&lt;/span&gt;  ler...role...use&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;00000050: &lt;span style=&#34;color:#ae81ff&#34;&gt;7294&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;7562&lt;/span&gt; 2e                             r.ub.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;source-analysis&#34;&gt;Source Analysis&lt;a class=&#34;anchor&#34; href=&#34;#source-analysis&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;This is the &lt;code&gt;/login&lt;/code&gt; path in &lt;code&gt;app.py&lt;/code&gt;. After we log in:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
