黑客网站入侵 编程 搭建 渗透 破解
3.65K subscribers
418 photos
13 links
Download Telegram
在保护无线网络时,有几种加密类型可供选择。其中包括

-无线等效保护协议
-水务及私人有限公司
-WPA2
-WPA2 企业版

WEP 代表有线等效保密。尽管名字如此,但它的私密性远不如有线连接。它完全被贬低了,因为它可以在几秒钟内被黑客入侵。由于遗留原因,一些路由器仍会将其作为选项提供。永远不要使用它。大多数企业都知道这一点。如果在渗透测试中看到它,可以在当天下午早点下班,因为这是做过的最简单的无线黑客攻击。

遇到的常见加密方法是 WPA2 和 WPA2 Enterprise。它们之间的区别,用非常高层次和简单的解释来说,是企业版将为域中的每个成员提供安全登录。这意味着,与每个人都使用一个密码访问 WiFi(就像您在家里看到的那样)不同,每个用户都有自己的用户名和密码。

攻击 WPA2 Enterprise 超出了本文的讨论范围。许多中小型企业和任何家用路由器都可能设置为 WPA2,这就是我们今天要攻击的对象。
突出显示可能故意或意外造成损害的员工或承包商账户所带来的风险。
内部渗透测试暴露外部测试可能错过的盲点,例如活动目录安全策略问题、弱密码、过时的软件、修补实践、信息存储实践或配置错误的系统。
展示攻击者如何在网络中移动,量化漏洞可能造成的潜在损害.
但是该类是一个抽象类,因此实现该类的子类如果调用validateGroupMembers方法将有机会执行EL表达式,搜索可以发现该类的实现只有org.sonatype.nexus.repository.golang.rest.GolangGroupRepositoriesApiResource这么一个类,在该类执行创建仓库/更新仓库的操作中都将利用到该方法
获取回显

在实际的渗透测试环境下,如果目标主机不出网,将无法反弹shell进行利用,而且反弹shell这种敏感操作也容易触发安全警报。而由于目标环境的原因,web shell不一定都可以执行,实现命令执行的回显利用就显得比较重要了。目前来说,通用的回显思路不外乎以下的几种:

1. 利用报错。实现的方法是在代码执行的时候将所执行命令的结果直接使用异常进行抛出,因为异常没有被捕获处理的原因将会抛出在页面上。

2. 写入到文件。这个方式不难理解了,将命令执行的回显输出到文件,然后进行访问。

3. 获取当前线程中绑定的输出流对象,调用输出的方法进行输出。

4. rmi之类的通过实现服务端,重新注册之后,正常去调用即可。
以上的代码已经能够获取到request和response对象,接着我们来解决如何使用EL表达式将该类动态加载出来。这里选择JDK内置的com.sun.org.apache.bcel.internal.util.ClassLoader来动态加载我们的类
如何在Android Nougat中正确配置Burp Suite?

此前我已经在Genymotion VM或我的旧版Nexus Tablet,做过不少Android相关的测试。一直以来我都遵循Portswigger的说明文档,本地运行Burp Suite,并安装User Cert,配置一个WiFi代理。

然而,当我对这个特定app(需要API level 24 (Android 7.0 - "Nougat"))测试时,突然发现Burp无法正常工作。我回顾了我的配置步骤,并没有发现遗漏的地方,但在Burp中只看到“connection reset(连接重置)”错误:从Nougat开始,Android更改了对用户安装证书的默认信任行为。这意味着,从sdcard安装Burp CA将无法拦截应用流量。除非另有说明,否则应用程序将只会信任系统级别的CA。

这里有两种方法可以帮我们绕过它:

将Burp CA作为系统级CA安装在设备上。这是我认为最简单的解决方法,但需要一个已经root的设备。还免去了设置锁屏PIN码的的麻烦:)
修改manifest清单文件并重新打包应用程序。 操作步骤相对繁琐,但不需要root权限。
注意:我在Windows 10上使用Burp Suite Pro完成了这些操作,使用的是Android 7.1(API25)Genymotion VM,但这些步骤应适用于任何设置。
将Burp CA作为系统级CA安装在设备上
对我来说,我认为最简单的解决方案就是将Burp CA安装到系统可信证书中。你可以通过Settings -> Security -> Trusted Credentials来查看所有与Android设备捆绑在一起的系统CA。在浏览器捆绑中你也能看到类似的CA。

