如何进行Web渗透测试
什么是渗透测试?
渗透测试,是渗透测试工程师完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标 *** 、主机、应用的安全作深入的探测,发现系统最脆弱的环节。
如何进行Web渗透测试?
完整web渗透测试框架当需要测试的web应用数以千计,就有必要建立一套完整的安全测试框架,流程的更高目标是要保证交付给客户的安全测试服务质量。
1、立项:项目建立,时间安排,人力分配,目标制定,厂商接口人确定;
系统分析威胁分析:针对具体的web应用,分析系统架构、使用的组件、对外提供的接口等,以STRIDE为威胁模型进行对应的安全威胁分析,输出安全威胁分析表,重点关注top3威胁;
制定测试用例:根据威胁分析的结果制定对应的测试用例,测试用例按照模板输出,具备可执行性;
测试执行漏洞挖掘:测试用例执行发散测试,挖掘对应的安全问题or漏洞;
问题修复回归测试:指导客户应用开发方修复安全问题or漏洞,并进行回归测试,确保安全问题or漏洞得到修复,并且没有引入新的安全问题;
项目总结评审:项目过程总结,输出文档评审,相关文档归档。
2、Web应用的渗透测试流程
主要分为3个阶段,分别是:信息收集→漏洞发现→漏洞利用,下面仔细分析一下各个阶段流程:
一、信息收集
在信息收集阶段,我们需要尽量多的收集关于目标web应用的各种信息,比如:脚本语言的类型、服务器的类型、目录的结构、使用的开源软件、数据库类型、所有链接页面,用到的框架等
脚本语言的类型:常见的脚本语言的类型包括:php、asp、aspx、jsp等
测试 *** :
1 爬取网站所有链接,查看后缀
2 直接访问一个不存在页面后面加不同的后缀测试
3 查看robots.txt,查看后缀
服务器的类型:常见的web服务器包括:apache、tomcat、IIS、ngnix等
测试 *** :
1 查看header,判断服务器类型
2 根据报错信息判断
3 根据默认页面判断
目录的结构:了解更多的目录,可能发现更多的弱点,如:目录浏览、代码泄漏等。
测试 ***
1 使用字典枚举目录
2 使用爬虫爬取整个网站,或者使用google等搜索引擎获取
3 查看robots.txt是否泄漏
使用的开源软件:我们如果知道了目标使用的开源软件,我们可以查找相关的软件的漏洞直接对网站进行测试。
测试 ***
指纹识别( *** 上有很多开源的指纹识别工具)
数据库类型:对于不同的数据库有不同的测试 *** 。
测试 ***
1 使应用程序报错,查看报错信息
2 扫描服务器的数据库端口(没做NAT且防火墙不过滤时有效)
所有链接页面:这个跟前面的获取目录结构类似,但是这个不只是获取网站的所有功能页面,有时候还可以获取到管理员备份的源码。
测试 ***
1 使用字典枚举页面
2 使用爬虫爬取整个网站,或者使用google等搜索引擎获取
3 查看robots.txt是否泄漏
用到的框架:很多网站都利用开源的框架来快速开发网站,所以收集网站的框架信息也是非常关键的。
测试 ***
指纹识别( *** 上有很多开源的指纹识别工具)
二、漏洞发现
在这个阶段我们在做测试的时候要对症下药,不能盲目的去扫描,首先要确定目标应用是否使用的是公开的开源软件,开源框架等、然后在做深一度的漏洞扫描。
关于开源软件的漏洞发现
开源的软件:常见的开源软件有wordpress、phpbb、dedecms等
开源的框架:常见的开源框架有Struts2、 Spring MVC、ThinkPHP等
中间件服务器:常见的中间件服务器有jboss、tomcat、Weblogic等
数据库服务:常见的数据库服务mssql、mysql、oracle、redis、sybase、MongoDB、DB2等
对于开源软件的测试 ***
1 通过指纹识别软件判断开源软件的版本信息,针对不同的版本信息去开放的漏洞数据库查找相应版本的漏洞进行测试
2 对于默认的后台登录页、数据库服务端口认证等入口可以进行简单的暴力破解、默认口令尝试等操作
3 使用开源的漏洞发现工具对其进行漏洞扫描,如:WPScan
关于自主开发的应用
手动测试:这个阶段,我们需要手工测试所有与用户交互的功能,比如:留言、登入、下单、退出、退货、付款等操作
软件扫描:使用免费的软件扫描,如:appscan、wvs、netsparker,burp等
可能存在的漏洞
Owasp关键点
代码安全之上传文件
代码安全之文件包含
代码安全之SSRF
逻辑漏洞之密码重置
逻辑漏洞之支付漏洞
逻辑漏洞之越权访问
平台安全之中间件安全
三、漏洞利用
针对不同的弱点有不同的漏洞利用方式,需要的知识点也比较多。一般这个阶段包括两种方式,一种是手工测试,一种是工具测试
手工测试
手工测试是通过客户端或服务器访问目标服务,手工向目标程序发送特殊的数据,包括有效的和无效的输入,观察目标的状态、对各种输入的反应,根据结果来发现问题的漏洞检测技术。手工测试不需要额外的辅助工具,可由测试者独立完成,实现起来比较简单。但这种 *** 高度依赖于测试者,需要测试者对目标比较了解。手工测试可用于Web应用程序、浏览器及其他需要用户交互的程序。
这种方式对于有特殊过滤等操作,或者 *** 上没有成型的利用工具的时候可以使用。
工具测试
*** 上有很多好用的免费利用工具,比如针对sql注入的sqlmap、针对软件漏洞的matesploit等。
渗透测试工具有哪些
1、Kali Linux
不使用Kali Linux作为基本渗透测试操作系统,算不上真正的黑客。Kali Linux是基于Debian的Linux发行版,
设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。更先由Offensive Security的Mati
Aharoni和Devon Kearns通过重写BackTrack来完成,BackTrack是他们之前写的用于取证的Linux发行版 。
Kali Linux的前身是BackTrack
Linux,有进攻性安全部门的专业人士维护,它在各个方面都进行了优化,可以作为进攻性渗透测试工具使用。
2、Nmap
Nmap是发现企业 *** 中任何类型的弱点或漏洞的绝佳工具,它也是审计的很好工具。该工具的作用是获取原始数据包并确定哪些主机在 *** 的特定段上可用,正在使用什么操作系统,以及识别特定主机的数据包防火墙或过滤器的不同类型和版本正在使用。Nmap对渗透测试过程的任何阶段都很有用并且还是免费的。
3、Wireshark
Wireshark是一个无处不在的工具,可用于了解通过 *** 的流量。虽然通常用于深入了解日常TCP/IP连接问题,但Wireshark支持对数百种协议的分析,包括对其中许多协议的实时分析和解密支持。如果不熟悉渗透测试,Wireshark是一个必须学习的工具。
4、John the Ripper
John the
Ripper是一个很流行的密码破解工具,是渗透测试工具包中的一个很必要的补充。它可以用来确定数据库中的未知弱点,通过从传统字典中找到的复杂和流行的单词列表,获取文本字符样本,并用与正在生成的密码相同的格式,对其进行加密来达到目的。
5、Hashcat
Hashcat自称世界上最快和更先进的密码恢复应用程序,可能并不是谦虚,懂Hashcat的人肯定知道它的价值。Hashcat让John the
Ripper一筹莫展。它是破解哈希的首选渗透测试工具,Hashcat支持多种密码猜测暴力攻击,包括字典和掩码攻击。
6、Hydra
Hydra在需要在线破解密码时发挥作用,例如SSH或FTP登录、IMAP、IRC、RDP等等。将Hydra指向你想破解的服务,如果你愿意,可以给它传递一个单词列表,然后扣动扳机。像Hydra这样的工具提醒人们为什么限制密码尝试和在几次登录尝试后断开用户连接可以成功地防御攻击者。
7、Sqlmap
Sqlmap,是非常有效的开源的SQL注入工具,并且自动化检测和利用SQL注入缺陷并接管数据库服务器的过程,就像它的网站所说的那样。Sqlmap支持所有常用目标,包括MySQL、oracle、PostgreSQL、Microsoft
SQL、server等。
软件测试和渗透测试有什么区别?
首先,测试对象不同
软件测试测试对象主要是程序、数据或文档;渗透测试的测试对象主要为 *** 设备、主机操作系统、数据库系统和应用系统。
其次,测试内容不同
软件测试主要工作内容是验证和确认,发现软件中的缺陷或者不足,然后把发现的问题整理成报告并分析出软件质量的好坏。
渗透测试主要包括:黑盒测试、白盒测试和灰盒测试。主要做的工作有:
信息收集、端口扫描、权限提升、远程溢出攻击、WEB应用测试、SQL注入攻击、检测页面隐藏字段、跨站攻击、Cookie利用、后门程序检查、第三方软件误配置等等
最后,测试原则不同:
软件测试原则:测试应该尽早进行;软件测试应该由第三方来负责;设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件;应该充分注意测试中的群集现象;对错误结果要进行一个确认过程;制定严格的测试计划;妥善保存测试计划、测试用例、出错统计和最终分析报告。
渗透测试原则:测试验证时间放在业务量最小的时间进行;测试执行前确保相关数据进行备份;所有测试在执行前和维护人员进行沟通确认;在测试过程中出现异常情况时立即停止测试并及时恢复系统;对原始业务系统进行一个完全的镜像环境,在镜像环境上进行渗透性测试。
什么是渗透测试啊?
渗透测试:在取得客户授权的情况下,通过模拟黑客攻击来对客户的整个信息系统进行全面的漏洞查找,分析、利用。最后给出完整的渗透报告和问题解决方案。
高级渗透测试服务(黑盒测试):指在客户授权许可的情况下,资深安全专家将通过模拟黑客攻击的方式,在没有网站代码和服务器权限的情况下,对企业的在线平台进行全方位渗透入侵测试,来评估企业业务平台和服务器系统的安全性。
*** 安全干货知识分享 - Kali Linux渗透测试 106 离线密码破解
前言
最近整理了一些 奇安信华为大佬 的课件资料+大厂面试课题,想要的可以私信自取, 无偿赠送 给粉丝朋友~
1. 密码破解简介
1. 思路
目标系统实施了强安全措施
安装了所有补丁
无任何已知漏洞
无应用层漏洞
攻击面最小化
社会 工程学
获取目标系统用户身份
非授权用户不受信,认证用户可以访问守信资源
已知用户账号权限首先,需要提权
不会触发系统报警
2. 身份认证 ***
证明你是你声称你是的那个人
你知道什么(账号密码、pin、passphrase)
你有什么(令牌、token、key、证书、密宝、手机)
你是谁(指纹、视网膜、虹膜、掌纹、声纹、面部识别)
以上 *** 结合使用
基于互联网的身份验证仍以账号密码为主要形式
3. 密码破解 ***
人工猜解
垃圾桶工具
被动信息收集
基于字典暴力破解(主流)
键盘空间字符爆破
字典
保存有用户名和密码的文本文件
/usr/share/wordlist
/usr/share/wfuzz/wordlist
/usr/share/seclists
4. 字典
1. 简介
键盘空间字符爆破
全键盘空间字符
部分键盘空间字符(基于规则)
数字、小写字母、大写字符、符号、空格、瑞典字符、高位 ASCII 码
2. crunch 创建密码字典
无重复字符
crunch 1 1 -p 1234567890 | more
1
必须是最后一个参数
更大、最小字符长度失效,但必须存在
与 -s 参数不兼容(-s 指定起始字符串)
crunch 4 4 0123456789 -s 9990
读取文件中每行内容作为基本字符生成字典
crunch 1 1 -q read.txt
1
字典组成规则
crunch 6 6 -t @,%%^^ | more
-t:按位进行生成密码字典
@:小写字母 lalpha
,:大写字母 ualpha
%:数字 numeric
^:符号 symbols
输出文件压缩
root@kali:~# crunch 4 5 -p dog cat bird
1
-z:指定压缩格式
其他压缩格式:gzip、bzip2、lzma
7z压缩比率更大
指定字符集
root@kali:~# crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space -o w.txt -t @d@@ -s cdab
1
随机组合
root@kali:~# crunch 4 5 -p dog cat bird
1
crunch 5 5 abc DEF + !@# -t ,@^%,
在小写字符中使用abc范围,大写字符使用 DEF 范围,数字使用占位符,符号使用!@#
占位符
转义符(空格、符号)
占位符
root@kali:~# crunch 5 5 -t ddd%% -p dog cat bird
1
任何不同于 -p 参数指定的值都是占位符
指定特例
root@kali:~# crunch 5 5 -d 2@ -t @@@%%
1
2@:不超过两个连续相同字符
组合应用
crunch 2 4 0123456789 | aircrack-ng a.cap -e MyESSID -w -
crunch 10 10 12345 –stdout | airolib-ng testdb -import passwd -
3. CUPP 按个人信息生成其专属的密码字典
CUPP:Common User Password Profiler
git clone
python cupp.py -i
4. cewl 通过收集网站信息生成字典
cewl 1.1.1.1 -m 3 -d 3 -e -c -v -w a.txt
-m:最小单词长度
-d:爬网深度
-e:收集包含email地址信息
-c:每个单词出现次数
支持基本、摘要 身份认证
支持 ***
5. 用户密码变型
基于 cewl 的结果进行密码变型
末尾增加数字串
字母大小写变化
字母与符号互相转换
字母与数字互相转换
P@$w0rd
6. 使用 John the Ripper 配置文件实现密码动态变型
2. 在线密码破解
1. hydra
简介
密码破解
Windows 密码破解
Linux 密码破解
其他服务密码破解
图形化界面
xhydra
HTTP表单身份认证
密码破解效率
密码复杂度(字典命中率)
带宽、协议、服务器性能、客户端性能
锁定阈值
单位时间更大登陆请求次数
Hydra 的缺点
稳定性差,程序时常崩溃
速度控制不好,容易触发服务屏蔽或锁死机制
每主机新建进程,每服务新建实例
大量目标破解时性能差
2. pw-inspector
Hydra 小工具 pw-inspector
按长度和字符集筛选字典
pw-inspector -i /usr/share/wordlists/nmap.lst -o p1.lst -l
pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u
pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u -m 3 -M 5
3. medusa
Medusa 的特点
稳定性好
速度控制得当
基于线程
支持模块少于hydra(不支持RDP)
WEB-Form 支持存在缺陷
查看支持的模块
参数
-n:非默认端口
-s:使用SSL连接
-T:并发主机数
medusa -M ftp -q
3. 离线密码破解
1. 简介
身份认证
禁止明文传输密码
每次认证使用HASH算法加密密码传输(HASH算法加密容易、解密困难)
服务器端用户数据库应加盐加密保存
破解思路
嗅探获取密码HASH
利用漏洞登陆服务器并从用户数据库获取密码HASH
识别HASH类型
长度、字符集
利用离线破解工具碰撞密码HASH
优势
离线不会触发密码锁定机制
不会产生大量登陆失败日志引起管理员注意
2. HASH 识别工具
1. hash-identifier
进行 hash 计算
结果:5f4dcc3b5aa765d61d8327deb882cf99
进行 hash 识别
2. hashid
可能识别错误或无法识别
3. HASH 密码获取
1. samdump2
Windows HASH 获取工具
利用漏洞:Pwdump、fgdump、 mimikatz、wce
物理接触:samdump2
将待攻击主机关机
使用 Kali ISO 在线启动此主机
发现此 windows 机器安装有两块硬盘
mount /dev/sda1 /mnt
将硬盘挂载
cd /mnt/Windows/System32/config
切换目录
samdump2 SYSTEM SAM -o sam.hash
导出密码
利用 nc 传输 HASH
HASH 值:31d6cfe0d16ae931b73c59d7e0c089c0
2. syskey 工具进行密码加密
使用 syskey 进行加密(会对 SAM 数据库进行加密)
重启需要输入密码才能进一步登录
使用 kali iso live
获取到 hash 值
hashcat 很难破解
使用 bkhive 破解
使用 Bootkey 利用RC4算法加密 SAM 数据库
Bootkey 保存于 SYSTEM 文件中
bkhive
从 SYSTEM 文件中提取 bootkey
Kali 2.0 抛弃了 bkhive
编译安装 :
在windows的 kali live 模式下,运行
samdump2 SAM key (版本已更新,不再支持此功能)
建议使用 Kali 1.x
1. Hashcat
简介
开源多线程密码破解工具
支持80多种加密算法破解
基于CPU的计算能力破解
六种模式 (-a 0)
0 Straight:字典破解
1 Combination:将字典中密码进行组合(1 2 11 22 12 21)
2 Toggle case:尝试字典中所有密码的大小写字母组合
3 Brute force:指定字符集(或全部字符集)所有组合
4 Permutation:字典中密码的全部字符置换组合(12 21)
5 Table-lookup:程序为字典中所有密码自动生成掩码
命令
hashcat -b
hashcat -m 100 hash.txt pass.lst
hashcat -m 0 hash.txt -a 3 ?l?l?l?l?l?l?l?l?d?d
结果:hashcat.pot
hashcat -m 100 -a 3 hash -i –increment-min 6 –increment-max 8 ?l?l?l?l?l?l?l?l
掩码动态生成字典
使用
生成文件
计算 hash 类型
结果 MD5
查看 MD5 代表的值
进行破解
2. oclhashcat
简介
号称世界上最快、唯一的基于GPGPU的密码破解软件
免费开源、支持多平台、支持分布式、150+hash算法
硬件支持
虚拟机中无法使用
支持 CUDA 技术的Nvidia显卡
支持 OpenCL 技术的AMD显卡
安装相应的驱动
限制
更大密码长度 55 字符
使用Unicode的更大密码长度 27 字符
关于版本
oclHashcat-plus、oclHashcat-lite 已经合并为 oclhashcat
命令
3. RainbowCrack
简介
基于时间记忆权衡技术生成彩虹表
提前计算密码的HASH值,通过比对HASH值破解密码
计算HASH的速度很慢,修改版支持CUDA GPU
彩虹表
密码明文、HASH值、HASH算法、字符集、明文长度范围
KALI 中包含的 RainbowCrack 工具
rtgen:预计算,生成彩虹表,时的阶段
rtsort:对 rtgen 生成的彩虹表行排序
rcrack:查找彩虹表破解密码
以上命令必须顺序使用
rtgen
LanMan、NTLM、MD2、MD4、MD5、SHA1、SHA256、RIPEMD160
rtgen md5 loweralpha 1 5 0 10000 10000 0
计算彩虹表时间可能很长
下载彩虹表
彩虹表排序
/usr/share/rainbowcrack
rtsort /md5_loweralpha#1-5_0_1000x1000_0.rt
密码破解
r crack *.rt -h 5d41402abc4b2a76b9719d911017c592
rcrack *.rt -l hash.txt
4. John
简介
基于 CPU
支持众多服务应用的加密破解
支持某些对称加密算法破解
模式
Wordlist:基于规则的字典破解
Single crack:默认被首先执行,使用Login/GECOS信息尝试破解
Incremental:所有或指定字符集的暴力破解
External:需要在主配配文件中用C语言子集编程
默认破解模式
Single、wordlist、incremental
主配置文件中指定默认wordlist
破解Linux系统账号密码
破解windows密码
Johnny 图形化界面的john
5. ophcrack
简介
基于彩虹表的LM、NTLM密码破解软件
彩虹表:
0条大神的评论