黑客网站渗透入侵破解拿权限
10.4K subscribers
2.39K photos
108 links
Download Telegram
phpmyadmin<4.8.3 XSS挖掘

前言
最近在审计phpmyadmin的时候发现了一个XSS漏洞,后来发现在版本大于4.8.3以后该漏洞被修复了。看了下之前公布的CVE,有个CVE和此漏洞很相似但没有漏洞细节,于是乎便有了这篇文章。

准备
需要的环境
phpmyadmin 4.8.2

phpstorm

phpstudy(xdebug)

配置xdebug
首先下载xdebug,将phpinfo信息复制到在线向导中,根据提示下载dll文件, php.ini开启xdebug的配置如下。

xdebug.remote_enable=1 # 开启远程调试
xdebug.idekey='PHPSTORM' # sessionkey
xdebug.remote_port=9001 # 远程调试通信端口
zend_extension = D:\phpStudy\PHPTutorial\php\php-7.2.1-nts\ext\php_xdebug-2.9.4-7.2-vc15-nts.dll
漏洞细节
先决条件
在审计phpmyadmin时,我比较关注$GLOBALS全局变量,该变量存储了本次请求的信息、phpmyadmin基本设置信息和phpmyadmin配置文件信息等。先看看/libraries/classes/Server/Privileges.php::3977的以下代码。

foreach ($row as $key => $value) {
$GLOBALS[$key] = $value;
}
很明显,该处是$GLOBALS的赋值操作,而$row来自于对mysql.user表的查询结果,且$user_host_condition可控,
/libraries/classes/Server/Privileges.php::3966行

既然上述代码会将mysql.user中符合条件的行的列名和值写入$GLOBALS中,我们便可通过添加mysql.user的列来往$GLOBALS中写入任意键值。清楚思路后,我们看看哪里调用了Privileges.php的getDataForChangeOrCopyUser函数,发现在server_privileges.php::178中对该函数有调用。
接 /网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
FastJson checkAutoType安全机制研究

在FastJson1.2.25以及之后的版本中,fastjson为了防止autoType这一机制带来的安全隐患,增加了一层名为checkAutoType的检测机制。

在之后的版本中,随着checkAutoType安全机制被不断绕过,fastjson也进行了一系列例如黑名单防逆向分析、扩展黑名单列表等加固。但是
checkAutoType的原理未曾有过大的变化,因此本文将以fastjson 1.2.25版本为例,介绍一下checkAutoType安全机制的原理

在调试分析fastjson的checkAutoType安全机制之前,发现网上很多fastjson漏洞的分析文章中曾经提到过一个名为autoTypeSupport的开关,且在1.2.25以及之后的版本中默认关闭。在动手调试之前,我曾一度以为autoTypeSupport开关关闭与否直接决定了fastjson是完全摒弃或是使用autotype功能的。但是实际调试中发现,这个开关仅仅是checkAutoType安全机制中的一个选项,这个开关的关闭与否,并不直接作用于fastjson是否使用autoType机制,下文案例中可以看出这个问题。

fastjson在1.2.25以及之后的版本中引入了一个checkAutoType安全机制,位于com/alibaba/fastjson/parser/ParserConfig.java文件。但并不是所有情况下fastjson都会加载这个机制进行安全监测,让我们下面来看看究竟什么情况下这个安全机制会被触发

通过调试fastjson 1.2.25代码发现,如果想触发checkAutoType安全机制,需要执行到com/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer.java中下图红框处位置

denyList =
"bsh,com.mchange,com.sun.,java.lang.Thread,java.net.Socket,java.rmi,javax.xml,org.apache.bcel,org.apache.commons.beanutils,org.apache.commons.collections.Transformer,org.apache.commons.collections.functors,org.apache.commons.collections4.comparators,org.apache.commons.fileupload,org.apache.myfaces.context.servlet,org.apache.tomcat,org.apache.wicket.util,org.codehaus.groovy.runtime,org.hibernate,org.jboss,org.mozilla.javascript,org.python.core,org.springframework"