Android的受信任CA以特殊格式存储在/system/etc/security/cacerts 。如果我们有root权限,可以对这个位置进行写入放入Burp CA(经过一些修改后)
Android喜欢PEM格式证书,并且文件名为subject_hash_old值并以.0结尾。

注意:如果你使用的OpenSSL <1.0,那么将是subject_hash,而不是“old”

使用openssl将DER转换成PEM,然后输出subject_hash_old并重命名该文件:

openssl x509 -inform DER -in cacert.der -out cacert.pem
openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1
mv cacert.pem <hash>.0
VE-2020-1948

这里的 EqualsBean 和 ToStringBean 可以看一下 Hessian_JNDI 那个链子。打的是rome反序列化。

这个地方用的是dubbo协议。其实这里打的就是hessian反序列化这个已经比较熟悉了。 看一下这个数据包。
典型的三次握手和四次挥手。dabb是dubbo的协议头。里面有hessian序列化的数据,然后 c 发送。s 确认收到。然后s再发。
Dubbo服务在没有配置协议的情况下,默认使用dubbo协议,dubbo协议默认使用hessian2进行序列化传输对象。hessian2反序列化只是其中一个攻击面,太局限,而且hessian2可能会提供黑白名单的限制。所以需要尝试扩展攻击面,此漏洞应运而生。

但是大致意思就是 如果 hessian 设置了黑名单。可以尝试用其它的 readObject 。前面也说dubbo协议的时候也说到了那个map。里面有不同序列化方式所对应的id。

也就是 header 的第三个 字节 里面 最后的5个 byte。
pojo就是我们当时 out.writeObject 进去的 LinkedHashMap。前两个类型的if里面也进不去。

注意一下这个isArray(),一会儿下个漏洞的时候会用到它。

然后就是获取class,对应的value进行实例化,然后调用每一个entry的key对应的set方法,然后value为值。

NativeJava修复

配置文件中判断是否支持Java反序列化,默认为false。
dubbo协议。其实这里打的就是hessian反序列化这个已经比较熟悉了。 看一下这个数据包。
典型的三次握手和四次挥手。dabb是dubbo的协议头。里面有hessian序列化的数据,然后 c 发送。s 确认收到。然后s再发。

这个漏洞主要是因为hessian引起的。

com.alibaba.com.caucho.hessian.io.Hessian2Output#writeString(java.lang.String)

就是在provider解析数据的时候,本应该是in.readUTF()。

但是我们构造数据包的时候用的是 out.writeObject(payload());

结果provider解析异常,然后会触发 payload() 的toString 方法。

如果此时如果有toString2rce的gadget。就会有被攻击的风险。
array_walk

array_walk 是 PHP 中的一个内置函数,用于对数组中的每个元素应用用户自定义的回调函数。它可以遍历数组,并将数组的键和值传递给回调函数进行处理。array_walk 不会返回一个新的数组,而是直接修改原始数组。
● $array:要遍历的数组(按引用传递,可以直接修改)。

● $callback:用户自定义的回调函数,接收两个参数(值,键),或者三个参数(值,键,$userdata)。

● $userdata(可选):传递给回调函数的额外数据。
DataGear 是一款开源免费的数据可视化分析平台,自由制作任何您想要的数据看板,支持接入 SQL、CSV、Excel、HTTP 接口、JSON 等多种数据源。
支持运行时接入任意提供 JDBC 驱动的数据库,包括 MySQL、Oracle、PostgreSQL、SQL Server 等关系数据库,以及 Elasticsearch、ClickHouse、Hive 等大数据引擎
在 FreeMarker 模板引擎中,new 是一个内置的关键字,用来创建新的实例对象。这个功能通常用于实例化 Java 类,并可以在创建对象时直接调用构造函数来初始化其属性。通过在模板中使用 new 关键字,你可以轻松地创建 Java 对象,并将其用在模板的渲染过程中,以支持动态数据的展示和处理。
freemarker.template.utility.ObjectConstruct 是 FreeMarker 模板引擎中的一个辅助类,主要用于创建 Java 对象,并将其转换为 FreeMarker 可以识别和处理的模板数据模型。这使得模板可以动态地实例化对象,并将它们传递给模板进行渲染。

