赞
踩
漏洞扫描的原理
漏洞扫描技术是建立在端口扫描基础之上的。从对黑客的攻击行为的分析和收集的漏洞来看,绝大多数都是针对某一端口的。所以漏洞扫描技术是以端口扫描的思路来开展扫描的。主要是检查目标主机是否存在漏洞。
漏洞扫描的方法
nmap是一款免费开放的网络扫描和嗅探工具包,即网络映射器。具有灵活(支持10种不同扫描方式,支持多目标扫描)、强大(可扫描互联网上大规模的计算机群)、自由可移植(支持主流的操作系统,源码开放)、文档丰富,有强大的社区支持等。
通常在使用时:首先进行主机发现,找出活动主机,然后确定活动主机的端口状况。根据端口扫描,确定占用该端口的应用程序及版本信息。
nmap的基本功能是主机发现、端口扫描、应用程序与版本信息侦测、操作系统侦测。此外,提供防火墙与IDS的规避技巧,提供强大的NSE(Nmap Scripting Language)脚本引擎功能,可以对基本功能进行补充和扩展。
Nessus是一个可提供全方位服务的安全扫描程序。它的插件式结构允许用户自定义其系统和网络。
开放式漏洞评估系统是一套可用于扫描漏洞和全面漏洞管理的工具和服务系统。OpenVAS可提供基于网络、桌面和命令行的工具。
WVS是一款Windows平台上的漏洞扫描器,利用该工具可以对网站中可能存在的SQL注入、XSS跨站、文件上传、命令执行等漏洞进行综合扫描。
Burpsuite是一个可以用于攻击Web应用程序的集成平台。Burp套件允许攻击者将人工的和自动的技术结合起来,以列举、分析、攻击Web应用程序,或利用这些程序的漏洞。各种各样的burp工具协同工作,共享信息,并允许将一种工具发现的漏洞作为另一种工具的基础。
Nikto是一款开源的网页服务器扫描器,它可以对网页服务器进行全面的多种扫描。包含超过3300种有潜在危险的文件CGIs;超过625种服务器版本;超过230种特点服务器问题。
JoomScan是一个开源项目,其主要目的是实现漏洞检测的自动化,以增强Joomla CMS开发的安全性。该工具基于Perl开发,能够轻松无缝地对各种Joomla项目进行漏洞扫描,其轻量化和模块化的架构能够保证扫描过程中不会留下过多的痕迹。它不仅能够检测已知漏洞,而且还能够检测到很多错误配置漏洞和管理权限漏洞等等。JoomScan使用简单,提供了友好的用户界面,而且能够以HTML或文本格式导出扫描报告。
CrowdStrike提供一个客户端工具,可以扫描指定IP地址段的OpenSSH服务漏洞。
扫描目标主机是否存在MS17-010漏洞
访问
在某种程度上来说,信息安全就是通过控制如何访问信息资源来防范资源泄露或未经授权修改的工作。访问是主体和客体之间的信息流动,主体是访问中主动的实体,可以是人、程序、进程等;客体是被动的实体,可以是文件、光盘、数据库等。
访问控制
主体访问客体通常需要四个步骤:
- Identification 身份标识
- Authentication 身份验证
- Authorization 授权
- Accountability 审计
访问控制模型
访问控制模型是规定主体如何访问客体的一种架构,主要分为三种:
什么是逻辑漏洞
逻辑漏洞是由于人的逻辑不严谨而导致的代码中的漏洞。由于人很容易犯错,所以逻辑漏洞一直都在。而且由于逻辑漏洞产生的流量多数为合法流量,一般的防护手段或设备无法阻止,也导致逻辑漏洞成为防护中的难题。
逻辑漏洞的分类
验证机制是信息系统安全机制中最简单、最前沿的一种机制。最常见的方式是信息系统要求用户提交用户名与密码,正确则允许用户登录,错误则拒绝用户登录。
从控制力度来看,可以将权限管理分为功能级权限管理和数据级权限管理;从控制方向来看,可以将权限管理分为从系统获取数据和向系统提交数据。
每个业务系统都具有不同的业务逻辑,需要具体分析。
暴力破解也称为蛮力攻击,指利用穷举法将所有的可能性一一尝试,在理论上可以破解所以密码问题。在实际测试中,考虑到攻击成本问题,通常使用字典攻击,即逐一尝试用户自定义词典中的可能密码(单词或短语)的攻击方式。
使用弱口令(容易被他人猜到的口令)字典进行字典攻击。除123456、12345678、admin等常见口令外,生日、姓名、手机号、1qaz@wsx等也被称为弱口令。
登陆失败后,一些网站会提示如用户不存在、密码错误、用户未注册等详细信息。通过这些信息可以推断出用户名、密码等其他信息。
类似于手机号、学号等用户名或初始密码。如果已知某网站的初始密码,则利用此密码爆破用户名会更快。
使用Burpsuite进行暴力破解
1. Burpsuite的密码暴力破解模式
- Sniper:狙击手模式,单参数破解,多参数时同一个字典按顺序替换各参数;
- Battering ram:攻城锤模式,只使用一个payload,每次替换所有位置;
- Pitchfork:草叉模式,每个位置单独设置payload,并一一对应;
- Cluster bomb:集束炸弹模式,每个位置单独设置payload,尝试使用所有组合。
2. 获取成功破解的结果
- 根据返回包长度:认证成功和认证失败时返回的Response包的长度通常不同
- 根据返回包内容:在Option选项卡中的Grep-Match中过滤Invalid\Error\Success等内容
3. 处理Hash值传输
- 有些网站出于安全考虑,将用户口令进行Hash之后传输
- 处理字典:对字典中的口令依次计算Hash值,生成新的口令字典
- Burpsuite自动处理:在对应Payload选项卡中的Payload Processing中通过Add进行相关设置(添加多个处理方式时会依次进行处理)
4. 处理盐值
① 利用Burpsuite宏绕过
- 有些网站前端在每次发送时,增加了一个随机的salt字段,用来防止数据包重放(或是CSRF攻击),这样Intruder模块就失效了
- 1. 打开Options-Sessions选项卡中的Macros,并Add添加一个Macro
- 2. 在Macro Recorder中选择相关的请求
- 3. 可以根据功能自定义Macro description
- 4. 选择configure item进行编辑
- 5. 在Custom parameter locations in response窗口处选择Add
- 6. 在Parameter name处修改参数名称,并选择参数的位置,Burpsuite可以自动生成正则表达式
- 7. 点击OK可以看到Macro已经设置好了
- 8. 在Session Handling Rules中选择Add
- 9. 再Details选项卡中,可以根据功能自定义Rule Description
- 10. 在Rule Actions处选择Add-Run a macro
- 11. 选择之前设置的Macro,并选择Update only the following parameters,选择后面的Edit,添加要更改的参数名称
- 12. 在Scope选项卡中
- 1) Tools Scope选择除Extender之外的全部选项
- 2) URL Scope选择Include all URLs
- 13. 选择OK,规则设置完成
- 14. 之后再进行Intruder Attack即可
- 需要注意的是由于Requests有先后顺序,Threads不能设置的太高