如果className命中黑名单,程序抛出异常

接 /网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
我们找到了一个名为FBSharedFramework的 Mach-O 64 位共享库二进制文件。我们将使用Hopper Disassembler打开该二进制文件,由于该文件较大,因此需要一些时间才能完全反汇编该二进制文件。

一个好的开始是使用应用程序上显示的警报错误进行搜索。因此,我们将尝试找到导致OpenSSL 证书验证错误的分支。

我们必须将b.ne(“不相等时分支”的缩写)指令反转为b.eq(“不相等时分支”的缩写)指令,前者当且仅当零标志清零时才会分支或“跳转”到指定的地址,后者当且仅当零标志清零时才会分支或“跳转”到指定的地址。因此,它不会进入导致 OpenSSL 证书验证错误的loc_1491b4分支,而是进入有效分支。


接 /网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
我尝试增加虚拟机的 CPU 数量,对监控 Config.msi 创建的代码进行优化,但是都没有成功。同时我也单独使用 procmon 监控了 msi 文件的运行过程,确定 Config.msi 目录确实发生了二次创建。

所以结论只有一个,Config.msi 目录的二次创建发生的太快了。但是既然 Config.msi 目录的二次创建是确实发生的,同时利用代码已经监测到了第一次删除的行为,那么如果这个时候就释放机会锁 2,又会如何呢?

如果不对 Config.msi 目录的二次创建进行监控,直接释放机会锁 2,因为 Config.msi 目录的二次创建时间间隔非常短,等待良久的 sdrsvc 就有机会成功删除 Config.msi。此时漏洞利用流程可以继续进行下去,并成功实现漏洞利用!

接 /网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
BlackArch Linux 是一款基于Arch Linux的渗透测试发行版,适用于渗透测试人员和安全研究人员。存储库包含2903 个工具。您可以单独或成组安装工具。BlackArch Linux 与现有的 Arch 安装兼容。

BlackArch Full ISO 包含多个窗口管理器。BlackArch Slim ISO 具有 XFCE 桌面环境。下面是其中一些窗口管理器的屏幕截图

遍历字典,发送requests请求到目标网站,根据响应判断是否登录成功
分析
SecLists仓库中存放了大量有用的字典文件,我这里用了一个爆破字典cain.txt
在本地部署wordpress做测试网站,查看登录页面表单,找到需要构造的字段

wordpress采取了一个反破解措施:在访问登录页面时,给客户端一个cookie,当客户端提交表单时,网站会检查是否带上这个cookie。反制的办法:用session取代requests去发送请求和提交表单。

接 /网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
该语言易于学习和使用,这对于黑客攻击来说是一个巨大的优势。一般来说,要成为一名黑客,必须掌握 3~4 门编程语言。最具代表性的是C语言和汇编语言,它们在分析系统和程序行为的过程中起着核心作用。此外,黑客还需要掌握另一种编程语言,才能编写出满足自身需求的黑客攻击工具。该语言易学易用,功能多样,是黑客攻击语言的最佳选择。

作为一种黑客攻击语言,它有很多优势,初学者可以先一步选择。

无论是在我的 Slackware 台式电脑上,还是在我的 CentOS 笔记本电脑上,我都会使用 NetBSD 的 pkgsrc 系统编译我自己的大部分应用程序。我发现,通过自己编译软件,我可以对应用程序中包含的功能、如何配置、使用的库版本等有自己的想法。这很有意义,它帮助我跟上了新的版本,而且因为我有时会在这个过程中发现错误,它帮助我参与了很多不同的开源项目。

你很少会只有编译软件的一种方式可选,大多数开源项目同时提供源代码(这就是为什么它被称为“开源”)和可安装包。是否从源代码编译是你自己的选择,也许是因为你想要最新版本中还没有的新功能,或者只是因为你喜欢自己编译代码


接 /网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke