<![CDATA[Latest posts for the topic "Xin xem xét dùm bảo mật site rongchaua.net"]]> /hvaonline/posts/list/12.html JForum - http://www.jforum.net Xin xem xét dùm bảo mật site rongchaua.net /hvaonline/posts/list/39745.html#244738 /hvaonline/posts/list/39745.html#244738 GMT Xin xem xét dùm bảo mật site rongchaua.net /hvaonline/posts/list/39745.html#244745 /hvaonline/posts/list/39745.html#244745 GMT Xin xem xét dùm bảo mật site rongchaua.net /hvaonline/posts/list/39745.html#244747 /hvaonline/posts/list/39745.html#244747 GMT Xin xem xét dùm bảo mật site rongchaua.net /hvaonline/posts/list/39745.html#244750 /hvaonline/posts/list/39745.html#244750 GMT Xin xem xét dùm bảo mật site rongchaua.net

rongchaua wrote:
Chào mọi người, vừa rồi mình vừa nhận một comment trên blog là file proxy.php của mình làm lộ toàn bộ local files. Xem comment ở đây: http://rongchaua.net/blog/html5-audio-tag-cross-domain Xử lý: - Thay đổi proxy.php thành proxy.txt - Thay đổi thông tin trên file config của Wordpress và password administrator. - Đang tiến hàng quyét virus trên host. - và nên làm gì tiếp theo??? Câu hỏi: - File proxy.php ở đây http://rongchaua.net/Web/Tmp/proxy.php mình đã đổi thành http://rongchaua.net/Web/Tmp/proxy.txt . Mình muốn hỏi là với cấu trúc code như trên thì làm thế nào có thể view được local files của mình? - Các bước tiếp theo nên làm gì??? Cám ơn. 
Nếu em dùng php module trực tiếp với apache thì cách an toàn nhất là: 1. Tạo một thư mục duy nhất cho phép chạy php và chmod thành read only cho thư mục ấy tất cả các file trong thư mục ấy. Ví dụ, thư mục ấy ở /home/someone/public_html/src chẳng hạn thì chuyển sang thư mục ấy và: chmod ugo-wx . (để ý dấu chấm) và chmod ugo-wx * 2. Trên apache config (httpd.conf hoặc bất cứ config cụ thể nào được Include với httpd.conf có liên quan đến site của em), thêm mấy thứ như sau: a. Set ngay trong <VirtualHost....> </VirtualHost> directive: php_admin_value open_basedir /home/someone/public_html/ php_admin_value doc_root /home/someone/public_html/ php_admin_value upload_tmp_dir /home/someone/public_html/tmp php_admin_value upload_max_filesize 8M php_admin_value include_path none trong đó, phần màu đỏ là thư mục chứa trang web của em phần màu cam là ấn định kích thước file tối đa được upload (nếu em cho phép upload). Phần màu vàng rất quan trọng vì nó giới hạn chặt chẽ không cho phép include bên ngoài "doc_root" của em. b. Tạo directive <Location> cụ thể cho khu vực không được chạy php. Ví dụ: <Location /files/> RemoveHandler .php php_flag engine off Options -Includes -Indexes </Location> <Location /site/images/> RemoveHandler .php php_flag engine off Options -Includes -Indexes </Location> trong, đó thư mục "files" chỉ chứa các file nào đó chớ chẳng có php, thư mục "site/images" chỉ chứa hình chớ chẳng có php file nào hết. Các flag màu đỏ cực kỳ quan trọng vì nó hoàn toàn huỷ bỏ handler php nên không thể parse và run php ở những thư mục ấy. Chẳng những vậy nó còn huỷ bỏ khả năng "Include" từ những thư mục ấy để đề phòng trường hợp ai đó upload một file php nhưng giả mạo như một gif file chẳng hạn rồi thực thi "include". Nói chung, 2 lỗ hổng lớn nhất của php là cho phép: include + run bất kể nơi nào. Nếu thắt chặt 2 điểm này thì php an toàn. Nếu paranoid hơn nữa thì nên compile apache để thực hiện chế độ Suexec và buộc account nào đó run php hoàn toàn tách rời và có chủ quyền rất giới hạn trên filesystem. Good luck. PS: nếu được, nên chạy php-fpm để isolate giữa công tác parse + run php và công tác i/o files trên apache thì vững hơn. ]]>
/hvaonline/posts/list/39745.html#244751 /hvaonline/posts/list/39745.html#244751 GMT
Xin xem xét dùm bảo mật site rongchaua.net /hvaonline/posts/list/39745.html#244754 /hvaonline/posts/list/39745.html#244754 GMT Xin xem xét dùm bảo mật site rongchaua.net

