声明:只是用于学习交流,笔记记录,不可用作违规用途。
简单理解:就是编程人员的思维逻辑不够严谨导致攻击者有机可乘的漏洞。
逻辑漏洞还是一种虽然没有在owasp top10中提及到,但是往往会存在的漏洞,并且在hvv,渗透测试中广泛存在,造成的破坏可能一点不比sql注入,xss等漏洞小,如下是逻辑漏洞的top10挖掘方向。
交易支付、密码修改、密码找回、越权修改、越权查询、突破限制等各类逻辑漏洞,逻辑漏洞很多时候都需要脑洞大开。
在这里使用phpstudy搭建好了zzcms,注册填写相关信息,然后抓包。
将数据包发送到repeater,每次修改username值,发现,只需要修改username值就可以注册
成功⽤户,图形验证码⽆效,并且未对电话,邮箱等信息校验,可批量注册
同样是注册功能,在输⼊⽤户名时,发现会提示⽤户名是否存在,猜测该位置可以猜测哪些⽤户注册过该⽹站
在这里可以抓包,会发现对用户名id进行判断,发送到监测器,可以批量探测已经注册过的用户。
暴力破解用户名密码的情况,一般出现在登录部分没有验证码机制,没有根据用户名限制失败次数,没有根据IP限制失败次数等情况下。
一般来说:
1、可以在客户端上保存用户数据,起到简单的缓存和用户身份识别等作用
2、保存用户的登录状态,用户进行登录,成功登录后,服务器生成特定的cookie返回给客户端,客户端下次访问该域名下的任何页面,将该cookie的信息发送给服务器,服务器经过检验,来判断用户是否登录。
3、记录用户的行为
cookie分为会话cookie和持久cookie。
会话cookie是指在不设定它的生命周期,浏览器的开启到关闭就是一次会话,当关闭浏览器时,会话cookie就会跟随浏览器而销毁。
持久cookie则是设定了它的生命周期,此时,cookie像商品一样,有个保质期,关闭浏览器后,它不会销毁,知到设定的过期时间。
cookie伪造:通过修改cookie中的某个参数来实现登录其他用户。
测试方法:
如果用户登录验证使用cookie身份验证会存在安全隐患,cookie信息是外部控制的,如果验证不严很容易被绕过。
模拟环境:cookie身份绕过。
cookie可以在浏览器提交的数据进行修改的。
绕过方法:用buspteuie修改username不等于空即可绕过。
修复方式:
1、使用cookie身份验证时,不要使用简单的验证,对外部输入的参数进行过滤。
2、尽量使用session安全认证,session是外部不可控的。
cookie实际上是一小段文本信息,客户端请求服务器,绕过服务器需要记录该用户的状态,就使用response向客户端浏览器颁发一个cookie,客户端浏览器会把cookie保存起来,当浏览器再次请求该网站时,浏览器就会把请求地址和cookie一同给服务器,服务器检查该cookie,从而判断用户的状态,服务器还可以根据需要修改cookie的内容。
session是另一种记录客户状态的机制,不同的是cookie保存在客户端浏览器中,而session保存在服务器上,客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是session,客户端浏览器再次访问时只需要从该session中查找该客户的状态就可以了。
Session会话固定攻击:一种诱骗受害者使用攻击者指定的会话表示的攻击手段,利用了服务器的session不变的机制。
测试方法:
使用已经登录用户的session,修改用户名为任意用户,同样可以成功登录。
修复方法:不要把session放置网站目录,绕过需要就设置权限访问,除了本地其他用户禁止访问。
在产品展示中,商品大米测试产品价格6000元,网站存在支付逻辑漏洞,可以使用1毛钱购买6000元的大米测试产品。
开启抓包,点击加入购物车。
将price改为1,qty改为10,发送。(数量为10,价格为1)
在购物车即可看到已经被修改。
除了上述修改商品数量的方法,支付时的逻辑漏洞还包含以下几种思路:
修改商品编号,条件竞争,金额修改,充值中放弃订单未生效。
了解越权访问的概念,首先要了解授权和验证的概念,授权是指网站赋予特定人对网站特定资源的读写权限,而验证是网站用于检查操作者是否真的可以对特定资源进行读写。
未授权访问是指用户在梦游通过认证授权的情况下,能够直接访问需要通过认证才能访问到的页面或文本信息。
由于梦游对用户权限进行严格的判断,导致低权限的账号(比如普通用户)可以去完成高权限账号(比如超管)范围内的操作,如果能够成功操作,则称之为越权操作,越权漏洞形成的原因是后台使用了不合理的泉休闲校验规则导致的。
开发人员在对数据进行操作时对客户端请求的数据过分相信,遗漏了对于客户端权限的仔细判定。
1、修改、重置、找回其他账户密码
2、查看、修改其他账户未公开的信息,例如个人资料、文件、数据、程序等
3、与账户关联的权限操作
越权漏洞主要分为水平越权和垂直越权两大类。
同级别(权限)的用户或者同一个角色的不同用户之间,可以越权访问,修改或者删除的非法操作,如果出现此漏洞,你们将可能会造成大批量数据泄露,严重的甚至会造成用户信息被恶意篡改。
指使用权限低的用户可以访问权限较高的用户。
危害:
向上越权:普通用户可以执行管理员权限, 比如发布文章,删除文章等。
向下越权:一个高级用户可以访问低级用户信息(暴露用户隐私)。
在会员中心注册登录,登录后进入修改基本信息的页面,随便修改一个密码,点击提交信息的同时抓包。
Apache CouchDB是⼀个开源数据库,专注于易⽤性和成为”完全拥抱web的数据库”。它是⼀个使⽤JSON作为存储格式,JavaScript作为查询语⾔,MapReduce和HTTP作为API的NoSQL数据库。应⽤⼴泛,如BBC⽤在其动态内容展示平台,Credit Suisse⽤在其内部的商品部⻔的市场框架,Meebo,⽤在其社交平台(web和应⽤程序)。
在2017年11⽉15⽇,CVE-2017-12635和CVE-2017-12636披露,CVE-2017-12636是⼀个任意命令执⾏漏洞,我们可以通过config api修改couchdb的配置query_server,这个配置项在设计、执⾏view的时候将被运⾏。
影响版本: 小于1.7.0 以及 小于 2.1.1。
安装好环境。
刷新抓包,将包覆盖,发送,即可使用test 123456登录成功。
越权漏洞的产生归根究底,还是由于网站开发者和管理者授权意识的淡薄,授权的滥用,因此,授权应当遵守如下几条原则:
通过邮箱找回密码,正常流程去邮箱查看重置密码链接,发现链接处有一串md5加密字符串。
重置他人密码只需力量用他人邮箱发送重置密码右键,在短时间内对Unix时间戳进行暴力破解,即可获得重置密码的链接。
重置密码链接直接使用用户名进行区别,改变用户名即可更改他人密码。
利用两个账号同时点击找回密码,去邮箱查看找回密码的链接,发现两者随机token只差1-2,而且可以猜测出为服务器时间,所以可以用一个未知账号和一个已知账号同时点击找回密码,稍微遍历随机token,就可以构造出未知账号的没密码找回链接。
例如当我们通过邮箱找回密码,正常流程下抓包查看提交验证码后返回的数据,有加密字符串,这个加密字符串和后面重新设置新密码URL链接中的加密字符串一样。
所以可以利用这个加密字符串实现新密码rul中的加密字符串可控。
根据上面提交验证码的抓包,修改user为其他用户,发送就可以返回其他用户的加密字符串。
接着重新返回到找回密码首页,利用其他用户找回,点下一步,到输入验证码处,直接修改URL链接,加入加密字符串,可以直接绕过验证码,重置密码。
1、进入某网站,找到找回密码或密码重置的功能点,首先填写自己的手机号码进行密码找回。
2、收到验证码后填入验证码和新密码提交,这时候使用数据抓包工具进行抓包,将数据包中的账户属性修改为其他账号,然后就可以使用自己设置的密码登录其他账户。
当前面条件都通过后就可以生成token,我们可以在提交key之前生成一分钟或者一个小时内的token值,用脚本去访问每一个链接。
function create_pass($username,$email){
$token=md5(time().$username.$email);
return $token;
}
for($i=1;$i<=3600;$i++){
$timex= create_pass('admin','[email protected]');
write_file($timex."\n");
echo $i."\r\n";
sleep(1);
}
function write_file($c){
fwrite(fopen("time.txt", "a+"),$c);
}
?>
要了解常见验证码机制:
概念:重复提交携带验证码的数据包,查看返回包,判断次数。
测试方法:
填写正确登录信息和验证码→抓取提交数据包→重复提交该数据包→查看是否登录成功→登录成功则存在验证码重复使用问题。
概念:验证码直接由客户端生成,在回显中显示,可以通过浏览器工具直接查看。
测试方法:
1、在源码中显示,源代码审计,搜索源码中有无验证码。
2、在cookie中显示,抓包时分析cookie中是否含有验证码。
漏洞成因:
由于逻辑设计缺陷,可以绕过验证,比如直接删除cookie或验证码参数可绕过,当验证不通过清空session时,验证码参数值为空时绕过等。
测试方法:
在需要手机号的短信验证处,抓包修改手机号,可能做到非本账号手机号获取能够编辑本账号的验证码。
忘记密码功能,我们输入用户名正确后会进行短信验证码,通过手机验证码或者游戏验证码。
要选择拦截此请求包的回应,可以抓到这个包。
将no改为yes发送。
会直接跳到更新密码。
随着网络的不断发展,一些网站为了实现某些功能,需要去调用一些第三方接口,比如三大运营商的短信业务接口、支付宝、微信等第三方支付接口,那么在调用过程中,如果未能做一些安全处理,你们就会容易发生一些业务接口调用上的安全漏洞,常见的业务接口调用漏洞如下:
在短信、电话、邮件调用业务或生成业务数据环节中(短信验证码,电话验证码,邮件验证码,订单生成,评论提交等),对其业务环节进行调用(重放)测试,如果业务经过调用(重放)后被多次生成有效的业务或数据结果。
危害:
测试方法:
只要是登录后才可以返回相关信息的接口,在未登录状态下也可以返回,就是未授权访问,在一般的网站测试中,可以http history中选择网站的根目录地址,然后右键spider from here进行爬取相关的url,然后在target栏下的site map中利用mime type进行筛选,主要关注一下json、script、xml等这些类型,然后把rul贴到浏览器中看是否能访问来验证。
修复方法:
利用token校验的方式,在url中添加一个token参数,只有token验证通过才返回接口数据且token使用一次后失效,在接口被调用时,后端对会话状态进行验证,如果已经登录,便返回接口数据,如果没有登录,则返回自定义的错误信息。