② 利用requests编写python脚本
- import requests
- import re
-
- url = ''
- cookie = ''
- header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0', 'Cookie': cookie}
-
- def getSalt():
- r = requests.get(url, headers=header)
- reg = '' # salt部分的正则表达式
- salt = re.findall(reg, r.content)[0]
- return salt
-
- def attack():
- u = open('', 'r') # 打开用户名字典
- p = open('', 'r') # 打开口令字典
- userlist = []
- passlist = []
- for line in u.readlines():
- userlist.append(line.strip())
- for line in p.readlines():
- passlist.append(line.strip())
- u.close()
- p.close()
- for user in userlist:
- for passwd in passlist:
- data = ['login': user, 'password': passwd, 'salt': getSalt()] # 构造包
- rs = requests.post(url, data=data, headers=header)
- print(str(len(rs.text)) + ':' + user + '/' + passwd)
-
- attack()

5. 生成字典
① crunch:以一定的规则生成字典
- 示例:
- 1. 生成长度为4 由数字组成的字典
- crunch 4 4 1234567890
- crunch 4 4 -t %%%%
- 2. 长度为8 以2019开头的字典
- crunch 8 8 -t 2019%%%%
- 3. % 代表数字 @ 代表小写字母 , 代表大写字母 ^ 代表特殊字符
② cupp:生成社会工程学字典
③ cewl:爬取网站内容生成字典
④ 编写脚本
- 字典组成要素:
- 1. 常见弱口令
- 2. 姓名全拼及缩写
- 3. 全部及部分手机号
- 4. 出生日期及变形
6. 绕过验证码
- 绕过图片验证码:
- 1. 验证码不生效/不更新/不失效
- 2. 验证码可预测/删除/获取
- 3. 验证码可识别
- 4. 寻找其它登陆页面
- 绕过短信验证码:
- 1. 4/6位暴力破解
- 2. 篡改手机号
- 3. 篡改Response
常见问题
令牌有含义
令牌可能是具有含义的数据,如:
应该注意的安全问题:
令牌可预测
令牌可能具有一定的规律,如:
令牌可获取
令牌可能采用了不安全的传输和存储方式,如:
令牌不失效
令牌的有效期可能过长,可以考虑:
令牌(Cookie)属性
属性 | 含义 |
Domain | 指定可以访问该Cookie的域名。 如果设置为".google.com",则所有以".google.com"结尾的域名都可以访问该Cookie。 |
Path | Cookie的使用路径。 如果设置为"/sessionWeb/",则只有contextPath为"/sessionWeb"的程序可以访问该Cookie。如果设置为"/",则本域名下contextPath都可以访问该Cookie。 |
Expires | 指定了Cookie的生存期,默认情况下是暂时存在的,存储的值只在浏览器会话期间存在,当用户退出浏览器后这些值也会丢失。 |
HttpOnly | 如果在Cookie中设置了该属性,那么通过js脚本将无法读取到Cookie信息,这样能有效的防止XSS攻击。 |
越权操作
越权操作是信息系统中较为常见的一种漏洞,指的是信息系统对用户的操作权限审核不严,从而使得用户进行了自己权限之外的操作。
权限控制方式
定义
未授权访问是指需要安全配置或权限认证的地址、页面存在缺陷,导致其他用户可以直接访问。从而引发重要权限可被操作,数据库、网站目录等敏感信息泄露。
目前主要存在未授权访问漏洞的场景
NFS服务, Samba服务, LDAP, Rsync, FTP, GitLab, Jenkins, MongoDB, Redis, ZooKeeper, ElasticSearch, Memcache, CouchDB, Docker, Solr, Hadoop, Dubbo等。
Web应用的未授权访问
在正常情况下,管理后台的页面应该只有管理员才能够访问。这些页面是不应该被链接到前台页面上的,搜索引擎的爬虫也不应该搜索到这些页面。但是一些系统未对用户访问权限进行验证,导致任意用户只要构造出正确的URL,就能够访问到这些页面。
解决方案:
测试方法:
水平越权的原理及修复
原理:
水平越权指攻击者尝试访问与其具有相同级别的用户资源。
用户A与用户B都属于同一个角色RoleX,但用户A与用户B都各自拥有一些私有数据。在正常情况下,应该只有用户自己才能访问自己的私有数据。但是在RBAC模型下,系统只会验证用户A是否属于角色RoleX,而不会判断具体身份。因此就有可能发生越权访问。
修复:
垂直越权的原理及修复
原理:
垂直越权指低级别攻击者尝试访问高级别用户的资源。
一般来说,高权限角色访问低权限角色的资源往往是被允许的,低权限角色访问高权限角色的资源往往是被禁止的。如果低权限角色的用户通过一些方法能够获得高权限角色的能力,则发生了越权访问。
修复:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。