conmale wrote:
RemoveHandler .php php_flag engine off Options -Includes -Indexes  
Nếu ở directory bị mất kiểm soát được/bị override ngược lại thì việc thiết lập trên có hiệu quả không bác? ví dụ: AddHandler .php php_flag engine on Options +Includes +Indexes

conmale wrote:
PS: nếu được, nên chạy php-fpm để isolate giữa công tác parse + run php và công tác i/o files trên apache thì vững hơn.  
Em vào trang http://php-fpm.org thấy không được bác ạ. Bác cho em ý niệm về việc isolate này hoặc hint cho em chỗ vọc được không?]]>
/hvaonline/posts/list/39745.html#244759 /hvaonline/posts/list/39745.html#244759 GMT
Xin xem xét dùm bảo mật site rongchaua.net /hvaonline/posts/list/39745.html#244762 /hvaonline/posts/list/39745.html#244762 GMT Xin xem xét dùm bảo mật site rongchaua.net /hvaonline/posts/list/39745.html#244770 /hvaonline/posts/list/39745.html#244770 GMT Xin xem xét dùm bảo mật site rongchaua.net

cino wrote:
Bác cho em hỏi

conmale wrote:
RemoveHandler .php php_flag engine off Options -Includes -Indexes  
Nếu ở directory bị mất kiểm soát được/bị override ngược lại thì việc thiết lập trên có hiệu quả không bác? ví dụ: AddHandler .php php_flag engine on Options +Includes +Indexes  
Bồ nên đọc thêm ở đây: http://httpd.apache.org/docs/2.2/howto/htaccess.html Nếu sử dụng "shared host" thì vấn đề bảo mật nằm trong tay của nhà cung cấp dịch vụ. Muốn bảo mật thì cần kiện toàn, muốn kiện toàn thì cần quyền điều chỉnh mà nhà cung cấp dịch vụ kiểm soát quyền điều chỉnh thì đành... bó tay.

cino wrote:

conmale wrote:
PS: nếu được, nên chạy php-fpm để isolate giữa công tác parse + run php và công tác i/o files trên apache thì vững hơn.  
Em vào trang http://php-fpm.org thấy không được bác ạ. Bác cho em ý niệm về việc isolate này hoặc hint cho em chỗ vọc được không? 
php-fpm đã được đưa vào php chính thức từ 5.3.x trở đi (nhưng bồ phải compile lại thì mới có). Binaries tiêu chuẩn của nhiều distro vẫn chưa enable php-fpm. Nếu bồ xem trong php-fpm.org thì ngay trang đầu nó có những thông tin sau: What is PHP-FPM?
PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites. These features include: Adaptive process spawning (NEW!) Basic statistics (ala Apache's mod_status) (NEW!) Advanced process management with graceful stop/start Ability to start workers with different uid/gid/chroot/environment and different php.ini (replaces safe_mode) Stdout & stderr logging Emergency restart in case of accidental opcode cache destruction Accelerated upload support Support for a "slowlog" Enhancements to FastCGI, such as fastcgi_finish_request() - a special function to finish request & flush all data while continuing to do something time-consuming (video converting, stats processing, etc.) ... and much more. It was not designed with virtual hosting in mind (large amounts of pools) however it can be adapted for any usage model. 
]]>
/hvaonline/posts/list/39745.html#244777 /hvaonline/posts/list/39745.html#244777 GMT
Xin xem xét dùm bảo mật site rongchaua.net Code:
<?php


  $sqlinjectiontrack = $_SERVER['QUERY_STRING'];
  $wormprotector = array('chr(', 'chr=', 'chr%20', '%20chr', 'wget%20', '%20wget', 'wget(',
                 'cmd=', '%20cmd', 'cmd%20', 'rush=', '%20rush', 'rush%20',
                   'union%20', '%20union', 'union(', 'union=', 'echr(', '%20echr', 'echr%20', 'echr=',
                   'esystem(', 'esystem%20', 'cp%20', '%20cp', 'cp(', 'mdir%20', '%20mdir', 'mdir(',
                   'mcd%20', 'mrd%20', 'rm%20', '%20mcd', '%20mrd', '%20rm',
                   'mcd(', 'mrd(', 'rm(', 'mcd=', 'mrd=', 'mv%20', 'rmdir%20', 'mv(', 'rmdir(',
                   'chmod(', 'chmod%20', '%20chmod', 'chmod(', 'chmod=', 'chown%20', 'chgrp%20', 'chown(', 'chgrp(',
                   'locate%20', 'grep%20', 'locate(', 'grep(', 'diff%20', 'kill%20', 'kill(', 'killall',
                   'passwd%20', '%20passwd', 'passwd(', 'telnet%20', 'vi(', 'vi%20',
                   'insert%20into', 'select%20', 'nigga(', '%20nigga', 'nigga%20', 'fopen', 'fwrite', '%20like', 'like%20',
                   '$_request', '$_get', '$request', '$get', '.system', 'HTTP_PHP', '&aim', '%20getenv', 'getenv%20',
                   'new_password', '&icq','/etc/password','/etc/shadow', '/etc/groups', '/etc/gshadow',
                   'HTTP_USER_AGENT', 'HTTP_HOST', '/bin/ps', 'wget%20', 'uname\x20-a', '/usr/bin/id',
                   '/bin/echo', '/bin/kill', '/bin/', '/chgrp', '/chown', '/usr/bin', 'g\+\+', 'bin/python',
                   'bin/tclsh', 'bin/nasm', 'perl%20', 'traceroute%20', 'ping%20', '.pl', '/usr/X11R6/bin/xterm', 'lsof%20',
                   '/bin/mail', '.conf', 'motd%20', 'HTTP/1.', '.inc.php', 'config.php', 'cgi-', '.eml',
                   'file\://', 'window.open', '<SCRIPT>', 'javascript\://','img src', 'img%20src','.jsp','ftp.exe',
                   'xp_enumdsn', 'xp_availablemedia', 'xp_filelist', 'xp_cmdshell', 'nc.exe', '.htpasswd',
                   'servlet', '/etc/passwd', 'wwwacl', '~root', '~ftp', '.js', '.jsp', 'admin_', '.history',
                   'bash_history', '.bash_history', '~nobody', 'server-info', 'server-status', 'reboot%20', 'halt%20',
                   'powerdown%20', '/home/ftp', '/home/www', 'secure_site, ok', 'chunked', 'org.apache', '/servlet/con',
                   '<script', '/robot.txt' ,'/perl' ,'mod_gzip_status', 'db_mysql.inc', '.inc', 'select%20from',
                   'select from', 'drop%20', '.system', 'getenv', 'http_', '_php', 'php_', 'phpinfo()', '><?php', '?>', 'sql=');

  $checkworm = str_replace($wormprotector, '*', $sqlinjectiontrack);

  if ($sqlinjectiontrack != $checkworm)
    {
      $cremotead = $_SERVER['REMOTE_ADDR'];
      $cuseragent = $_SERVER['HTTP_USER_AGENT'];

      die( "Attack detected! <br /><br /><b>This attack was detected and blocked:</b><br />$cremotead - $cuseragent" );
    }

?>
]]>
/hvaonline/posts/list/39745.html#244784 /hvaonline/posts/list/39745.html#244784 GMT
Xin xem xét dùm bảo mật site rongchaua.net

conmale wrote:
Bồ nên đọc thêm ở đây: http://httpd.apache.org/docs/2.2/howto/htaccess.html  
Cảm ơn bác, Vậy là phải thiết lập
AllowOverride None 
và edit trong httpd.conf; Em muốn hỏi bác thêm là có cách nào chỉ enable cho .htaccess cấu hình với rewrite_url (mod_rewrite) ở directory mà không cho phép override các thứ khác ngoài rewrite không.

