黑客网站入侵 编程 搭建 渗透 破解
3.64K subscribers
418 photos
13 links
Download Telegram
网络管理员使用 Nmap(和 Zenmap)来映射子网并发现主机。网络安全专业人员使用 Nmap 扫描目标系统以查找可能正在运行的开放端口和服务。这些安全扫描器用于黑客攻击和渗透测试,以发现目标系统、收集信息并检查漏洞。

Nmap 和 Zenmap 均可用于提供有关目标网络的大量信息。一些常用的 Nmap 功能包括:

主机发现:生成主机名(即在网络上通信的计算机或其他设备。例如,PC、打印机、服务器等)及其 IP 地址的列表。
端口扫描:扫描特定端口(或端口范围)以确定它们是否在给定目标或目标集上开放。
操作系统检测:尝试猜测目标操作系统的详细信息,例如供应商(例如 Microsoft)、底层操作系统(例如 Windows)和操作系统代(例如 10)。
防火墙/入侵检测系统 (IDS) 规避:为高级用户提供多种选项,以防止扫描活动被防火墙或 IDS 系统检测到(并随后被丢弃)。例如,隐藏(或欺骗)您的 IP 地址、源端口、MAC 地址等。
在 Nmap 中,用户利用命令行开关来定义扫描参数。Zenmap 的界面具有命令创建器,允许使用下拉实用程序以交互方式创建 Nmap 命令行(高级用户也可以编辑)。
Nmap 安全扫描器是一个基于命令行的多平台(Windows、Mac OS X、Linux 等)网络扫描应用程序,旨在检测计算机网络上的主机和服务。

Zenmap 是 Nmap 官方安全扫描器 GUI(图形用户界面)版本。与 Nmap 一样,Zenmap 也是多平台的(适用于Linux、Windows 和其他操作系统)。

渗透服务,是以入侵者的思维方式,结合渗透工具、攻击代码及溢出利用技术,模拟入侵者可能利用的途径,发现网络、系统、应用存在的安全隐患,从而提高相关人员对安全的认识,让他们了解信息系统存在的潜在风险、被忽视的安全漏洞、目前防护的效果及应注意改进的防范措施。
将渗透过程中造成的异常情况降到最低点,我们会首先对渗透对象的策略配置、操作系统和应用系统进行调研

并制定合理的渗透手册,在实施过程中,将严格按照渗透手册所制定内容和步骤进行,确保每一个操作步骤都对在线系统没有伤害。

并且,为保证事故发生后在线系统能及时的恢复与运转,我们会在渗透测试前建立模拟环境并备份重要数据资料,并保证发生事故后按预先制定的回退方案执行。
什么是 Nmap 脚本引擎?

Nmap 的另一个强大功能是能够使用各种脚本运行扫描,以自动化工作或根据需要自定义安全审核。使用这些脚本通过其原生的Nmap 脚本引擎(NSE) 从 Nmap 中获得更大的多功能性和功能性。

NSE 附带了大量脚本。其中许多脚本是由安全专业人员创建和维护的,他们随着漏洞和攻击的发展而不断为这些脚本做出贡献。在开始每个会话之前,请运行命令 <nmap –script-updatedb>(如果您不是 root 帐户,则需要 <sudo>)。

这些脚本按网络发现、复杂版本检测、漏洞检测、后门检测和漏洞利用进行分类。一些脚本使用简单技术,另一些脚本使用复杂技术。您还可以使用 Lua 编程语言创建自己的脚本。

基本扫描

Nmap 命令包含三个元素:

扫描类型- 这告诉 Nmap 将执行哪种类型的扫描,例如:-sS 表示 TCP SYN 扫描,-sU 表示 UDP 扫描,或 -sn 表示 ping 扫描。

选项- 指定扫描的其他元素,例如:-O 表示操作系统、-p 表示端口范围或 -A 表示详细信息。

目标- 将目标定义为单个 IP 地址、IP 地址范围或域。

这些命令可能很难记住。在我们的Nmap 备忘单:所有命令、标志和开关中,可以以易于使用的格式找到它们。

精心设计的扫描被认为是使用 Nmap 扫描漏洞的基础。此类扫描的结果将返回有关哪些端口已打开以及在这些端口上运行哪些服务的信息。

可以使用诸如<nmap -p- -A <目标IP>>的命令执行这样的扫描。

此命令指示 Nmap 使用 -p- 标志扫描所有端口,并使用 -A 标志返回有关目标主机的详细信息。然后可以使用这些结果来识别目标主机上存在的潜在安全风险和漏洞。
在保护无线网络时,有几种加密类型可供选择。其中包括

-无线等效保护协议
-水务及私人有限公司
-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 代码,并将结果用于模板渲染。