SEC-2022版-0041-WEB攻防-32-通用漏洞之跨域CORS资源&JSONP回调&域名接管劫持
部分属于设计上的理念问题,不属于漏洞范畴。
前置知识点如何产生–发现–利用
同源策略(SOP)
“同源”包括三个条件:同协议 、 同域名 、 同端口
同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互,这是一个用于隔离潜在恶意文件的关键的安全机制.简单说就是 浏览器 的一种 安全策略 。
虽然同源策略在安全方面起到了很好的防护作用,但也在一定程度上 限制了 一些 前端 功能的实现,所以就有了许多 跨域的手段 。
# 不同源:1.http&httpshttp://www.sywsec.comhttpas://www.sywsec.com2.子域名http://www.sywsec.comhttp://www.sywxxx.com3.端口http://www.sywsec.comhttp://www.sywsec.com:33属于同源http://www.sywsec.com/sywsec检测的是数据包的来源
子域名接管:
域名解析记录指向域名,对应主机指向了一个当前未在使用或已经删除的特定服务,攻击者通过注册指向域名,从而控制当前域名的控制权,实现恶意软件分 ...
SEC-2022版-0040-WEB攻防-31-通用漏洞之CRLF注入&URL重定向&资源处理拒绝服务
知识点
CRLF注入漏洞
属于轻微漏洞,更改数据包解构
配合xss等进行检测
是因为Web应用没有对用户输入做严格验证,导致攻击者可以输入一些恶意字符。
攻击者一旦向请求行或首部中的字段注入恶意的CRLF,就能注入一些首部字段或报文主体,并在响应中输出,所以又称为HTTP响应拆分漏洞。
GET /fd/ls/l?IG=xxx HTTP/2Host: www.sywsec.com # 使用这个host来重定向hostHost: www.bing.comCookie: #######User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0Accept: image/avif,image/webp,*/*Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateReferer: https://www.bi ...
SEC-2022版-0039-WEB攻防-30-通用漏洞之弱口令安全&社工字典生成&服务协议&Web应用
总览前置知识:
弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令,通常与 管理的安全意识 和 平台的初始化配置 等相关,通过系统弱口令,可被黑客 直接获得系统控制权限 。
在常见的安全测试中,弱口令会产生安全的各个领域,包括Web应用,安全设备,平台组件,操作系统等;如何获取弱口令,利用弱口令成为了此类安全问题的关键!
// 简单查信息是否泄露:https://haveibeenpwned.com/https://monitor.firefox.com/// 查邮箱注册了哪些网站https://www.reg007.com/BP使得明文自动加密为md5的方法: 在BP爆破密码时,为了使得爆破的密码从明文转为md5并且发送出去 我们可以在爆破字典添加的下面添加payload processing 选择添加->hash->md5 将会自动将发送的明文转换为md5加密的密文再发送上去。爆破参数大于2时,BP选择音叉(Pichfork攻击)
Web类-加密&a ...
SEC-2022版-0038-WEB攻防-29-通用漏洞之业务逻辑漏洞-验证码&找回密码
总览知识点:
找回密码逻辑机制
回显&验证码&指向
验证码验证安全机制
爆破&复用&识别
找回密码
客户端回显&Response状态值&修改重定向
验证码技术
验证码爆破,验证码复用,验证码识别等
详细点:
找回密码流程安全:
用回显状态判断
res前端判断不安全
用用户名重定向
修改标示绕过验证
跳过其它验证,最终验证时将用户对象改为B
验证码回显显示
验证码泄漏验证虚设
尝试看验证码是否在数据包体现出来
验证码简单机制
验证码过于简单爆破
尝试无验证码的情况下对目标进行爆破(提交次数不受限制的情况下)
验证码绕过安全:
验证码简单机制
验证码过于简单爆破
验证码重复使用
验证码验证机制绕过
验证码智能识别
验证码图形码被识别
验证码接口调用
验证码触发机制枚举
安全修复方案:
找回机制要进行每一步验证-防绕过重定向
找回机制要进行服务端验证-防res数据修改
找回机制要控制验证码安全-防验证码攻击
验证码接口需验证后被调用-防接口被乱调用
验证码引用智能化人工判断-防验证 ...
SEC-2022版-0037-WEB攻防-28-通用漏洞之业务逻辑漏洞-支付逻辑漏洞
支付逻辑安全尝试任何篡改商品数据的操作,简单点说想办法0元购,或者无线接近0元购,或者让对方直接倒贴。
熟悉常见支付流程
选择商品和数量
选择支付及配送方式
生成订单编号
订单支付选择
完成支付
熟悉那些数据篡改
商品编号ID(购买成功的一刹那换成别的商品的ID),购买价格(超低价购买),购买数量(小数或者负数购买),支付方式,订单号,支付状态等
熟悉那些修改方式
替换支付 :以3000元购买换掉6000元购买。
重复支付 :将支付成功的数据包重新放一遍,看是否能在不消费的情况下成功买下。
最小额支付 :以最低的金额去购买。更改价格和数量。
负数支付 :-1支付对方亏你xxx元
溢出支付 :直接爆满支付,看网站如何处理
优惠券支付 :借助优惠券支付
实战前提:网站有那个支付模块。
数据篡改-价格&数量&产品1、修改数量达到价格变动2、修改单价达到价格变动3、修改产品达到低价购买4、修改接口达到成功购买
参数修改
GET /index.php?m=Member&a=gobuy&iscart=0&id=127&name= ...
SEC-2022版-0036-WEB攻防-27-通用漏洞之业务逻辑&越权
总览前置知识:1、逻辑越权原理 -
水平越权:
同等级用户权限共享,相互关联互相查看
用户信息获取时未对用户与ID比较判断直接查询等
垂直越权:
不对等级别的用户权限共享,低高权限共享,从低权限跨越到高权限
数据库中用户类型编号接受篡改或高权限操作未验证等
2、访问控制原理-
验证丢失:
未包含引用验证代码文件等
有验证形式,但是没有验证
取消验证:
支持空口令,匿名,白名单等
类似于匿名访问,通过修改,对方不需要任何权限即可访问到
3、脆弱验证原理
Cookie&Token&Jwt:不安全的验证逻辑等
实例黑盒测试:修改任何和权限挂钩的参数值。
验证的三种情况:1.没验证,触发当前操作的用户权限(删除验证代码)2.有验证 逻辑顺序搞错了(应该先验证再判断)3.有验证 验证产生再用户凭据上(cookie jwt token)
权限-水平越权-YXCMS-检测数据比对弱只检测用户和ID对应关系,没检测当前操作用户是不是当前用户找到相关关键代码,因为几乎完全不同,暂时忽略。
权限-垂直越权-MINICMS-权限操作无验证后台数据包访问先执行后 ...
SEC-2022版-0036-WEB攻防-27-通用漏洞之反序列化-Python
总览前置知识:函数使用:pickle.dump(obj, file) : 将对象序列化后保存到文件pickle.load(file) : 读取文件, 将文件中的序列化内容反序列化为对象pickle.dumps(obj) : 将对象序列化成字符串格式的字节流pickle.loads(bytes_obj) : 将字符串格式的字节流反序列化为对象
魔术方法:__reduce__() 反序列化时调用__reduce_ex__() 反序列化时调用__setstate__() 反序列化时调用__getstate__() 序列化时调用
各类语言函数:Java: Serializable Externalizable接口、fastjson、 jackson、gson、ObjectInputStream.read、 ObjectObjectInputStream.readUnshared、 XMLDecoder.read、ObjectYaml.loadXStream.fromXML、 ObjectMapper.readValue、JSON.p ...
SEC-2022版-0035-WEB攻防-26-通用漏洞之反序列化-JAVA
总览序列化和反序列化的概念:
序列化:把Java对象转换为字节序列的过程。反序列化:把字节序列恢复为Java对象的过程。对象的序列化主要有两种用途:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;(持久化对象)在网络上传送对象的字节序列。(网络传输对象)
函数接口:Java: Serializable Externalizable接口、fastjson、jackson、gson、ObjectInputStream.read、 ObjectObjectInputStream.readUnshared、XMLDecoder.read、 ObjectYaml.loadXStream.fromXML、ObjectMapper.readValue、JSON.parseObject等PHP: serialize()、 unserialize() Python: pickle
数据出现:
功能特性:
反序列化操作一般应用在导入模板文件、网络通信、数据传输、日志格式化存储、对象数据落磁盘、或DB存储等业务场景。因此审计过程中重点关注这些功能板块。
...
SEC-2022版-0034-WEB攻防-25-通用漏洞之反序列化-PHP-2原生类&漏洞绕过&公私有属性
方法&属性-调用详解&变量数据详解原生类的利用场景:无方法可以使用的情况。
对象变量属性:public(公共的): 在本类内部、外部类、子类都可以访问protect(受保护的): 只有本类或子类或父类中可以访问private(私人的): 只有本类内部可以使用
序列化数据显示:
private属性序列化的时候格式是%00类名%00成员名protect属性序列化的时候格式是%00*%00成员名%00和%00*%00都是插入到数据的首末的
具体代码:
<?phpheader("Content-type: text/html; charset=utf-8");三种属性/*public private protected说明class test{ public $name="xiaodi"; private $age="29"; protected $sex="man";}$a=new test();$a=serialize($a);print_r($a) ...
SEC-2022版-0033-WEB攻防-24-通用漏洞之反序列化-PHP-1基础及利用
总览知识点:1、什么是反序列化操作?
格式转换
2、为什么会出现安全漏洞?
魔术方法
3、反序列化漏洞如何发现?
对象逻辑
4、反序列化漏洞如何利用?
POP链构造
补充:反序列化利用大概分类三类
魔术方法的调用逻辑-如触发条件★★★
语言原生类的调用逻辑-如SoapClient
语言自身的安全缺陷-如CVE-2016-7124
反序列化课程点:
PHP&Java&Python
序列化:对象转换为数组或字符串等格式 保证数据完整传输到对方,传递更加效率serialize() //将一个对象转换成一个字符串反序列化:将数组或字符串等格式转换成对象unserialize() //将字符串还原成一个对象
PHP反序列化漏洞原理:
未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果。
在反序列化的过程中自动触发了某些魔术方法。当进行反序列化的时候就有可能会触发对象中的一些魔术方法。
魔术方法利用点分析:触发:unserialize函数的变量可控,文件中存在可利用 ...