conmale wrote:
bồ xem trong php-fpm.org thì ngay trang đầu nó có những thông tin sau: What is PHP-FPM?
Ability to start workers with different uid/gid/chroot/environment and different php.ini (replaces safe_mode) 
 
Xin lỗi bác, lúc em vào là nó bị 'không truy cập được'. Nhưng em vẫn chưa hiểu rõ đoạn

conmale wrote:
nên chạy php-fpm để isolate giữa công tác parse + run php và công tác i/o files trên apache thì vững hơn.  
và đoạn bôi của bác
Ability to start workers with different uid/gid/chroot/environment and different php.ini (replaces safe_mode) 
thì có khác gì với chroot cho apache khi có delicated server cho 1 site hông. - Và gữa php-fpm, suhosin hay một implementation nào đó có chức năng củng cố bảo mật thì cái nào "ngon" nhất (theo bác). Performance kèm theo có bị ảnh hưởng gì không, hay đó là cái phải đánh đổi. PS: Cảm ơn rongchaua vì cái topic này nhé! Hồi cách đây mấy năm mình cũng khá 'ái mộ' một số topic (hướng dẫn) 'decrypt' trên site của bạn (do google được). Tiếc là đến giờ trình vẫn còi vì cái gì cũng thích nhúng mũi vào.]]>
/hvaonline/posts/list/39745.html#244793 /hvaonline/posts/list/39745.html#244793 GMT
Xin xem xét dùm bảo mật site rongchaua.net

cino wrote:

conmale wrote:
Bồ nên đọc thêm ở đây: http://httpd.apache.org/docs/2.2/howto/htaccess.html  
Cảm ơn bác, Vậy là phải thiết lập
AllowOverride None 
và edit trong httpd.conf; Em muốn hỏi bác thêm là có cách nào chỉ enable cho .htaccess cấu hình với rewrite_url (mod_rewrite) ở directory mà không cho phép override các thứ khác ngoài rewrite không.  
Cái này do httpd.conf hoặc bất cứ cấu hình nào dành cho virtualhost quyết định. Nếu ở level trên mà áp đặt
AllowOverride None 
thì tất cả những ấn định trong .htaccess cho từng directory cũng vô ích vì chẳng có giá trị nào hết. Bởi vậy, bảo mật ở cấp độ này hoàn toàn phụ thuộc vào nhà cung cấp dịch vụ.

cino wrote:

conmale wrote:
bồ xem trong php-fpm.org thì ngay trang đầu nó có những thông tin sau: What is PHP-FPM?
Ability to start workers with different uid/gid/chroot/environment and different php.ini (replaces safe_mode) 
 
Xin lỗi bác, lúc em vào là nó bị 'không truy cập được'. Nhưng em vẫn chưa hiểu rõ đoạn

