Nmap Security Scanner
*Intro
*Ref Guide
*Install Guide
*Download
*Changelog
*Book
*Docs
Security Lists
*Nmap Hackers
*Nmap Dev
*Bugtraq
*Full Disclosure
*Pen Test
*Basics
*More
Security Tools
*Pass crackers
*Sniffers
*Vuln Scanners
*Web scanners
*Wireless
*Exploitation
*Packet crafters
*More
Site News
Site Search:
Exploit World
Advertising
About/Contact
Credits
Sponsors:




bugtraq logo Bugtraq mailing list archives

Re: Solaris priocntl exploit
From: Casper Dik <Casper.Dik () Sun COM>
Date: Thu, 28 Nov 2002 01:26:40 +0100



The module's name is a relative path, priocntl will search the module file
in only /kernel/sched and /usr/kernel/sched/ dirs.
but unfortunately, priocntl() never check '../' in pc_clname arg
we can use '../../../tmp/module' to make priocntl() load a module from anywhere


The "pc_clname[]" argument is limited in size; to prevent this particular
bug from being exploited you could:


      for dir in /kernel /usr/kernel
      do
              cd $dir
              mkdir -p a/b/c/d/e/f/g/h
              mv sched a/b/c/d/e/f/g/h
              ln -s a/b/c/d/e/f/g/h/sched .
      done


Just a small amendment; the code also doesn't add a trailing NUL to the
pathname copied from user space, so we actually need to take care
about the rest of the size of the structure.  (16 + 32 bytes; i.e.,
16 levels of ../)

So this should really keep the bad kernel module out:

        for dir in /kernel /usr/kernel
        do
                cd $dir
                mkdir -p a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p
                mv sched a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p
                ln -s a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/sched .
        done

Casper


  By Date           By Thread  

Current thread:
[ Nmap | Sec Tools | Mailing Lists | Site News | About/Contact | Advertising | Privacy ]