<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Posts on Notatki ze świata security</title>
        <link>https://security.rkarkut.pl/posts/</link>
        <description>Recent content in Posts on Notatki ze świata security</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>pl-pl</language>
        <lastBuildDate>Sun, 23 Aug 2026 00:00:00 +0000</lastBuildDate>
        <atom:link href="https://security.rkarkut.pl/posts/index.xml" rel="self" type="application/rss+xml" />
        
        <item>
            <title>Identyfikacja i exploitacja Redisa</title>
            <link>https://security.rkarkut.pl/posts/identyfikacja-i-eksploitacja-redisa/</link>
            <pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate>
            
            <guid>https://security.rkarkut.pl/posts/identyfikacja-i-eksploitacja-redisa/</guid>
            <description>&lt;p&gt;Pierwsze ćwiczenie z bezpieczeństwa polegać będzie na wykryciu, że w sieci dostępny jest serwer z zainstalowaną usługą Redis. Efekt ćwiczenia to dostęp do usługi i możliwość odczytania wszystkich znajdujących się tam danych.&lt;/p&gt;
&lt;h2 id=&#34;założenia&#34;&gt;Założenia&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Przeskanowanie sieci i wyszukania aktywnych hostów&lt;/li&gt;
&lt;li&gt;Przeskanowanie portów i identyfikacji działających usług&lt;/li&gt;
&lt;li&gt;Namierzenie usługi Redis i złamapnie loginu oraz hasła&lt;/li&gt;
&lt;li&gt;Odczytanie danych znajdujących się w Redisie&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;instalacja-redis-server&#34;&gt;Instalacja Redis Server&lt;/h2&gt;
&lt;p&gt;Na Ubuntu Server zainstalowałem Redis Server z repozytoriów systemowych:&lt;/p&gt;</description>
            <content type="html"><![CDATA[<p>Pierwsze ćwiczenie z bezpieczeństwa polegać będzie na wykryciu, że w sieci dostępny jest serwer z zainstalowaną usługą Redis. Efekt ćwiczenia to dostęp do usługi i możliwość odczytania wszystkich znajdujących się tam danych.</p>
<h2 id="założenia">Założenia</h2>
<ol>
<li>Przeskanowanie sieci i wyszukania aktywnych hostów</li>
<li>Przeskanowanie portów i identyfikacji działających usług</li>
<li>Namierzenie usługi Redis i złamapnie loginu oraz hasła</li>
<li>Odczytanie danych znajdujących się w Redisie</li>
</ol>
<h2 id="instalacja-redis-server">Instalacja Redis Server</h2>
<p>Na Ubuntu Server zainstalowałem Redis Server z repozytoriów systemowych:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo apt install redis-server -y
</span></span><span style="display:flex;"><span>sudo systemctl status redis-server
</span></span></code></pre></div><p>Redis domyślnie powinien nasłuchiwać lokalnie, zwykle na adresie:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>127.0.0.1:6379
</span></span></code></pre></div><p>Do ćwiczeń potrzebowałem jednak, aby Redis był widoczny również z drugiej maszyny wirtualnej w tej samej sieci labowej.</p>
<h2 id="konfiguracja-usługi-redis-server">Konfiguracja usługi Redis Server</h2>
<p>Plik konfiguracyjny Redis znajduje się w:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>/etc/redis/redis.conf
</span></span></code></pre></div><p>W konfiguracji ustawiłem dyrektywę <code>bind</code> tak, aby Redis nasłuchiwał lokalnie oraz na adresie IP maszyny:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bind 127.0.0.1 192.168.202.131
</span></span></code></pre></div><p>Dodatkowo zostawiłem włączony tryb ochronny:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>protected-mode yes
</span></span></code></pre></div><p>Po zmianach zrestartowałem usługę:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo systemctl restart redis-server
</span></span></code></pre></div><p>Następnie sprawdziłem, czy Redis nasłuchuje na porcie <code>6379</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo ss -lntp | grep <span style="color:#ae81ff">6379</span>
</span></span></code></pre></div><p>Oczekiwany efekt to nasłuchiwanie na localhost oraz adresie interfejsu sieciowego:</p>
<p><img src="/images/redis-sever-hosts.png" alt=""></p>
<h2 id="ustawienie-loginu-i-hasła-w-redis-server">Ustawienie loginu i hasła w Redis Server</h2>
<p>Redis w nowszych wersjach obsługuje mechanizm <strong>ACL</strong> (<em>Access Control List</em>), który pozwala tworzyć użytkowników z osobnym loginem, hasłem i zestawem uprawnień. To lepsze rozwiązanie niż samo <code>requirepass</code>, ponieważ umożliwia bardziej precyzyjną kontrolę dostępu.</p>
<p>W moim labie użyłem Redis Server w wersji 8, więc mogłem skonfigurować dostęp w formie:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>login: admin
</span></span><span style="display:flex;"><span>hasło: admin
</span></span></code></pre></div><p>Najpierw edytowałem plik konfiguracyjny Redis-a:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo nano /etc/redis/redis.conf
</span></span></code></pre></div><p>Następnie dodałem konfigurację użytkownika ACL:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>user default off &lt;- wyłączenie domyślnego użytkownika Redis-a - nie można się zalogować bez podania danych uwierzytelanijących
</span></span><span style="display:flex;"><span>user admin on &gt;admin ~* +@all &lt;- utworzenie użytkownika admin z dostępem <span style="color:#66d9ef">do</span> wszystkich kluczy
</span></span></code></pre></div><p>Poprawne logowanie z użyciem użytkownika i hasła wygląda tak:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>redis-cli --user admin -a <span style="color:#e6db74">&#39;admin&#39;</span> PING
</span></span></code></pre></div><h2 id="identyfikacja-aktywnych-hostów-w-sieci">Identyfikacja aktywnych hostów w sieci</h2>
<p>Z pomocą narzędzia <code>nmap</code> wyszukałem wszystkie aktywne hosty w sieci</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nmap -sn 192.168.202.131/24
</span></span></code></pre></div><p>Parametr <code>-sn</code> skanuje aktywne hosty bez skanowania portów.</p>
<p>Narzędzie wykrywa kilka aktywnych hostów</p>
<p><img src="/images/nmap-1.png" alt=""></p>
<p>Następnie przeskanowałem aktywne hosty:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nmap -Pn -sV -p- 192.168.202.131
</span></span></code></pre></div><p>Parametr <code>-Pn</code> pomija sprawdzanie, czy host jest aktywny
Parametr <code>-sV</code> wykrywa wersję usługi dostępną na skanowanych portach
Parametr <code>-p-</code> skanuje wszystkie porty od 1 do 65535</p>
<p><img src="/images/nmap-2.png" alt=""></p>
<p>Do prostego testu połączenia można użyć klienta Redis:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>redis-cli -h 192.168.202.131 -p <span style="color:#ae81ff">6379</span> PING
</span></span></code></pre></div><p>Jednak w tym przypadku serwer Redis-a jest zabezpieczony i nie można się do niego zalogować bez autoryzacji.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#f92672">(</span>error<span style="color:#f92672">)</span> NOAUTH Authentication required.
</span></span></code></pre></div><h2 id="eksploitacja-hasła-redis-server">Eksploitacja hasła Redis Server</h2>
<p>Kali Linux posiada wiele narzędzie do łamania haseł, jednym z popularnych narzędzi jest <code>hydra</code>. Niestety, w przypadku gdy Redis Server zabezpieczony jest loginem i hasłem (a nie samym hasłem) - hydra nie wystarczy.</p>
<p>W celu wykrycia hasła napisałem prosty <a href="https://github.com/rkarkut/security/blob/main/exploit-redis.py">skrypt w Python</a>, który z użyciem <code>redis cli</code> sprawdza możliwe kombinacje haseł z dostarczonej word-listy.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>python3 exploit-redis.py -H 192.168.202.131 -p <span style="color:#ae81ff">6379</span> -u admin -w /usr/share/wordlists/fasttrack.txt
</span></span></code></pre></div><p>Wynik polecenia po kilku chwilach to</p>
<p><img src="/images/exploit-redis.png" alt=""></p>
<p>Jak widać, słabe hasło możliwe jest do złamania bardzo szybko.</p>
]]></content>
        </item>
        
        <item>
            <title>Budowa prostego HomeLab z VMware Fusion, Ubuntu i Kali Linux</title>
            <link>https://security.rkarkut.pl/posts/homelab-how-to/</link>
            <pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate>
            
            <guid>https://security.rkarkut.pl/posts/homelab-how-to/</guid>
            <description>&lt;p&gt;W ramach ćwiczeń z bezpieczeństwa przygotowałem prosty HomeLab uruchomiony na swoim komputerze. Celem było zbudowanie środowiska składającego się z dwóch maszyn wirtualnych: jednej odgrywającej rolę atakującego oraz drugiej odgrywającej rolę ofiary. W przyszłości, na maszynie ofiary instalować będę oprogramowanie do atakowania.&lt;/p&gt;
