看到不少朋友在后渗透阶段的时候比较没有思路,我决定自己出一套提权的总结,归纳我所学习的。 提权,这里说的提权实际上指的是纵向的提权,从webshell权限到system权限 0x01 引言 通常,我们在渗透过程中很有可能只获得了一个系统的Guest或User权限。低的权限级别将会使我们受到很多的限制,所以必须将访问权限从Guset提升到User,再到Administrator,最后到SYSTEM级别。 渗透的最终目的是获取服务器的最高权限,即Windows操作系统中管理员账号的权限,或LINUX操作系统中root账户权限。 提升权限的方式分为两类。 l 纵向提权:低权限角色获得高权限角色的权限。比如,一个webshell权限通过提权之后拥有了管理员的权限,那么这种提权就是纵向提权。 l 横向提权:获取同级别角色的权限。比如,通过已经攻破的系统A获取B的账户密码。 一般在web渗透中我们都是通过纵向提权,而后渗透也就是内网渗透或者域渗透了。 这一步的渗透还是少不了信息的收集,信息的收集一般用windows的一些命令来进行收集,进大马,跑目录….还记得当年的提权三字经么,简直是信仰。当然有些东西现在仍然适用。 首先要介绍的是windows常用的命令 1、whoami 如果是我,我一定会在拿到webshell或者进入大马的时候用这个命令 这个命令是干嘛的呢,我想百度会告诉大家答案。 不排除有傻到极点的管理员权限配置不当,或者有一些简便的web容器,比如小旋风啊,phpstudy等等都是管理员(administrator)权限,如果一开始是管理员权限,那我我们几乎可以对这个系统进行操作,根本不用花费力气去提权什么的。只需想办法远程桌面连接,或者上个远控等操作,然后就可以为所欲为了。 2、tasklist 用来显示运行在本地或远程计算机上的所有进程,带有多个执行参数。 tasklist /svc 显示每个进程中的服务信息 至于其他的参数,如果有必要大家可以自己去挖掘使用,我使用得比较少。 为什么第二个命令是这个呢?在这个杀毒与waf横行的年代,我只想看看这个计算机上运行什么服务。不然内核溢出要么做什么操作都被限制,而你依然一无所知。 感觉一些常见的进程名还是要记住的, winlogon.exe 用户登录进程 explorer.exe 资源管理器 Svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称 Safedog.exe 安全狗 360tray.exe 360安全卫士的进程 avp.exe 的系统进程是 KMService.exe 金山毒霸的系统进程 STRAY.EXE和RAVMOND 瑞星的进程 PinyinUp.exe 搜狗升级进程 等等,就不一一列举了 3、netstat Netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。 这个也是最常用的几个命令之一,一般用netstat -an 来显示所有连接的端口并用数字表示。 但是我更喜欢用netstat –ano,这样子连它的PID也出来了。 PID是进程运行时系统随机为进程分配的,并不代表专门的进程。
来个实例,比如说找3389的端口。 假设目标的机器开启了远程桌面服务(Remote Desktop Protocol,简称RDP),但是RDP端口被改了,又假设注册表不能读取,那么我觉得这就是一个好方法了。 首先先用tasklist /svc |findstr "svchost.exe"这条命令 这里介绍下findstr这个命令,和Linux下的find差不多,很好用的。 它的用途是查找指定的一个或多个文件文件中包含(或通过参数 /V来控制不包含)某些特定字符串的行,并将该行完整的信息打印出来,或者打印查询字符串所在的文件名。而且这个命令是支持正则的。 我们这样就找到了包含svchost.exe的进程和PID号了。 Ok,我测试的机器是2003,那么RDP服务对面的PID是2648,也就是TermService这个服务对应的。 是9999,我特意改的,只为了验证。 如果是win7以上的系统,那么就是关注CryptSvc, Dnscache, LanmanWorkstation 这个服务 4、ipconfig ipconfig可用于显示当前的TCP/IP配置的设置值 俗气一点的说法,就是查看ip 5、net user 这个可以说是最基本的了,可以参考百度自行学习。 总结到最后的一条命令是:net user vaf vaf /add&net localgroup administrators vaf /add 5、systeminfo 这条命令也是基础的命令之一,该命令是Windows中用于显示关于计算机及其操作系统的详细配置信息,包括操作系统配置、安全信息、产品 ID 和硬件属性,如 RAM、磁盘空间和网卡和补丁信息等。 命令返回的结果如下图 很明显,这个返回的信息太过驳杂,太多了。 我们可以这样子来: systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /B 在一行的开始配对模式。 /C:string 使用指定字符串作为文字搜索字符串。 我们就可以先看看我们连接的什么类型的操作系统,由于中文环境下,"OS Name"为"OS 名称","OS Version"为"OS 版本" 所以我们的命令为:systeminfo | findstr /B /C:" OS 名称" /C:"OS 版本" 修补程序: systeminfo | findstr /i "kb" 6、route print 顾名思义,打印路由表 6、WMIC的艺术 Windows的命令还有很多,这里只介绍了,常用的,以后在渗透中慢慢学习和积累~~ 之前在国外的一个哥们博客看看到了一篇文章,讲的是WMIC在渗透中的使用。 wmic(Windows Management Instrumentation Command-Line),是因为它是Windows平台下最有用的命令行工具。 WMIC在信息搜集和后渗透测试阶段非常实用,这里分享两个学习的链接: http://www.computerhope.com/wmic.htm http://synjunkie.blogspot.com/2008/03/command-line-ninjitsu.html 低版本的windows默认的配置是不允许使用WMIC命令的,除非你是管理员组成员。经过我的测试,在XP下低权限用户是不能使用WMIC命令,但是在Windows 7 和Windows8下,低权限用户可以使用WMIC,且不用更改任何设置。这正是我们使用WMIC搜集目标机器信息的前提,实际上Win10也是可以的~~ wmic /? 通过下面这条命令来查看补丁状况: wmic qfe get Caption,Description,HotFixID,InstalledOn 这个脚本可以放在目标机器上,调用WMIC来提取下面信息(进程,服务,用户,用户组,网络连接,硬盘信息,网络共享信息,已安装补丁,启动项,已安装的软件,操作系统的相关信息) 接下来的这条命令可以搜索system32下的所有名字包含以下几个关键字的文件,当然你可以手动指定关键字。
| C:\Windows\system32> dir /s *pass* == *cred* == *vnc* == *.config* |
这条是搜索某些特定的文件类型,这可能搜索到大量的结果: 1 | C:\Windows\system32> findstr /si password *.xml *.ini *.txt |
相似的,接下来的两条命令都是用来搜索注册表的,keyword是password,你可以替换成任何你想要的。 1 2 | C:\Windows\system32> reg query HKLM /f password /t REG_SZ /s C:\Windows\system32> reg query HKCU /f password /t REG_SZ /s |
7、powershell Powershell其实在信息收集中用得比较少,后续提权的过程中,或者后渗透中用的比较多,以后再说
|