逻辑漏洞
条件竞争
多个线程竞争同一个共享代码、变量、文件等称之为条件竞争。那么什么情况存在竞争条件?
实例: 上传文件,下面是一个上传文件的例子,上传文件之前先校验权限
代码语言:javascript复制#include <stdio.h>
#include <unistd.h>
#include <string.h>
#define DELAY 10000
int main()
{
char * fn = "/tmp/XYZ";
char buffer[160];
FILE *fp;
long int i;
//get user input
scanf("0s", buffer );
if(!access(fn, W_OK))
{
//simulating delay
for (i=0; i < DELAY; i ){
int a = i^2;
}
fp = fopen(fn, "a ");
fwrite("n", sizeof(char), 1, fp);
fwrite(buffer, sizeof(char), strlen(buffer), fp);
fclose(fp);
}else{
printf("No permission n");
}
}
从例子看并没有看出什么,可是对于专业安全人员来说,什么程序就是一个很典型的竞争条件。分析一下,首先上传文件之前会进行权限校验,然后才可以上传,在校验权限直接存在一个时间差,在这个时间差直接就可以形成一个竞争条件,黑客完全可以利用这个竞争条件,在时间差,暴露破解,不断发请求上传文件,竞争上传文件,当然黑客上传的不是正规文件,一般都是一些脚本木马。
渗透测试工具
渗透测试工具:BurpSuite(数据包抓取) 渗透测试Burp的intruder功能实现多个并发请求
逻辑漏洞分类
暴力破解 越权漏洞 条件竞争
安全案例
密码重置 邮箱找回:分析token构造,时间戳md5值 MD5(time username)
验证码方式找回: 防御:设置更复杂的验证码,设置时间 验证身份->修改密码界面(session,验证身份用户到修改密码界面是同个用户)
越权漏洞
越权漏洞:平行越权,垂直越权 平行越权:用户的等级相同进行越权
用户A,B:普通用户 用户C:管理员用户
A->B:平行越权
A->C:垂直越权
例子:购物车 订单信息例子
越权漏洞测试挖掘,查订单操作,修改个人信息
- 鉴权参数,accountId
- 操作:抓包->鉴权参数
相关名词: ECB模式 分组加密模式 Hash碰撞 数字签名