&lt;p&gt;Całość została uruchomiona w VMware Fusion. Ponieważ host działa na procesorze Apple M3, do instalacji systemów wybrałem obrazy w architekturze ARM64, a nie klasyczne obrazy Intel/AMD 64-bit.&lt;/p&gt;
&lt;h2 id=&#34;założenia&#34;&gt;Założenia&lt;/h2&gt;
&lt;p&gt;Środowisko składa się z dwóch maszyn:&lt;/p&gt;</description>
            <content type="html"><![CDATA[<p>W ramach ćwiczeń z bezpieczeństwa przygotowałem prosty HomeLab uruchomiony na swoim komputerze. Celem było zbudowanie środowiska składającego się z dwóch maszyn wirtualnych: jednej odgrywającej rolę atakującego oraz drugiej odgrywającej rolę ofiary. W przyszłości, na maszynie ofiary instalować będę oprogramowanie do atakowania.</p>
<p>Całość została uruchomiona w VMware Fusion. Ponieważ host działa na procesorze Apple M3, do instalacji systemów wybrałem obrazy w architekturze ARM64, a nie klasyczne obrazy Intel/AMD 64-bit.</p>
<h2 id="założenia">Założenia</h2>
<p>Środowisko składa się z dwóch maszyn:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>VM 1: Attacker
</span></span><span style="display:flex;"><span>- system: Kali
</span></span><span style="display:flex;"><span>- rola: maszyna <span style="color:#66d9ef">do</span> testów i skanowania
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>VM 2: Victim
</span></span><span style="display:flex;"><span>- system: Ubuntu
</span></span><span style="display:flex;"><span>- rola: maszyna testowa
</span></span></code></pre></div><p>Do ćwiczeń wystarczyły następujące zasoby:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>Attacker:
</span></span><span style="display:flex;"><span>- CPU: 2–4 rdzenie
</span></span><span style="display:flex;"><span>- RAM: 4–8 GB
</span></span><span style="display:flex;"><span>- Dysk: 40–60 GB
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Victim:
</span></span><span style="display:flex;"><span>- CPU: 1–2 rdzenie
</span></span><span style="display:flex;"><span>- RAM: <span style="color:#ae81ff">2</span> GB
</span></span><span style="display:flex;"><span>- Dysk: <span style="color:#ae81ff">20</span> GB
</span></span></code></pre></div><p><img src="/images/homelab-1.png" alt=""></p>
<h2 id="konfiguracja-sieci-w-vmware-fusion">Konfiguracja sieci w VMware Fusion</h2>
<p>Obie maszyny zostały podłączone do tej samej sieci wirtualnej w VMware Fusion. Do labu najlepiej sprawdza się tryb izolowany, np.:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>Private to my Mac / Host-only
</span></span></code></pre></div><p>Dzięki temu maszyny wirtualne widzą się nawzajem, ale usługi uruchamiane w labie nie są przypadkowo wystawione do fizycznej sieci domowej.</p>
<p>Po uruchomieniu maszyny ofiary sprawdziłem jej konfigurację sieciową:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ip addr
</span></span></code></pre></div><p>Interfejs sieciowy ofiary otrzymał adres:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>192.168.202.131/24
</span></span></code></pre></div><p>Oznacza to, że sama maszyna ofiary ma adres:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>192.168.202.131
</span></span></code></pre></div><p>a sieć labowa to:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>192.168.202.0/24
</span></span></code></pre></div><h2 id="podsumowanie">Podsumowanie</h2>
<p>Taki prosty HomeLab pozwala bezpiecznie ćwiczyć podstawy testów bezpieczeństwa usług sieciowych.
Najważniejsze elementy konfiguracji to:</p>
<ul>
<li>użycie obrazów ARM64 na Macu z Apple Silicon,</li>
<li>uruchomienie obu maszyn w tej samej izolowanej sieci VMware,</li>
<li>sprawdzenie adresów IP przez <code>ip addr</code>,</li>
<li>unikanie wystawiania podatnych usług w trybie Bridged,</li>
</ul>
<p>Na dalszym etapie będę rozbudowywał HomeLab o dodatkowe usługi w celu ich eksploitowania i testowania bezpieczeństwa.</p>
]]></content>
        </item>
        
        <item>
            <title>TryHackMe - Defensive Security Intro</title>
            <link>https://security.rkarkut.pl/posts/thm-devensive-security-intro/</link>
            <pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate>
            
            <guid>https://security.rkarkut.pl/posts/thm-devensive-security-intro/</guid>
            <description>&lt;p&gt;Przygodę z &lt;strong&gt;TryHackMe&lt;/strong&gt; zaczynamy od sekcji &lt;em&gt;Pre Security&lt;/em&gt;. W tej części uczymy się podstaw bezpieczeństwa.
Pierwsze zadania są banalnie proste, czytamy definicję i odpowiadamy na pytania.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://security.rkarkut.pl/images/htb-1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Zadania są bardzo przyjemne, w interaktywnej formie, szybko się je robi i dają sporo frajdy :)&lt;/p&gt;</description>
            <content type="html"><![CDATA[<p>Przygodę z <strong>TryHackMe</strong> zaczynamy od sekcji <em>Pre Security</em>. W tej części uczymy się podstaw bezpieczeństwa.
Pierwsze zadania są banalnie proste, czytamy definicję i odpowiadamy na pytania.</p>
<p><img src="/images/htb-1.png" alt=""></p>
<p>Zadania są bardzo przyjemne, w interaktywnej formie, szybko się je robi i dają sporo frajdy :)</p>
]]></content>
        </item>
        
    </channel>
</rss>