conmale wrote:
nên chạy php-fpm để isolate giữa công tác parse + run php và công tác i/o files trên apache thì vững hơn.  
và đoạn bôi của bác
Ability to start workers with different uid/gid/chroot/environment and different php.ini (replaces safe_mode) 
thì có khác gì với chroot cho apache khi có delicated server cho 1 site hông.  
Hai câu trên tương tự nhau. Tính "isolation" nằm ở chỗ thay đổi (hoặc tách rời) uid/gid cho process chạy php-fpm chính là sự tách rời công tác parse + run php mà không động chạm đến read & write. Ví dụ, process chạy php-fpm gán cho account A để nó parse các file trong thư mục /abc chẳng hạn. Thư mục /abc này lại do account B own. Bởi vậy, php-fpm chỉ có thể parse + run php mà không thể upload (write) bất cứ thứ gì trên /abc cả. Bởi vậy, mọi cố gắng "up shell" để exploit đều thất bại. Cũng trong tinh thần này, nếu website được account A chạy php-fpm và muốn cho phép upload hình ảnh lên thư mục /abc/xyz chẳng hạn thì có thể chỉnh để account A owns /abc/xyz nhưng lại set để "remove handler" và turn off php engine trên từng thư mục. Tất nhiên là httpd.conf trong môi trường "shared host" phải không được chi phối. Trên bình diện cấu hình cho php-fpm, có thể áp dụng trong php-fpm.ini những ấn định cho mỗi virtualhost tương tự như: php_admin_value[open_basedir] = /home/someone/public_html/ php_admin_value[doc_root] = /home/someone/public_html/ php_admin_value[upload_tmp_dir] = /home/someone/public_html/tmp php_admin_value[upload_max_filesize] = 8M php_flag[cgi.force_wwwect] = 1 Làm như vậy, mọi ý định "remote include" đều không thể thực hiện được. Tất nhiên, nếu webmaster mà tự ý upload một cái proxy.php củ chuối nào đó đầy lỗ hổng thì có trời mới cứu được vì đây không phải là lỗi của php hoặc php-fpm hoặc apache mà do chính người quản trị. Trong trường hợp cực đoan, chroot cũng là một biện pháp tốt nếu muốn hoàn toàn isolate mỗi "khách hàng" trong một shared host server bởi vì khách hàng này không thể "include" files của khách hành kia hoặc một con php shell chạy bằng account chung để khởi tạo apache có thể thấy hết tất cả mọi thứ do apache own (thì chết toi).

cino wrote:
- Và gữa php-fpm, suhosin hay một implementation nào đó có chức năng củng cố bảo mật thì cái nào "ngon" nhất (theo bác). Performance kèm theo có bị ảnh hưởng gì không, hay đó là cái phải đánh đổi.  
Cái này không thể so sánh được vì nó giống như so sánh cái nền nhà bằng xi măng với cái vách tường bằng gạch. Suhosin là một áp dụng cố gắng bảo vệ tránh những exploits thuộc dạng buffer và string format. Trong khi đó, php-fpm hoặc suexec hoặc chroot, uid, gid là những cố gắng tạo isolation. Suhosin giống như cái nền nhà không cho chuột đục thủng còn php-fpm hoặc chroot thì giống như ngăn cái nhà ra nhiều phòng cách biệt vậy ;).]]>
/hvaonline/posts/list/39745.html#244798 /hvaonline/posts/list/39745.html#244798 GMT
Xin xem xét dùm bảo mật site rongchaua.net /hvaonline/posts/list/39745.html#244810 /hvaonline/posts/list/39745.html#244810 GMT Xin xem xét dùm bảo mật site rongchaua.net Code:
<?php
@ob_end_clean();
// Only allow mp3 files
$allowedFileType = "mp3";

// Set the filename based on the URL's query string
$theFile = $_REQUEST['theFile'];

// Get info about the file
$f = pathinfo($theFile);

// Check the extension against allowed file types
if(strtolower($f['extension']) != strtolower($allowedFileType)) exit;

// Make sure the file exists
if (!file_exists($theFile)) exit;

// Set headers
header("Pragma: public");
header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: private");
header("Content-Transfer-Encoding: binary");
header("Content-Type: audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
// Length required for Internet Explorer
header("Content-Length: ".@urldecode(@filesize($theFile)));

// Open file
if (($f = fopen($theFile, 'rb')) === false) exit;

// Push file
while (!feof($f)) {
    echo fread($f, (1*(1024*1024)));
    flush();
    @ob_flush();
}

// Close file
fclose($f);
exit;

?>
]]>
/hvaonline/posts/list/39745.html#244811 /hvaonline/posts/list/39745.html#244811 GMT
Xin xem xét dùm bảo mật site rongchaua.net

conmale wrote:
php_admin_value[open_basedir] = /home/someone/public_html/ php_admin_value[doc_root] = /home/someone/public_html/ php_admin_value[upload_tmp_dir] = /home/someone/public_html/tmp php_admin_value[upload_max_filesize] = 8M php_flag[cgi.force_wwwect] = 1 Làm như vậy, mọi ý định "remote include" đều không thể thực hiện được. Tất nhiên, nếu webmaster mà tự ý upload một cái proxy.php củ chuối nào đó đầy lỗ hổng thì có trời mới cứu được vì đây không phải là lỗi của php hoặc php-fpm hoặc apache mà do chính người quản trị.  
Chào bác. Cảm ơn bác đã phân tích chi tiết. Em đã rõ cái "isolation" nhờ php-fpm mà bác nói, nhưng trở lại vấn đề file "proxy.php" (vấn đề theo bác là "có trời mới cứu được"). Code:
$handle = fopen($daurl, "r");
$buffer = fgets($handle, 4096);
echo $buffer;
Nếu webmaster đã "isolate" open_basedir, doc_root, upload_tmp, cấm .htaccess, php-fpm, cấm eval() của php... thì với lỗi không kiểm soát fopen, file_get_contents.... này của proxy.php sẽ gây tổn hại gì cho hệ thống? (cứ cho là thông tin db sẽ bị mất, nhưng db đó không chấp nhận remote connection thì làm sao, nếu là mã nguồn có bị lộ thì hệ thống cũng đâu bị ảnh hưởng gì?)]]>
/hvaonline/posts/list/39745.html#245081 /hvaonline/posts/list/39745.html#245081 GMT
Xin xem xét dùm bảo mật site rongchaua.net

cino wrote:
Chào bác. Cảm ơn bác đã phân tích chi tiết. Em đã rõ cái "isolation" nhờ php-fpm mà bác nói, nhưng trở lại vấn đề file "proxy.php" (vấn đề theo bác là "có trời mới cứu được"). Code:
$handle = fopen($daurl, "r");
$buffer = fgets($handle, 4096);
echo $buffer;
Nếu webmaster đã "isolate" open_basedir, doc_root, upload_tmp, cấm .htaccess, php-fpm, cấm eval() của php... thì với lỗi không kiểm soát fopen, file_get_contents.... này của proxy.php sẽ gây tổn hại gì cho hệ thống? (cứ cho là thông tin db sẽ bị mất, nhưng db đó không chấp nhận remote connection thì làm sao, nếu là mã nguồn có bị lộ thì hệ thống cũng đâu bị ảnh hưởng gì?) 
Ở trên bồ đưa ra một loạt "cấm" thì có nghĩa bồ đã có một số biện pháp ngăn ngừa rồi. Càng nhiều ngăn ngừa, càng giảm thiểu tác hại. - Nếu đã ấn định mức độ isolation chặt chẽ thì việc bị fopen cũng sẽ bị giới hạn. Đặc biệt là giới hạn "fopen" đến những chỗ "nhạy cảm" trên hệ thống. - Nếu không cho truy cập csdl từ xa thì dẫu có lộ db's username và password cũng không thể truy nhập được. - Nếu mã nguồn bị lộ và trong cái bị lộ này lại "lộ" ra những điểm yếu nào đó có thể khai thác thì sự ảnh hưởng tuỳ thuộc vào những điểm yếu ấy có trầm trọng hay không mà thôi. Đối với bảo mật, một dịch vụ mà để chường source, configuration và csdl thì tính bảo mật đã bị huỷ hoại. Nên nhớ, source (open) được bày trên Internet hoàn toàn có tính chất khác với source của một trang web đang hoạt động mà lại được bày ra do tắc trách.]]>
/hvaonline/posts/list/39745.html#245083 /hvaonline/posts/list/39745.html#245083 GMT
Xin xem xét dùm bảo mật site rongchaua.net

conmale wrote:
Nên nhớ, source (open) được bày trên Internet hoàn toàn có tính chất khác với source của một trang web đang hoạt động mà lại được bày ra do tắc trách. 
Cảm ơn bác rất nhiều. -c]]>
/hvaonline/posts/list/39745.html#245092 /hvaonline/posts/list/39745.html#245092 GMT
Xin xem xét dùm bảo mật site rongchaua.net /hvaonline/posts/list/39745.html#246523 /hvaonline/posts/list/39745.html#246523 GMT Xin xem xét dùm bảo mật site rongchaua.net /hvaonline/posts/list/39745.html#250574 /hvaonline/posts/list/39745.html#250574 GMT