freemarker.template.utility.JythonRuntime 是 FreeMarker 模板引擎中的一个辅助类,它用于与 Jython(一个基于 Java 的 Python 解释器)进行交互。通过这个类,FreeMarker 模板可以执行 Python 脚本,从而在模板中动态执行 Python 代码,并将结果用于模板渲染。
该方法重写了 Writer 类中的 flush 和 close 方法。在此实现中,接收到的字符序列会被附加到一个 StringBuilder 缓冲区中。当调用 flush 时,会执行 interpretBuffer 方法,该方法从缓冲区 buf 中提取字符串内容,并通过 exec 执行这些内容作为 Python 代码。
<#assign> 标签用于在模板中定义变量。通过使用 <#assign> 标签,你可以将一个值赋给变量,并在模板的其他部分引用和使用这个变量。这使得在模板中能够创建和操作变量,从而支持更复杂的逻辑和功能。
导入表(Import Directory)存储了有关PE文件在运行的生命周期中所需要的API以及相关的dll模块。
有些AV/EDR会根据
导入表中记录的API来判定一个程序是否为高危文件,比如说一个文件在1MB以内,出现了 VirtualAlloc、VirtualProtect、CreateThread 等敏感API时,很大概率会判定为高危文件。

很多工具可以查看文件的导入表,常见的有studyPE+、IDA。

在本节中,我将详细介绍动态获取API函数的三种方式,它们分别是

1. GetModuleHandle+GetProcAddress 的组合获取所需的API函数指针

2. 使用 PEB 获取 GetModuleHandle 和 GetProcAddress 的函数指针,再利用 GetModuleHandle+GetProcAddress 获取所需要的API函数指针

3. 使用 PEB 获取所需要的API函数指针

网上也有人用 LoadLibrary 作为 GetModuleHandle 的平替,其效果相差无几,只是它们的机制有些区别,比如说在 自举的代码幽灵——反射DLL注入(Reflective DLL Injection) 中我们就是利用 LoadLibrary+GetProcAddress 给我的恶意DLL加载相应的DLL获取需要的API函数指针,值得关注的一点是恶意DLL是由其自身的导出函数 ReflectiveLoader 完成自身的加载,这意味着相应的DLL并没有加载到自身的地址空间中,所以需要利用 LoadLibrary 而不应该使用 GetModuleHandle。
首先,MessageBoxW 这个弹窗API是由user32.dll导出的,我们直接使用API,编译后查看导入表信息,发现确实存在 MessageBoxW 这个API的记录
查看其导入表,发现没有 MessageBoxW 的相关信息。
1. 使用加密版将shellcode加密,并输出

2. 将shellcode保存到shellcode.txt

3. 用VS的MSVC或Cling-cl编译解密版的代码,注意编译和shellcode位数保存一致,如shellcode是x64,编译的时候要用x64位。

4. 将编译好的exe和shellcode.txt放到目标上,保证这两个文件在同一个目录
bshare插件引发的网站劫持事件剖析

QAX通报的“bshare分享插件被黑?百万级网站被劫持事件”报道的大概逻辑如下:

● 大量网站引用了名为bshare的分享按钮插件,该插件对应的服务域名为static.bshare.cn;

● 网站使用bshare组件时,需要在原网页中插入bshare网站的js资源;

● QAX通过对域名static.bshare.cn的分析,确认这是一起通过抢注过期通用插件服务域名来实施大范围网页劫持的攻击事件;

● 用户访问被嵌入了恶意js资源的网站时,网页内容会被劫持至同一色情网页处;
网页被嵌入第一段JS代码

为了搞清楚其劫持原理,笔者尝试从代码层面对其整个劫持原理进行了研究剖析。

通过查看其网页源代码,我们发现在源代码中确实存在嵌入第三方js资源代码的情况。

被嵌入的JavaScript代码如下:

1
2
<script language="javascript" src="https://www.zuizhongjs.com/js/24/12/7/ky1.js" type="text/javascript"></script>