概述
Obscure是来自于HTB(hackthebox.com)的一个容易级数字鉴识挑战,完成该挑战所需要掌握的知识点在于网络协议分析以及PHP代码分析。
题目分析
相关的任务文件包括一个zip包,解压后可以得到19-05-21_22532255.pcap, support.php和to-do.txt文件。
to-do.txt中给出了背景信息。
support.php是一个运行在服务器上的远程shell,其代码经过混淆处理。
19-05-21_22532255.pcap是捕捉到的网络通讯数据。
解题过程
首先我们对support.php中的代码进行分析。
以上代码经过混淆处理,无法直接阅读,但我们可以通过调试得知,其中的$V,$d,$P,$c和$B是字符串变量,$N则等价于create_function函数。而$x则是一个匿名函数,其代码由$V,$d,$P,$c和$B拼接而成,将其分行后,可以得到如下代码。
其主要功能在于读取输入,然后将输入数据进行base64解码并调用x函数与k进行异或,然后调用gzuncompress解压,并调用eval运行解压后的代码,运行的结果则通过相反的操作(gzcompress,x及base64编码),并将结果与$p,$kh与$kf字符串前后拼接后输出。
然后我们使用Wireshark对19-05-21_22532255.pcap获取support.php的各次访问记录。
使用support.php的POST数据,我们可以得到eval所运行的代码。
测试最后的一次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命令的输出。
将其进行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。