安全测试-渗透测试简记
在本人测试生涯中,涉及到的认证授权相关的功能包括如下:
登录状态:如某些功能登录后才能用的。需要我们对所有url地址在不登录时直接访问。
权限校验:如员工权限不一样的展示的界面也不一样。还有如避免未经授权的页面可以直接访问。
版本划分:如不同的版本收费不同。高低版本切换,低到高是否正常。
Session与Cookie
信息脱敏:应避免保存敏感信息(主要是用户名、密码)到cookie文件中。
cookie作用域:不同cookie对应不同作用域。
DDOS拒绝服务攻击
原理:向服务器疯狂发送请求,导致服务器崩溃,无法进行正常处理;
肉鸡:远程控制多台电脑同时向服务器发请求;
攻击联盟:与肉鸡同样的道理,达到分布式效果。由于请求都是真实的,但是请求量过大导致服务器崩溃。服务器无法通过禁用IP、防火墙来限制,最好的解决方式,增加服务器资源。
其他:TCP三次握手的过程:C-->S;S-->C;C-->S。如果三次都成功则会建立连接。根据此规则,客户端模拟一个不存在IP地址向服务器发送请求,服务端在向客户端发起第二次握手时,由于服务端找不到IP地址导致连接资源一直处于等待状态,在连接数量过大时会导致服务器资源崩溃。
文件上传漏洞
(如2021-4-16微信爆出高危0day漏洞,告诉了我们不要点击来源不明的文件或链接!)
文件上传的过滤:①通过后缀名过滤;②通过二进制来判断文件类型(防止修改后缀名);
修改服务器核心参数:禁止脚本引擎运行系统命令;
<?php system($_GET['cmd']); ?>:将该命令写一个php文件并上传,上传后直接点击php文件,如果在windows,http://127.0.0.1:8080/?cmd=dir 显示当前目录。如果不做限制,那么就能执行任意命令。
XSS跨站攻击
原理:Cascading Style Sheets即CSS的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS允许恶意web用户将代码植入到提供给其它用户使用的页面中。
模拟XSS攻击:对所有输入框做校验:<input type="button" value="点击" οnclick="alert('哈哈哈')" />以上一行代码在输入框输入并提交成功后,如果页面出现一个可点击按钮,表示没有对输入内容进行过滤,存在安全问题。
获取用户cookie:<img src="www.***.html" οnclick="document.getElementById('kw').value=document.cookie">其他用户在点击后,就直接能获取到用户cookie,常见于钓鱼、小电影网站。
SQL注入
原理:用于关系型数据库,解析到的查询类似如下:select * from user where username=‘$username’ and password=‘$password’ $username=x' or userid=1 # ' 。怎么做呢?利用url地址参数进行SQL注入:http://www.***.com tid=9527 and 1=2 tid=9527 order by 10
恶意行为:通过SQL注入获取服务器端数据库的内容;通过SQL注入修改数据库的内容。
其他:php, asp, jsp, mysql, sqlserver, oracle, access都有不同的攻击方式。
暴力破解
使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录。理论上只要字典足够庞大,枚举总是能够成功的!毕竟某哲人有言:给猴子某个时间尺度,它也可以写出莎士比亚的作品。
CORS和CSRF
CORS:是一个W3C标准,叫"跨域资源共享",他允许浏览器向夸源服务器,发出XMLHTTPRequest请求,从而克服了AJAX只能同源使用的限制。
CSRF:“跨站请求伪造”,指攻击者盗用了你的身份以你的名义发送恶意请求,CSRF主流防御方式是在后端生成表单的时候生成遗传随机token,内置到表单里成为一个字段,同时,将此串token置入session中,每次表单提交到后端时都会检查这两个值是否一致,以此来判断此次表单提交是否是可信的。提交过一次之后,如果这个页面没有生成CSRF token,那么token将会被清空,如果有新的需求,那么token会被更新。
渗透测试简介
渗透测试:通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。
渗透工作:用各种手段对某个特定网络进行测试以发现漏洞,分析威胁,指定对策等。
信息收集
获取域名的拥有者信息,如信命邮箱电话。
查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。
查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞。
查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。
扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针。
google hack进一步探测网站的信息,后台,敏感文件。
漏洞挖掘
开源软件漏洞发现: 1. 通过指纹识别软件判断开源软件的版本信息,针对不同的版本信息去开放的漏洞数据库查找相应版本的漏洞进行测试。2. 对于默认的后台登录页、数据库服务端口认证等入口可以进行简单的暴力破解、默认口令尝试等操作。3. 使用开源的漏洞发现工具对其进行漏洞扫描,如:WPScan。(常见的开源软件有wordpress、phpbb、dedecms 开源的框架:常见的开源框架有Struts2、 Spring MVC、ThinkPHP 中间件服务器:常见的中间件服务器有jboss、tomcat、Weblogic 数据库服务:常见的数据库服务mssql、mysql、oracle、redis、sybase、MongoDB、DB2)
自主开发的应用漏洞发现:手动测试:这个阶段,我们需要手工测试所有与用户交互的功能,比如:留言板、登入口、下单、退出、退货、付款等操作 软件扫描:如:appscan、wvs、netsparker,burp,nessus等
可能存在的漏洞Owasp关键点 SQL注入 XSS攻击 代码安全之上传文件 代码安全之文件包含 代码安全之SSRF 逻辑漏洞之密码重置 逻辑漏洞之支付漏洞 逻辑漏洞之越权访问 平台安全之中间件安全。(其他相关漏洞见上面的渗透测试篇)
漏洞稳定复现
手工测试:使用各种测试方法对目标进行测试,需要测试者对目标业务形态比较了解。
工具测试:网络上有很多好用的免费利用工具,比如针对sql注入的sqlmap、针对软件漏洞的matesploit等。
后记
黑客黑掉某个虚拟空间需要什么?