网络安全实战 - HTB Obscure

293 阅读2分钟

概述

Obscure是来自于HTB(hackthebox.com)的一个容易级数字鉴识挑战,完成该挑战所需要掌握的知识点在于网络协议分析以及PHP代码分析。

题目分析

相关的任务文件包括一个zip包,解压后可以得到19-05-21_22532255.pcap, support.phpto-do.txt文件。

to-do.txt中给出了背景信息。

support.php是一个运行在服务器上的远程shell,其代码经过混淆处理。

19-05-21_22532255.pcap是捕捉到的网络通讯数据。

解题过程

首先我们对support.php中的代码进行分析。

forensics_003_HTB_Obscure_2.png

以上代码经过混淆处理,无法直接阅读,但我们可以通过调试得知,其中的$V$d,$P,$c$B是字符串变量,$N则等价于create_function函数。而$x则是一个匿名函数,其代码由$V$d,$P,$c$B拼接而成,将其分行后,可以得到如下代码。

forensics_003_HTB_Obscure_3.png

其主要功能在于读取输入,然后将输入数据进行base64解码并调用x函数与k进行异或,然后调用gzuncompress解压,并调用eval运行解压后的代码,运行的结果则通过相反的操作(gzcompressx及base64编码),并将结果与$p$kh$kf字符串前后拼接后输出。

然后我们使用Wireshark19-05-21_22532255.pcap获取support.php的各次访问记录。

forensics_003_HTB_Obscure_1.png

使用support.php的POST数据,我们可以得到eval所运行的代码。

forensics_003_HTB_Obscure_4.png

测试最后的一次support.php访问数据,我们得知其运行的命令是

chdir('/home/developer');@error_reporting(0);@system('base64 -w 0 pwdb.kdbx 2>&1');

然后我们可以通过Wireshark获得POST的响应数据并根据其生成的方法反向获得base64 -w 0 pwdb.kdbx 2>&1命令的输出。

forensics_003_HTB_Obscure_5.png

将其进行base64解码后,就可以得到pwdb.kdbx的内容。

pwdb.kdbx是一个Keepass password database 2.x文件,需要密码才可以代开。

因此使用John the ripper进行爆破以获得其密码。

keepass2john pwdb.kdbx > hash.txt
john --wordlist=rockyou.txt hash.txt

爆破成功后,就可以KeePass 2程序代开该文件并获取flag。

forensics_003_HTB_Obscure_6.png