什么是渗透测试?
渗透测试(Penetration Test)是指从一个攻击者的角度来检查和审核一个网络系统的安全性过程。通常由安全工程师尽可能完整地模拟黑客使用
的漏洞发现技术和攻击手段,对目标网络/系统/主机/应用的安全性作深入的探测,发现系统最脆弱的环节。渗透测试能够直观的让管理人员知道自己网
络所面临的问题
渗透测试的范围:
操作系统(windows、solaris、aix、linux等操作系统)
应用系统(web、ftp、mail、dns、网盘等应用系统)
网络设备(各种防火墙、入侵检测系统、网络路由交换设备)
数据库系统(ms-sql、oraacle、mysql、db2等数据库)
安全管理(安全管理的规章制度、业务流程等)
渗透测试流程:
明确目标-[信息收集-信息整理-信息分析]-漏洞探测-漏洞验证-获取所需-形成报告
一般会在信息方面所花费的时间大约在渗透测试中占80%
各类信息收集的手段
whois信息(whois信息可以获取关键注册人的信息、包括注册公司、注册邮箱、管理员邮箱、管理员联系手机等)
whois.chinaz.com(有些网站会被屏蔽了的比如百度)
kali系统
目标IP(子域名搜集的越完整,那么挖到的漏洞就可能更多)
kali里面可以通过host 地址可以获取到ip
旁站C段查询(旁站是目标网站在同一台服务器上的其他的网站)
www.webscan.cc
C段可以查看有没有同网段的服务器
子域名信息(子域名搜集的越完整,那么挖到的漏洞就可能更多)
子域名挖掘机
邮箱收集(首先确定目标的邮件服务器所在的真实位置,看看邮件服务器自身有没有什么错误配置)
CMS类型(有了目标的CMS,就可以利用相关的bug进行测试,进行代码审计)
大部分网站都有一个robots.txt
端口信息(每开启一个端口,那么攻击面就大了一点,开启的端口越多,也就意味着服务器面临的威胁越大)
kali -> nmap -A xxx.com 这是最简单的方法
服务器与中间件信息(通过Nmap、Zmap等端口和指纹识别功能搜集,也可以使用nc和telnet获取Banner信息进行识别)
sql注入原理及代码解析
客户端:参数值等数据被修改->服务端:未经检查和过滤即将被修改的数据注入到sql命令中,sql命令功能被修改
·->数据库引擎:执行被修改后的sql命令->服务端:将注入的结果返回给客户端->客户端:根据上一次注入获取到的敏感信息构造注入语句进行进一步注入
可以下载安装DVWA模板练习
一般来说我们手工注入比较复杂一点,还可以用sqlmap工具
反序列化漏洞
什么是序列化和反序列化?
在OSI七层协议模型中展现层(Presentation Layer)的主要功能是把应用层的对象转化成一段连续的二进制串,或者反过来,把二进制串转换成应用层的对象--这两个功能就是序列化和反序列化
XXE注入与SQL注入
对于sql注入,我们知道了外部传过来的东西不一定可信的。
所以XXE(XML外部实体注入)也可以按照SQL注入的方式来理解。
外部实体是个什么东西?
在杂乱无章的XML代码中,需要有维护秩序的"警察",而DTD充当维护XML代码的"警察",只可惜你不知道的是,他可能是外包的....
任意文件读取:
系统-权限过大赋予应用层的权限过大,导致漏洞产生后可以访问敏感文件
应用-控制不严格导致恶意用户可以访问额外的资源
常见任意文件读取:
可以用Google hacking或web漏洞扫描器
从链接上看,形如:
·readfile.php?file=***.txt ·&urls=
·download.php?file=***.rar ·&Lang=
从参数名看,刑如:·&dis=
·&RealPath= ·&data=
·&FilePath= ·&readple=
·&plepath= ·&plep=
·&Path= ·&src=
·&path= ·&menu=
·&inputFile= ·&META-INF
·&url= ·&WEB-INF
防不胜防的逻辑漏洞
逻辑漏洞与传统漏洞不同的是:它是一种业务逻辑上的设计缺陷业务流存在问题。
逻辑漏洞大概思路:
重置任意用户密码:验证码类缺陷、未校验缺陷、HOST头伪造、找回密码的凭证脆弱
支付逻辑漏洞:无验证步骤跳跃、金额修改、数量修改、sign值可逆
验证码绕过:图形类验证码绕过、短信类验证码绕过、短信/语音验证码重放、无限制发送
加密算法脆弱:前端呈现加密算法代码、代码层逻辑校验问题、算法脆弱,明文可判断、手机号可遍历发送