-
域渗透——利用GPO中的脚本实现远程执行
0x00 前言 在之前的文章《域渗透——利用GPO中的计划任务实现远程执行》介绍了通过域组策略(Group Policy Object)远程执行计划任务的方法,本文将要介绍类似的另外一种方法:通过域组策略(Group Policy Object)的脚本实现远程执行。 0x01 简介 本文将要介绍以下内容: 通过Group Policy Management Console (GPMC) 实现脚本的远程执行 通过命令行实现脚本的远程执行 新建GPO实现远程执行 修改已有的GPO,实现远程执行 实现细节 0x02 通过Group Policy Management Console (GPMC) 实现脚本的远程执行 1.创建GPO 在域控制器上,位置: Administrative Tools -> Group Policy Management 如果想要作用于整个域,选择域test.com,右键,选择Create a GPO in this domain,and Link it here...,如下图 如果想要作用于指定对象,需要选择提前创建好的OU,右键,选择Create a GPO in this domain,and...
-
FortiOS REST API开发指南
0x00 前言 本文将要介绍FortiOS REST API的相关用法,分享脚本开发的实现细节。 0x01 简介 本文将要介绍以下内容: Fortigate环境搭建 FortiOS REST API两种登录方式 常用操作 常用功能 0x02 Fortigate环境搭建 这里以Fortigate作为FortiOS REST API的测试环境,安装FortiGate for VMware 参考资料:https://getlabsdone.com/how-to-install-fortigate-on-vmware-workstation/ 1.下载FortiGate for VMware安装包 下载地址:https://support.fortinet.com/ 选择Support -> VMImages,Select Product: FortiGate,Select Platform: VMWare ESXi 注: 7.2之前的版本可使用15天,7.2之后的版本需要账号注册 2.导入ova文件 打开FortiGate-VM64.ova导入VMWare 3.配置网卡 默认添加了10个网卡,我们只需要保留3个,删除后面的7个,3个网卡的具体配置如下: (1)管理网卡 依次选择VMware workstation -> Edit -> Virtual Network Editor,点击Change settings,点击Add...
-
Zimbra-SOAP-API开发指南6——预认证
0x00 前言 本文将要继续扩充开源代码Zimbra_SOAP_API_Manage的实用功能,添加预认证的登录方式,分享开发细节。 0x01 简介 本文将要介绍以下内容: 预认证 计算preauth SOAP实现 开源代码 0x02 预认证 参考资料:https://wiki.zimbra.com/wiki/Preauth 简单理解:通过preAuthKey结合用户名、时间戳和到期时间,计算得出的HMAC作为身份验证的令牌,可用于用户邮箱和SOAP登录 默认配置下,Zimbra未启用预认证的功能,需要手动开启 (1)开启预认证并生成PreAuthKey 命令如下: /opt/zimbra/bin/zmrov generateDomainPreAuthKey <domain> 其中,<domain>对应当前Zimbra服务器的域名,可通过执行命令/opt/zimbra/bin/zmprov gad获得,测试环境的输出如下: mail.test.com 对应测试环境的命令为:/opt/zimbra/bin/zmprov generateDomainPreAuthKey mail.test.com 测试环境的输出如下: preAuthKey: fbf0ace37c59e3893352c656eda3d7f25c0ce0baadc9cbf22eb03f3b256f17a7 (2)读取已有的PreAuthKey 命令如下: /opt/zimbra/bin/zmprov gd <domain> zimbraPreAuthKey 对应测试环境的命令为:/opt/zimbra/bin/zmprov gd mail.test.com zimbraPreAuthKey 测试环境的输出如下: zimbraPreAuthKey: fbf0ace37c59e3893352c656eda3d7f25c0ce0baadc9cbf22eb03f3b256f17a7 注: 如果Zimbra存在多个域名,那么会有多个PreAuthKey 0x03 计算preauth 参考资料中给出了多种计算preauth的示例,但是Python的实现代码不完整,这里补全Python3下的完整实现代码,详细代码如下: from time import...
-
渗透技巧——通过WSUS进行横向移动
0x00 前言 在内网渗透中,当我们获得了WSUS服务器的控制权限后,可以通过推送补丁的方式进行横向移动。这个利用方法最早公开在BlackHat USA 2015。本文将要整理这个利用方法的相关资料,结合思路思路,得出行为检测的方法。 参考资料: https://www.blackhat.com/docs/us-15/materials/us-15-Stone-WSUSpect-Compromising-Windows-Enterprise-Via-Windows-Update.pdf https://www.gosecure.net/blog/2020/09/03/wsus-attacks-part-1-introducing-pywsus/ https://labs.nettitude.com/blog/introducing-sharpwsus/ 0x01 简介 本文将要介绍以下内容: 环境搭建 利用思路 实现工具 行为检测 0x02 环境搭建 本节介绍WSUS服务器搭建的过程,通过配置客户端实现补丁的推送 参考资料: https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-r2-and-2008/dd939822(v=ws.10) 1.WSUS服务器搭建 WSUS服务器需要安装在Windows Server操作系统 (1)安装 在添加角色和功能页面,选择Windows Server Update Services 需要指定补丁更新包的存放路径,这里可以设置为C:\WSUS (2)配置 打开Windows Server Update Services进行配置 配置时选择默认选项即可,在选择Download update information from Microsoft Update时,点击Start Connecting,如果报错提示An HTTP error has occurred,经过我的多次测试,可以采用以下方法解决: 关闭当前页面 进入Windows Server Update...
-
Horde Groupware Webmail漏洞调试环境搭建
0x00 前言 本文记录从零开始搭建Horde Groupware Webmail漏洞调试环境的细节。 0x01 简介 本文将要介绍以下内容: Horde Groupware Webmail安装 Horde Groupware Webmail漏洞调试环境配置 常用知识 0x02 Horde Groupware Webmail安装 参考资料: https://www.horde.org/apps/webmail/docs/INSTALL https://github.com/horde/base/blob/master/doc/INSTALL.rst https://geekrewind.com/install-horde-groupware-webmail-on-ubuntu-16-04-18-04-with-apache2/ https://neoserver.site/help/step-step-installation-instructions-postfix-and-dovecot-ubuntu 简单来说,安装Horde Groupware Webmail时需要配置以下环境: MySQL数据库 Apache2 php7.2 Dovecot 操作系统选择Ubuntu18,这里不能选择Ubuntu16,因为Ubuntu16不支持php7.2 本文的安装过程做了适当精简,完整过程可根据参考资料进行学习,具体安装过程如下: 1.安装MariaDB Database Server (1)安装 安装命令:sudo apt-get -y install mariadb-server mariadb-client (2)配置 配置命令:sudo mysql_secure_installation 配置如下: Enter current password...
-
Password Manager Pro利用分析——数据解密
0x00 前言 在上篇文章《Password Manager Pro漏洞调试环境搭建》介绍了漏洞调试环境的搭建细节,经测试发现数据库的部分数据做了加密,本文将要介绍数据解密的方法。 0x01 简介 本文将要介绍以下内容: 数据加密的位置 解密方法 开源代码 实例演示 0x02 数据加密的位置 测试环境同《Password Manager Pro漏洞调试环境搭建》保持一致 数据库连接的完整命令:"C:\Program Files\ManageEngine\PMP\pgsql\bin\psql" "host=127.0.0.1 port=2345 dbname=PassTrix user=pmpuser password=Eq5XZiQpHv" 数据库连接成功,如下图 常见的数据加密位置有以下三个: (1)Web登录用户的口令salt 查询Web登录用户名的命令:select * from aaauser; 查询Web登录用户口令的命令:select * from aaapassword; 结果如下图 password的加密格式为bcrypt(sha512($pass)) / bcryptsha512 *,对应Hashcat的Hash-Mode为28400 其中,salt项被加密 (2)数据库高权限用户的口令 查询命令:select * from DBCredentialsAudit; 输出如下: username | password...
-
Password Manager Pro漏洞调试环境搭建
0x00 前言 本文记录从零开始搭建Password Manager Pro漏洞调试环境的细节。 0x01 简介 本文将要介绍以下内容: Password Manager Pro安装 Password Manager Pro漏洞调试环境配置 数据库连接 0x02 Password Manager Pro安装 1.下载 最新版下载地址:https://www.manageengine.com/products/passwordmanagerpro/download.html 旧版本下载地址:https://archives2.manageengine.com/passwordmanagerpro/ 最新版默认可免费试用30天,旧版本在使用时需要合法的License 注: 我在测试过程中,得出的结论是如果缺少合法的License,旧版本在使用时只能启动一次,第二次启动时会提示没有合法的License 2.安装 系统要求:https://www.manageengine.com/products/passwordmanagerpro/system-requirements.html 对于Windows系统,需要Win7以上的系统,Win7不支持 默认安装路径:C:\Program Files\ManageEngine\PMP 3.测试 安装成功后选择Start PMP Service 访问https://localhost:7272 默认登录用户名:admin 默认登录口令:admin 如下图 0x03 Password Manager Pro漏洞调试环境配置 本文以Windows环境为例 1.Password Manager Pro设置 查看服务启动后相关的进程,如下图 java进程的启动参数: "..\jre\bin\java" -Dcatalina.home=.....
-
Zimbra-SOAP-API开发指南5——邮件转发
0x00 前言 本文将要继续扩充开源代码Zimbra_SOAP_API_Manage的功能,通过Zimbra SOAP API修改配置实现邮件转发,分享开发细节。 0x01 简介 本文将要介绍以下内容: 添加邮件转发 查看邮件转发的配置 查看文件夹共享的配置 开源代码 0x02 添加邮件转发 Zimbra支持将收到的邮件额外转发至另一邮箱,通过Web界面的操作方法如下: 登录邮箱后,依次选择Preferences->Mail,如下图 设置转发邮箱后,点击Save 如果想要转发多个邮箱,可以使用,进行分割,同时转发至两个邮箱的示例:test1@test.com,test2@test.com 接下来,通过抓包的方式分析实现流程,进而使用程序实现这部分功能 抓包获得的soap格式示例: <soap:Body> <BatchRequest xmlns="urn:zimbra" onerror="stop"> <ModifyPrefsRequest xmlns="urn:zimbraAccount" requestId="0"> <pref name="zimbraPrefMailForwardingAddress">test1@test.com</pref> </ModifyPrefsRequest> </BatchRequest> </soap:Body> 实现代码示例: def addforward_request(uri,token): print("[*] Input the mailbox to forward:") print(" Eg :test1@test.com,test2@@test.com") mailbox = input("[>]: ") request_body="""<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">...
-
Zimbra-SOAP-API开发指南4——邮件导出和文件夹共享
0x00 前言 本文将要继续扩充开源代码Zimbra_SOAP_API_Manage的功能,实现邮件导出和文件夹共享,分享开发细节。 0x01 简介 本文将要介绍以下内容: 邮件导出 文件夹共享 开源代码 0x02 邮件导出 Zimbra支持导出当前邮箱的所有邮件,通过Web界面的操作方法如下: 登录邮箱后,依次选择Preferences->Import/Export,如下图 接下来,通过抓包的方式分析实现流程,进而使用程序实现这部分功能 1.默认配置导出邮件 默认配置下,会导出所有邮件,以压缩包的形式保存 访问URL示例: https://192.168.1.1/home/admin%40test.com/?fmt=tgz&filename=All-2022-07-27-181056&emptyname=No+Data+to+Export&charset=UTF-8&callback=ZmImportExportController.exportErrorCallback__export1 参数解析: admin%40test.com为邮箱用户,可以用~替代 filename=All-2022-07-27-181056为存在记录时保存的文件名,2022-07-27-181056对应的时间格式为年-月-日-时分秒,时间为带时区的时间,需要计算时差 emptyname=No+Data+to+Export为空记录时保存的文件名 在程序实现上,需要同Web操作的格式保持一致,代码细节: (1)构造保存的文件名 from time import localtime, strftime exporttime = strftime("%Y-%m-%d-%H%M%S", localtime()) filename = "All-" + str(exporttime) print(filename) (2)保存文件 保存文件时使用binary写入 with open(path, 'wb+') as file_object: file_object.write(r.content) 实现代码示例: def exportmailall_request(uri,token,mailbox):...
-
Java利用技巧——AntSword-JSP-Template的优化
0x00 前言 在之前的文章《Java利用技巧——通过反射实现webshell编译文件的自删除》曾介绍了通过反射实现AntSword-JSP-Template的方法。对于AntSword-JSP-Template中的shell.jsp,访问后会额外生成文件shell_jsp$U.class。《Java利用技巧——通过反射实现webshell编译文件的自删除》中的方法,访问后会额外生成文件shell_jsp$1.class。 在某些特殊环境下,需要避免额外生成.class文件。本文将以Zimbra环境为例,介绍实现方法,开源代码,记录细节。 0x01 简介 本文将要介绍以下内容: 实现思路 实现代码 0x02 实现思路 基于《Java利用技巧——通过反射实现webshell编译文件的自删除》中的方法,访问后会额外生成文件shell_jsp$1.class,这里可以通过构造器避免额外生成.class文件。 在具体使用过程中,需要注意如下问题: (1)反射机制中的构造器 正常调用的代码: str=new String(StringBuffer); 通过反射实现的代码: Constructor constructor=String.class.getConstructor(StringBuffer.class); String str=(String)constructor.newInstance(StringBuffer); (2)选择合适的defineClass()方法 在ClassLoader类中,defineClass()方法有多个重载,可以选择一个可用的重载 本文选择defineClass(byte[] b, int off, int len) (3)SecureClassLoader 使用构造器时,应使用SecureClassLoader,而不是ClassLoader 示例代码: Constructor c = SecureClassLoader.class.getDeclaredConstructor(ClassLoader.class); 0x03 实现代码 为了方便比较,这里给出每种实现方法的代码: (1)test1.jsp 来自AntSword-JSP-Template中的shell.jsp,代码如下: <%! class U extends ClassLoader { U(ClassLoader c)...