Good in study, attitude and health

  • Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)利用测试

    0x00 前言 2019年8月10日,Ozkan(@ehakkus)在DEFCON AppSec Village公开了一个0 day,1.930以下版本的Webmin存在远程代码执行漏洞,文章地址如下: https://pentest.com.tr/exploits/DEFCON-Webmin-1920-Unauthenticated-Remote-Command-Execution.html 我对这个漏洞进行了跟踪研究,本文将要记录测试过程,根据漏洞原理使用Python编写一个POC,并给出防御建议 0x01 简介 本文将要介绍以下内容: 漏洞简介 搭建测试环境 使用Burp Suite复现漏洞 使用Python编写POC 0x02 漏洞简介 Webmin是基于Web的Unix系统管理工具,简单理解:使用Webmin能够通过浏览器远程管理Unix系统的主机 1.930以下版本的Webmin存在远程代码执行漏洞,当Webmin的Password expiry policy设置为Prompt users with expired passwords to enter a new one时(默认设置为Always deny users with expired passwords),通过构造特殊格式的POST包,能够实现远程代码执行 0x03 搭建测试环境和漏洞复现 测试系统: Centos7 x64 IP:192.168.112.181 1.安装perl和依赖库 yum -y install perl yum -y install...

  • 利用IIS的端口共享功能绕过防火墙

    0x00 前言 我最近在思考这样一个问题: Windows服务器开启了IIS服务,防火墙仅允许80或443端口进行通信,那么如何在不使用webshell的前提下,实现对该服务器的远程管理?更进一步,如果只有低权限,有没有办法呢? 0x01 简介 本文将要介绍以下内容: HTTP.sys和端口共享 WinRM服务 HTTP Server API 针对80和443端口的利用方法 针对高权限和低权限的利用方法 检测方法 0x02 基本概念 1.HTTP.sys和端口共享 微软在Windows 2003 Server加入了内核驱动程序(Http.sys),用于侦听http流量并根据URL进行处理,允许任意用户进程共享专用于HTTP流量的TCP端口 也就是说,通过HTTP.sys,多个进程将能够侦听同一端口上的HTTP流量 可以使用Netsh命令来查询和配置HTTP.sys设置和参数,参考资料如下: https://docs.microsoft.com/en-us/windows/win32/http/netsh-commands-for-http 列出所有URL的DACL,命令如下: netsh http show urlacl 系统默认包括10个DACL,其中的两个对应WinRM服务,具体信息如下: Reserved URL : http://+:5985/wsman/ User: NT SERVICE\WinRM Listen: Yes Delegate: No User: NT SERVICE\Wecsvc Listen: Yes Delegate: No SDDL: D:(A;;GX;;;S-1-5-80-569256582-2953403351-2909559716-1301513147...

  • 对APT34泄露工具的分析——Jason

    0x00 前言 Jason是由Lab Dookhtegan在2019年6月3日泄露的另一款工具,用于Exchange账户的暴力破解 然而,泄露的这款工具虽然包括源码,但存在一些bug,无法正常使用 本文不会分析Jason和APT34之间的关联,仅在技术研究的角度,修复Jason的bug,恢复Jason的功能,分析使用的技术,同其他开源工具做横向比较 注: 之前关于APT34的分析文章: 《对APT34泄露工具的分析——PoisonFrog和Glimpse》 《对APT34泄露工具的分析——HighShell和HyperShell》 0x01 简介 本文将要介绍以下内容: Jason的开源资料 修复Jason的bug 实际测试Jason 同其他开源工具的横向比较 0x02 Jason的开源资料 Jason最早泄露于Telegram的频道:https://t.me/lab_dookhtegana p3pperp0tts将其上传至Github,地址如下: https://github.com/p3pperp0tts/APT34/tree/master/Jason 文件夹decompiled_code内为Jason的源码 Jason采用EWS Managed API来实现对Exchange资源的访问 注: 关于EWS Managed API的使用细节可参考之前的文章《Exchange Web Service(EWS)开发指南》 经过简单的修复,我在VS2015下能够编译成功 但在测试环境中,Jason无法识别正确的邮箱用户名和口令,所有测试结果均失败 0x03 修复Jason的bug 编译环境: VS2015 为了恢复正常功能,源代码需要修改以下4个位置 1.添加Microsoft.Exchange.WebServices.dll的引用 我这里是将Microsoft.Exchange.WebServices.dll放在工程的同级目录下,并做了引用 2.证书信任策略的bug修正 位置:Form1.cs 原代码: ServicePointManager.ServerCertificateValidationCallback = ((object <p0>, X509Certificate <p1>,...

  • 域渗透——AdminSDHolder

    0x00 前言 AdminSDHolder是一个特殊的AD容器,具有一些默认安全权限,用作受保护的AD账户和组的模板 Active Directory将采用AdminSDHolder对象的ACL并定期将其应用于所有受保护的AD账户和组,以防止意外和无意的修改并确保对这些对象的访问是安全的 如果能够修改AdminSDHolder对象的ACL,那么修改的权限将自动应用于所有受保护的AD账户和组,这可以作为一个域环境权限维持的方法 本将要参考公开资料,结合自己的理解,介绍利用方法,补全清除ACL的方法,分析检测方法 0x01 简介 本文将要介绍以下内容: 利用思路 如何枚举受保护的AD账户和组中的信息 如何查询AdminSDHolder对象的ACL 如何向AdminSDHolder对象添加ACL 删除AdminSDHolder中指定用户的ACL 完整利用方法 检测建议 0x02 利用思路 1.枚举受保护的AD账户和组中的信息 通常为域内高权限用户,在我的Server2008R2下包含以下组: Administrators Print Operators Backup Operators Replicator Domain Controllers Schema Admins Enterprise Admins Domain Admins Server Operators Account Operators Read-only Domain Controllers Organization Management Exchange Trusted Subsystem 2.向AdminSDHolder对象添加ACL 例如,添加用户testa对AdminSDHolder的完全管理权限,默认60分钟以后会自动推送权限配置信息,testa随即获得对所有受保护帐户和组的完全管理权限 3.获得对整个域的控制权限...

  • 域渗透——AS-REPRoasting

    0x00 前言 AS-REP Roasting同Kerberoasting类似,如果满足条件,就能够获得用户口令的hash,再结合hashcat进行破解,最后能够还原出用户的明文口令。 本文将要参考公开资料,结合自己的理解,介绍AS-REP Roasting的利用方法,最后给出防御建议。 0x01 简介 本文将要介绍以下内容: AS-REP Roasting的原理 AS-REP Roasting的利用条件 AS-REP Roasting的利用方法 破解hash的方法 防御建议 0x02 AS-REP Roasting 1.简介 对于域用户,如果设置了选项”Do not require Kerberos preauthentication”,此时向域控制器的88端口发送AS-REQ请求,对收到的AS-REP内容重新组合,能够拼接成”Kerberos 5 AS-REP etype 23”(18200)的格式,接下来可以使用hashcat对其破解,最终获得该用户的明文口令 2.利用前提 域用户设置了选项”Do not require Kerberos preauthentication” 通常情况下,该选项默认不会开启 3.利用思路 通常在域渗透中用来维持权限 需要先获得对指定用户的GenericWrite权限,利用思路如下: 开启用户选项”Do not require Kerberos preauthentication” 导出hash并破解 关闭用户选项”Do not require Kerberos...

  • 域渗透——DCSync

    0x00 前言 DCSync是域渗透中经常会用到的技术,本文会对开源的资料进行整理,结合自己的经验,总结利用和防御检测的方法 0x01 简介 本文将要介绍以下内容: 利用DCSync导出域内所有用户hash的方法 利用DCSync在域内维持权限的方法 自动化检测DCSync后门的方法 0x02 利用DCSync导出域内所有用户hash的方法 DCSync是mimikatz在2015年添加的一个功能,由Benjamin DELPY gentilkiwi和Vincent LE TOUX共同编写,能够用来导出域内所有用户的hash 利用条件: 获得以下任一用户的权限: Administrators组内的用户 Domain Admins组内的用户 Enterprise Admins组内的用户 域控制器的计算机帐户 利用原理: 利用DRS(Directory Replication Service)协议通过IDL_DRSGetNCChanges从域控制器复制用户凭据 参考资料: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/f977faaa-673e-4f66-b9bf-48c640241d47 实现代码: https://github.com/gentilkiwi/mimikatz/blob/master/mimikatz/modules/lsadump/kuhl_m_lsadump_dc.c#L27 利用方法: 1.使用mimikatz 导出域内所有用户的hash: mimikatz.exe "lsadump::dcsync /domain:test.com /all /csv" exit 导出域内administrator帐户的hash: mimikatz.exe "lsadump::dcsync /domain:test.com /user:administrator /csv" exit 2.powershell实现 https://gist.github.com/monoxgas/9d238accd969550136db...

  • 利用AlwaysInstallElevated提权的测试分析

    0x00 前言 利用AlwaysInstallElevated提权是一个2017年公开的技术,Metasploit和PowerUp都提供了利用方法 我在研究的过程中,发现Metasploit的利用方法存在一些不足,我遇到了和其他公开文章描述不一样的情况 于是我做了进一步的研究,本文将要介绍我遇到的问题和解决方法 0x01 简介 本文将要介绍以下内容: 常规利用方法 我在测试中遇到的问题 解决方法 扩展利用思路 0x02 常规利用方法 AlwaysInstallElevated是一个组策略配置,如果启用,那么将允许普通用户以SYSTEM权限运行安装文件(msi) 启用方法: 需要修改以下两个组策略: Computer Configuration\Administrative Templates\Windows Components\Windows Installer User Configuration\Administrative Templates\Windows Components\Windows Installer 设置成Enabled,如下图 注: 无法通过secedit.exe在命令行下修改以上两个组策略 命令行下的启用方法: 创建以下两个注册表项: HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer,AlwaysInstallElevated,1 HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer,AlwaysInstallElevated,1 cmd的命令如下: reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1 reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t...

  • Shellcode生成工具Donut测试分析

    0x00 前言 Donut是一个shellcode生成工具,可以将.NET程序集转换为shellcode。这是对execute-assembly的进一步利用,隐蔽性更高,可扩展性更强。 结合byt3bl33d3r的SILENTTRINITY,将其转换为shellcode并进行注入,适用性更广。 本文将会对Donut进行测试,逐个分析Donut工程中的代码,总结这个工具的特点。 注: 本文测试的版本使用的是Donut v0.9,新版本将会添加更多的功能,值得持续关注 Donut地址: https://github.com/TheWover/donut 介绍Donut细节的文章: https://thewover.github.io/Introducing-Donut/ https://modexp.wordpress.com/2019/05/10/dotnet-loader-shellcode/ https://modexp.wordpress.com/2019/06/03/disable-amsi-wldp-dotnet/ 0x01 简介 本文将要介绍以下内容: 相关技术介绍 源码结构 实际测试 利用分析 0x02 相关技术介绍 1.Assembly.Load 用于在当前进程中加载.NET程序集,无法注入其他进程 .NET程序集的测试代码: namespace ConsoleApplication1 { public class Program { public static void test() { System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "c:\\windows\\system32\\calc.exe"; p.Start(); } static void...

  • 从内存加载.NET程序集(execute-assembly)的利用分析

    0x00 前言 Cobalt Strike 3.11中,加入了一个名为”execute-assembly”的命令,能够从内存中加载.NET程序集。这个功能不需要向硬盘写入文件,十分隐蔽,而且现有的Powershell利用脚本能够很容易的转换为C#代码,十分方便。 本文将会对”execute-assembly”的原理进行介绍,结合多个开源代码,介绍实现方法,分析利用思路,最后给出防御建议 0x01 简介 本文将要介绍以下内容: 基础知识 正常的实现方法 开源利用代码分析 利用思路 防御建议 0x02 基础知识 1.CLR 全称Common Language Runtime(公共语言运行库),是一个可由多种编程语言使用的运行环境 CLR是.NET Framework的主要执行引擎,作用之一是监视程序的运行: 在CLR监视之下运行的程序属于”托管的”(managed)代码 不在CLR之下、直接在裸机上运行的应用或者组件属于”非托管的”(unmanaged)的代码 2.Unmanaged API 参考资料: https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/ 用于将.NET 程序集加载到任意程序中的API 支持两种接口: ICorRuntimeHost Interface ICLRRuntimeHost Interface 3.ICorRuntimeHost Interface 参考资料: https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/hosting/icorruntimehost-interface 支持v1.0.3705, v1.1.4322, v2.0.50727和v4.0.30319 4.ICLRRuntimeHost Interface 参考资料: https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/hosting/iclrruntimehost-interface 支持v2.0.50727和v4.0.30319 在.NET Framework 2.0中,ICLRRuntimeHost用于取代ICorRuntimeHost...

  • Mimikatz中SSP的使用

    0x00 前言 Mimikatz中的mimilib(ssp)和misc::memssp同sekurlsa::wdigest的功能相同,都能够从lsass进程中提取凭据,通常可获得已登录用户的明文口令(Windows Server 2008 R2及更高版本的系统默认无法获得),但实现原理不同,所以绕过高版本限制的方法也不同 我对XPN的第二篇文章进行了学习,对这个技术有了新的认识,于是尝试对这个技术进行总结,添加一些个人的理解 XPN的博客: https://blog.xpnsec.com/exploring-mimikatz-part-2/ 0x01 简介 本文将要介绍以下内容: SSP简介 如何开发SSP 如何枚举和删除SSP 添加SSP的三种方法 memssp修改内存的方法 0x02 SSP简介 参考资料: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn751052(v=ws.11) SSP,全称Security Support Provider,又名Security Package SSPI,全称Security Support Provider Interface,是Windows系统在执行认证操作所使用的API 简单的理解为SSPI是SSP的API接口 SSP默认包括以下几种: Kerberos Security Support Provider NTLM Security Support Provider Digest Security Support Provider Schannel Security Support Provider Negotiate Security Support...