赞
踩
本期内容
1.了解什么是渗透测试
2.常见漏洞有哪写
3.练习测试
在信息安全中渗透测试方向,OWASP TOP 10 是渗透测试人员必须要深入了解和学习的,今天我们来深入了解和学习下 OWASP 发布的以往最重要的两个版本,研究下我们 IT 行业从业人员最容易引入的漏洞,后续文章会更新具体的漏洞原因、场景、防护手段,提升我们的应用抗风险能力。
应用程序安全风险
攻击者可以通过应用程序中许多的不同的路径方式去危害企业业务。每种路径方法都代表了一种风险,这些风险都值得关注。
OWASP(开放式Web应用程序安全项目)是一个开放的社区,由非营利组织 OWASP基金会支持的项目。对所有致力于改进应用程序安全的人士开放,旨在提高对应用程序安全性的认识。
其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结并更新Web应用程序中最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。
最重要的版本
应用程序中最严重的十大风险
在 2013、2017 的版本中都是第一名,可见此漏洞的引入是多么的容易,同时也证明此漏洞的危害有多么严重。
利用应用程序弱点,通过恶意字符将恶意代码写入数据库,获取敏感数据或进一步在服务器执行命令。
未审计的数据输入框
使用网址直接传递变量
未过滤的特殊字符
SQL 错误回显
获取敏感数据或进一步在服务器执行命令接管服务器
SQL 注入
其实注入有很多类型,常见的注入包括:SQL、OS 命令、ORM、LDAP和表达式语言或者 OGNL 注入,对于应用解释器来说这些概念都是相同的。对于最常见的SQL注入,后端开发人员经常会拼接 SQL 查询;在不经意间就引入了 SQL 注入漏洞。
一个例子
select * from users where pwd=‘输入字符’
– 恶意代绕过 ’ or 1=1 --’
select * from uses where pwd = ‘’ or 1=1 --’
SQL 注入工具
作为最强大的 SQL 注入工具,这里要介绍下基于 python开发的 SQLmap,SQLmap 支持对 PostgreSql,MySQL,Access,MsSql Server 等数据库的自动化注入。是在检查SQL注入漏洞方面最得力的工具。
关闭 SQL 错误回显
前端输入字符白名单验证(长度、类型等)
对输入的特殊字符使用转义处理
SQL 操作使用 PreParedStatement
SQL 服务运行于专门的账号,并且使用最小权限
限制 SQL 服务的远程访问,只开放给特定开发人员
代码审计,最有效的检测应用程序的注入风险的方法之一
使用成熟的 waf
攻击方式
攻击者利用网站应用程序中的身份认证缺陷获取高权限并进行攻击应用服务
应用程序身份认证系统认证缺陷
盗用账号与身份
常见设计缺陷
修改利用网络协议数据包获取使用者账号密码
网站设计不良,可直接绕过验证页面
使用者忘记注销,而让攻击者有可趁之机
弱密码
弱密码攻击
身份认证非常容易受到弱密码攻击,常用的弱密码攻击方式有
常用密码攻击 - 使用泄露的密码字典攻击
使用公司名称缩写、域名、电话号码
全数字、英文的简单密码
账号与密码相同的
不同网站、电脑、APP 使用了相同的密码
网站的登录页面就使用加密连接
网站应该具体良好的权限控制与管理
网站应该具备超时注销机制
常见的攻击方式主要是扫描应用程序获取到敏感数据
应用维护或者开发人员无意间上传敏感数据,如 github 文件泄露
敏感数据文件的权限设置错误,如网站目录下的数据库备份文件泄露
网络协议、算法本身的弱点,如 telent、ftp、md5 等
####漏洞影响
应用程序、网站被修改
个人资料、公司资料泄露,被用于售卖获利
对于 github 泄露,定期对仓库扫描
对于应用网站目录定期扫描
使用强壮的网络协议与算法
当应用程序解析 XML文件时包含了对外部实体的引用,攻击者传递恶意包含 XML 代码的文件,读取指定的服务器资源。
XML 协议文档本身的设计特性,可以引入外部的资源;定义 XML 文件时使用的外部实体引入功能
读取服务器敏感资料,如、/etc/password
读取应用程序源码
关闭 DTD (Data Type Definition)
禁止外部实体引入
未通过身份验证的用户始是恰当的访问控制,攻击者可以利用这些缺陷访问未经授权的功能或者数据
缺陷BUG
绕过路径,如未读取的参数做检查,导致路径绕过读取到敏感文件
权限提升,如未对权限做检查,导致攻击者变更权限
垂直越权,攻击者可以从普通的用户权限提升到管理员的权限访问应用程序
水平越权,攻击者可以从普通用户A的权限提升到普通用户B的权限访问应用程序
对参数的白名单过滤
对权限的控制管理重新设计与限制
限制下载文件的类型
攻击者利用错误配置攻击,获取敏感数据或者提升权限
开发或者维护人员设置了错误的配置,如 python 开发中对于 Django 框架在生产环境启用了 Debug 模式
可让攻击者获取到敏感数据
可让攻击者提升权限,如未修改应用程序配置的默认密码,未删除应用程序安装程序目录文件等
目录遍历
检查文件扩展名
重命名上传文件
控制上传文件的权限,如关闭执行权限
移除不使用的页面,如安装目录文件
移除临时文件、备份文件
不使用简单的命名规则,防止猜测
定义白名单
攻击者使用恶意字符嵌入应用程序代码中并运行,盗取应用程序数据
(这个仅于IE7(含)之前有效)
应用程序未对应用输入做过滤与检查,导致用户数据被当作代码执行。
欺骗使用者点击嵌入了恶意网站的正常网站,获取使用得的敏感数据
盗取使用者 cookie,冒用使用者身份
验证输入/接收的字符,过滤或者替换非法字符
使用白名单机制
攻击者利用应用程序反序列化功能,反序列化恶意对象攻击应用程序。
应用程序在反序列化数据对象时,执行了攻击者传递的恶意数据对象
最严重情况下,可导致远程代码执行 RCE
注入攻击
越权
对数据对象签名,并作完整检查
数据对象中的数据做严格的类型检查,限制一部分恶意攻击
隔离反序列化操作环境
利用应用程序技术栈中的框架、库、工具等的已知漏洞进行攻击,获取高权限或者敏感数据
应用程序技术栈中使用的框架、库、工具爆出了漏洞,应用程序未能及时更新与修复
敏感数据泄露
提升权限
远程代码执行
及时更新、修复组件漏洞
移除不再使用的依赖组件
对于日志记录的监控不足,造成攻击者攻击系统、应用、盗取数据等操作无法被发现和追查。
无法判断安全事件的发生
无法判断和修复漏洞
导致再次被入侵
启用日志监控、告警机制
启用异地监控,C/S架构的监制机制
尽可能的完整记录所有日志
打开网站 修改测试等级
找到smithy 的密码
步骤
1、抓包(请求响应,http协议 内容 )
打开Burp Suite 下载地址链接
打开 内置浏览器 进行抓包
再内置浏览器里输入DVWA测试的网站
登录smithy账号 随便输入密码 进行抓包
2、中断请求响应,并修改它发送。
打开Burp Suite 查看 我们抓的包
这里是我刚才提交的请求
右键这个请求选择send to intruder
接下来 打开 intruder
这里的load 是添加你的密码本文件
因为我们不知道 smithy的密码 所以要一个一个测试
密码本文件 可以在网上 自行下载
然后点击start运行就可以了
看他的长度 长度 不一样的 就是对的 也就是 我们要找的密码
这里 就登录成功啦
尝试输入下 127.0.0.1 查看本机网址
思路:定位问题的思路,127.0.0.1 网络,本机。如果你 要 证明你的电脑网卡和网卡的 驱动没问题。ping 127.0.0.1
ping 192.168.1.1 (网关或网中任何 一 台 电脑的 IP) 证明局域网没 问题。
ping www.baidu.com (互联网) 证明公网,互联网没问题。
1、测试用例1:127.0.0.1 | ls 只显示后面结果 查看当前目录下的文件
2、测试用例 127.0.0.1 & cat index.php & 两个命令都显示。 查看这个文件并显示出来
3、测试用例 127.0.0.1 & ( |)都行,后面就跟linux命令,哪个都可以 cat /etc/passwd 查看所有用户的密码
打开测试网站
修改密码点击提交 获取上方URL
新建一个html文件写入超链接 加上你刚才修改完提交的url
保存 运行
步骤
❖ 1、输入“success”即可成功:
❖ 2、Invalid token.
❖ 3、看源码:token,
❖ 4、抓包提交要token,查看token是否变化
❖ 5、输入“success”,在控制台中输入generate_token();这个方法,将输入的文本生成token,再提交
1、让我们提交一 下success就行了。
2、我们提交 后invalid token ,token不对。检查源码,F12 --元素。hidden --token
3、使用前端修改属性技术,把这token弄出来,在页面上看到输入框中有token,提交时查看token对不对 ,如果不对,找到对的。
我们先查看生成token的方法
后面的md5(rot13(phrase));是生成token的方法
把里面的phrase 换成succes
再控制台里输出
md5(rot13(“succes”));
右键success选择检查 替换里面的token
点击提交
前面方法:修改为可见,直接修改属性,
后一种方法:按它的逻辑进行。
逻辑,输入文本,+ 生成token 一起发,成功。
漏洞:找到隐藏文件
1。打开测试网站
一次点击 1,2,3文件
可以看到他们的url都是有规律的
http://114.116.97.187:3333/DVWA/vulnerabilities/fi/?page=file1.php
http://114.116.97.187:3333/DVWA/vulnerabilities/fi/?page=file2.php
http://114.116.97.187:3333/DVWA/vulnerabilities/fi/?page=file3.php
2.那么我们就可以更改上面的url来进入隐藏文件
1、建立一个txt文件,用php写法
http://114.116.97.187:3333/DVWA/vulnerabilities/fi/?page=…/…/hackable/uploads/gxy.txt
再文件上传的地方 修改一下url
❖ 什么是 CSP(内容安全策略)?
❖ CSP 是一种浏览器安全机制,旨在缓解XSS和其他一些攻击。它通过限制页面可以加载的资源(例如脚本和图像)以及限制页面是否可以被其他页面框住来工作。
❖ 要启用 CSP,响应需要包含一个 HTTP 响应标头,该标头Content-Security-Policy使用包含策略的值调用。策略本身由一个或多个指令组成,用分号分隔。
![在这里插入图片描述](https://img-blog.csdnimg.cn/f9425ce79d1a469f9f3438347a72eb23.png)
如果网站安全过低 则用户可以传进去任何文件
1、建立一个js文件
2、通过file upload上 传到 服务器上,记住上传路径 在哪 。
第一步F12检查
1代表自己所在的网络
2代表 允许访问的人的网络 也就是大家所说的白名单
第二步
输入 我们上传的文件的地址
…/…/hackable/uploads/text.js
可以看到 已经成功啦 弹出框出现啦
漏洞:
❖ 用户访问服务器的时候,一般服务器都会分配一个身份证 session id 给用户,用于标识。用户拿到 session id 后就会保存到 cookies 上,之后只要拿着 cookies 再访问服务器,服务器就知道你是谁了。但是 session id 过于简单就会容易被人伪造。根本都不需要知道用户的密码就能访问,用户服务器的内容了。
为 了记住 一些东西,cookies将东西保存 到浏览器 ,客户端, session id --保存在服务器 端,服务器 发证书,如果你登陆,记住登陆 状态,下次访问时已经登陆。
如果我们得到你的sessionid或你的cookies的话,我就 可以伪造成你本人 ,登陆 状态。不需要输入用户名密码,就是已登陆状态。
可以看到如果我抓包的session特别简单,那么cookies中,可以伪造。
1、将级别 更新为中级
2、找到生成token的函数
点击查看源代码后
这个就是我们找到的生成token的反序函数
3、调试+交互,success ,控制台,do_elsesomething(),提交。
+XX,经过反序函数do_something()生成 即token=XXsseccusXX
上面的一种是F12控制台修改
还有另一中抓包的形式
用BurpSuite抓包 的形式 修改并重新提交
第一步 选择高级
第二步
点击JavaScript 查看源代码
发现他是加密的
按照他的提示我们去查看帮助
点开他 解密加密的代码
解密后:
function do_something(e) { for (var t = "", n = e.length - 1; n >= 0; n--) t += e[n]; return t } function token_part_3(t, y = "ZZ") { document.getElementById("token").value = sha256(document.getElementById("token").value + y) } function token_part_2(e = "YY") { document.getElementById("token").value = sha256(e + document.getElementById("token").value) } function token_part_1(a, b) { document.getElementById("token").value = do_something(document.getElementById("phrase").value) } document.getElementById("phrase").value = ""; setTimeout(function() { token_part_2("XX") }, 300); document.getElementById("send").addEventListener("click", token_part_3); token_part_1("ABCD", 44);
几个函数调用顺序及生成token的步骤如下:
1、执行token_part_1(),取phrase值并进行字符串翻转处理;
2、延迟300ms后执行token_part_2(),传入参数字符串’XX’和token值拼接并调用sha256()加密;
3、点击按钮时执行token_part_3(),将token值和字符串’ZZ’拼接并调用sha256()加密,从而得到最终的token;
一波操作如下,先将转换过来的JS前一部分关于sha256算法定义代码输入实现初始化,方便后面直接调用sha256():
我们查看源代码发现1、最后先调的token_part_1(“ABCD”, 44); 2、之后延时300ms ,
token_part_2(“XX”),本身带的参数token_part_2(e = “YY”),最后合成
token_part_2(“XX”,e=“YY”); 3、最后 token_part_3是加的监听器,在提交同时
触发这个函数不用调了。
可以看到我们的success token对了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。