Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >WEB安全新玩法 [11] 防范批量注册

WEB安全新玩法 [11] 防范批量注册

原创
作者头像
天存信息
修改于 2021-08-03 06:31:17
修改于 2021-08-03 06:31:17
1.1K0
举报

网站的攻击者通过批量注册用户,能够实施大规模非法操作,如抢优惠券、恶意刷单等。这给服务商造成了直接的经济损失,而大量的垃圾用户也会占用系统资源,增加系统运行压力。防范批量注册需要针对系统特点,多管齐下综合应对,iFlow 业务安全加固平台可以提供各种防范批量注册的技术实现方式。


以某电商网站为例,其用户注册功能存在被攻击者利用的可能。在此将模拟攻击者批量注册的行为,并利用 iFlow 使用多种手段来防范攻击。

攻击示例

攻击者编写 RegistTest.py 脚本进行攻击,脚本使用 WebDriver 驱动浏览器模拟正常用户的注册操作。

图1
图1

攻击者事先准备好待注册的用户/口令文件。脚本执行时循环进行如下操作:逐行读取用户/口令文件中的信息→访问注册页面→使用第三方软件识别验证码→将用户信息注册提交。

图2
图2

脚本运行完毕后,可以看到大量用户被注册,均来自于攻击者准备的用户文件。

图3
图3

手段一 频度限制

使用 iFlow 可以简便地实现在规定时间内限制同一访问主体 (IP 或设备) 的用户注册次数,也可以在规定时间内限制网站整体的用户注册次数。

代码实现以下条件:

  • 同一设备在 30 分钟内用户注册超过 3 次,则阻止此设备访问 10 分钟;
  • 同一 IP 在 60 分钟内用户注册超过 10 次,则阻止此 IP 访问 20 分钟;
  • 网站整体在 120 分钟内用户注册超过 100 次,则暂停整个系统注册操作 30 分钟。
代码语言:txt
AI代码解释
复制
{
	"if": [
		"REQUEST_FILENAME == '/shop/index.php'",
		"@ARGS.s == '/index/user/reg.html'"
	],
	"then": [
        "DEVICE.reg_num@1800=DEVICE.reg_num+1",
		"REAL_IP.reg_num@3600=REAL_IP.reg_num+1",
        "GLOBAL.reg_num@7200=GLOBAL.reg_num+1",
        {
        	"if": "DEVICE.reg_num>3",
            "then": [
                "DEVICE.reg_num=null",
                "block('DEVICE',10*60,'deny')"
            ]
        },
        {
        	"if": "REAL_IP.reg_num>10",
            "then": [
                "REAL_IP.reg_num=null",
            	"block('REAL_IP',20*60,'deny')"   
            ]
        },
        {
        	"if": "GLOBAL.reg_num>100",
        	"then": [
        		"GLOBAL.reg_num=null",
        		"GLOBAL.reg_blocking@1800=true"
        	]
        },
		{
            "if": "GLOBAL.reg_blocking",
            "then": "verdict('deny')"
        }
	]
}

手段二 页面关联

正常用户填写注册信息是需要花费一段时间的,而自动化攻击获取注册页面和提交注册信息的时间往往很短。使用 iFlow 可以有效判断这种差异,进而区分正常用户和自动化脚本。

代码实现以下条件:

  • 提交注册 (reg.html) 之前 120 秒内必须访问过注册页面 (reginfo.html);
  • 访问注册页面 (reginfo.html) 后,必须超过 5 秒才能提交注册 (reg.html)。
代码语言:txt
AI代码解释
复制
[
	{
		"if": [
			"REQUEST_FILENAME == '/shop/index.php'",
			"@ARGS.s == '/index/user/reginfo.html'"
		],
		"then": [
			"SESSION.had_access_reginfo_page_flag@120=1",
			"SESSION.time_between_reginfo_and_reg@5=1"
		]
    },
	{
		"if": [
			"REQUEST_FILENAME == '/shop/index.php'",
			"@ARGS.s == '/index/user/reg.html'"
		],
		"then": {
			"if": "!SESSION.had_access_reginfo_page_flag",
			"then": {
				"action": "deny",
                "log": "reginfo.html must access firstly!"
			},
			"else": {
				"if": "!SESSION.time_between_reginfo_and_reg",
				"then": "SESSION.had_access_reginfo_page_flag=null",
				"else": {
					"action": "deny",
                    "log": "The time between reginfo.html and reg.html is too short!"
				}
			}
		}
	}
]

手段三 客户端识别

正常用户使用浏览器访问网站,攻击者则使用工具模拟浏览器或驱动浏览器引擎来访问网站。我们使用 iFlow 在响应中主动插入和运行前端代码来获取客户端的特征。

代码实现以下条件:

  • 访问注册页面 (reginfo.html) 时,iFlow 在响应报文中加入 js 代码段,这段代码判断客户端是否为 WebDriver,并将结果发送到 iFlow 检查点 (checker.dummy);
  • 访问 iFlow 检查点 (checker.dummy) 时,iFlow 获得判断结果,如果是 WebDriver 则阻止该 IP 的访问 10 小时。
代码语言:txt
AI代码解释
复制
[
	{
		"if": [
			"REQUEST_FILENAME == '/shop/index.php'",
			"@ARGS.s == '/index/user/reginfo.html'"
		],
		"then": {
			"directive": "alterResponseBody",
			"op": "string",
			"target": "var __user_id__ = 0;",
			"substitute": "var __user_id__ = 0; var httpRequest = new XMLHttpRequest(); httpRequest.open('GET', '/iflow/checker.dummy?ret='+window.navigator.webdriver); httpRequest.send(); "
		}
    },
    {
        "if": [
            "REQUEST_FILENAME == '/iflow/checker.dummy'",
            "@ARGS.ret != 'false'"
        ],
        "then": [
            "verdict('deny', 'Client is webdriver!')",
            "block('REAL_IP', 3600*10, 'deny', REAL_IP.__id..' in blocking')"
        ]
    }
]

手段四 一次性令牌

利用 iFlow 可以给流程加入一次性限时令牌。具体到本例中,访问注册页面时用户获得一个一次性令牌,提交注册时这个令牌被消费掉,缺少令牌则不能进行提交注册。这一手段可以防范重放攻击。

图4
图4

代码实现以下条件:

  • 访问注册页面 (reginfo.html) 时,iFlow 在响应报文中加入 js 代码段,在参数中加入一次性令牌;
  • 提交注册 (reg.html) 时,iFlow 检查一次性令牌的真实性并予以销毁,即令牌不能被重复使用。
代码语言:txt
AI代码解释
复制
[
	{
		"if": [
			"REQUEST_FILENAME == '/shop/index.php'",
			"@ARGS.s == '/index/user/reginfo.html'"
		],
		"then": [
			"TX.tmp_ulh=md5(random())",
			"SESSION.reginfo_ulh@300=SESSION.reginfo_ulh..','.. TX.tmp_ulh",
			{
				"directive": "alterResponseBody",
				"op": "string",
				"target": "/index/user/reg.html", 
				"substitute": "/index/user/reg.html&ulh=${TX.tmp_ulh}"
			}
		]
	},
	{
		"if": [
			"REQUEST_METHOD == 'POST'",
			"REQUEST_FILENAME == '/shopxo-1.6.0/index.php'",
			"@ARGS.s == '/index/user/reg.html'"
		],
		"then": {
			"if": "notNull(SESSION.reginfo_ulh)",
			"then": [
                "SESSION.reginfo_ulh = null",
                {
					"if": "!contain(SESSION.reginfo_ulh, @ARGS.ulh)",
					"then": {
						"action": "deny",
						"log": "${SESSION.reginfo_ulh} not contain ${@ARGS.ulh}!"
					},
					"else": {
						"directive": "alterArgGet",
						"op": "unset",
						"name": "ulh"
					}
				}
            ],
			"else": {
				"action": "deny",
				"log": "${SESSION.reginfo_ulh} is not exist!"
            }
		}
    }
]

总结

针对目标电商网站的批量注册漏洞,我们使用了频度限制、页面关联、客户端识别、一次性令牌这四种手段进行防护。事实上,使用 iFlow 还可以写出其他防护手段,如参数聚合、动态混淆等。通过上述手段,使用者能够很大程度缓解攻击者的批量注册行为。

我们在上述例子中看到:在 Web 服务器前部署 iFlow 业务安全加固平台,它有能力拦截、计算和修改双向 HTTP 报文并具备存储能力,可以成为 Web 应用的虚拟补丁。(张戈 | 天存信息)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WEB安全新玩法 [4] 防护邮箱密码重置漏洞
大部分具有账号系统的应用都会提供重置用户登录密码的功能,常见方式之一是:用户输入自己的邮箱地址或手机号,应用向这个邮箱或手机号发送验证码,用户将收到的验证码输入应用中即可完成密码重置。这一过程容易因设计不周全而被攻击者加以利用。iFlow 业务安全加固平台可以为设计不当的应用打上动态虚拟补丁,使之防御可能的恶意利用。
天存信息
2021/06/28
2.3K0
WEB安全新玩法 [4] 防护邮箱密码重置漏洞
WEB安全新玩法 [2] 防范前端验证绕过
用户登录,几乎是所有 Web 应用所必须的环节。Web 应用通常会加入一些验证手段,以防止攻击者使用机器人自动登录,如要求用户输入图形验证码、拖动滑动条等。但是,如果验证的逻辑仅仅在前端执行,是很容易被攻击者绕过的。iFlow 业务安全加固平台可以为只使用前端验证的应用打上动态虚拟补丁,使之成为需要前后端配合执行的验证逻辑,大幅度提高攻击者的攻击难度。
天存信息
2021/06/23
1.8K0
WEB安全新玩法 [2] 防范前端验证绕过
WEB安全新玩法 [5] 防范水平越权之查看他人订单信息
水平越权是指系统中的用户在未经授权的情况下,查看到另一个同级别用户所拥有的资源。水平越权会导致信息泄露,其产生原因是软件业务设计或编码上的缺陷。iFlow 业务安全加固平台可以缓解部分场景下的水平越权问题。
天存信息
2021/06/29
1.1K0
WEB安全新玩法 [5] 防范水平越权之查看他人订单信息
进击的反爬机制
反爬方与爬虫方相互博弈,不断制造爬取难度,或一定程度上阻止了爬虫行为。爬虫方也在不断更新技术,来对抗种种反爬限制。
天存信息
2021/08/24
1.8K0
进击的反爬机制
WEB安全新玩法 [8] 阻止订单重复提交
交易订单的重复提交虽然通常不会直接影响现金流和商品流,但依然会给网站运营方带来损害,如消耗系统资源、影响正常用户订单生成、制造恶意用户发起纠纷的机会等。倘若订单对象是虚拟商品,也有可能造成实际损失。订单重复提交的检查工作本应该由网站自身实现,而 iFlow 业务安全加固平台则可以为未实现这项功能的网站提供防护。
天存信息
2021/07/28
1.6K0
WEB安全新玩法 [8] 阻止订单重复提交
WEB安全新玩法 [6] 防范图形验证码重复使用
在完成关键业务操作时,要求用户输入图形验证码是防范自动化攻击的一种措施。为安全起见,即使针对同一用户,在重新输入信息时也应该更新图形验证码。iFlow 业务安全加固平台可以加强这方面的处理。
天存信息
2021/06/30
1.1K0
WEB安全新玩法 [6] 防范图形验证码重复使用
WEB安全新玩法 [9] 重置密码之验证流程防绕过
一般来说,业务流程中出现多个操作环节时,是需要顺序完成的。程序设计者往往按照正常用户的操作顺序实现功能,而忽略了攻击者能够绕过中途环节,直接在后续环节上进行非法操作。iFlow 业务安全加固平台能够在不修改网站程序的情况下,强制流程的顺序执行。
天存信息
2021/07/29
1.2K0
WEB安全新玩法 [9] 重置密码之验证流程防绕过
WEB安全新玩法 [7] 加密不安全下载路径
提供下载功能的网站,其下载资源的链接是任何用户都能获取的。如若设计不当,攻击者通过分析链接的文本,能够构造出意外但有效的链接,访问网站功能之外的资源,从而窃取主机上的敏感信息。
天存信息
2021/07/01
5550
WEB安全新玩法 [7] 加密不安全下载路径
WEB安全新玩法 [3] 防护交易数据篡改
在任何涉及交易的系统中,客户与商家之间的交易数据具有核心作用,如购买商品的价格、数量、型号和优惠券等。在客户挑选商品的过程中,这些交易数据逐渐形成;待客户提交订单时,交易数据被商家接收,形成双方认可的订单。交易数据在形成过程中必须要有可靠的临时存储,而不可靠的存储会允许攻击者提交伪造的交易数据,使商家利益受损。
天存信息
2021/06/24
1.8K0
WEB安全新玩法 [3] 防护交易数据篡改
实例讲解Nginx下的rewrite规则
一.正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配,其中: * -f和!-f用来判断是否存在文件 * -d和!-d用来判断是否存在目录 * -e和!-e用来判断是否存在文件或目录 * -x和!-x用来判断文件是否可执行 三.rewrite指令的最后一项参数为flag标记,flag标记有: 1.last    相当于apache里面的[L]标记,表示rewrite。 2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。 3.redirect  返回302临时重定向,浏览器地址会显示跳转后的URL地址。 4.permanent  返回301永久重定向,浏览器地址会显示跳转后的URL地址。
星哥玩云
2022/06/29
6210
WEB安全新玩法 [10] 防范竞争条件支付漏洞
服务器端业务逻辑,特别是涉及数据库读写时,存在着关键步骤的时序问题,如果设计或代码编写不当就可能存在竞争条件漏洞。攻击者可以利用多线程并发技术,在数据库的余额字段更新之前,同时发起多次兑换积分或购买商品请求,从中获取利益。本文将讨论如何简单地使用 iFlow 应用安全加固平台的可编程特性,对竞争条件产生的支付漏洞进行防护。
天存信息
2021/07/30
1K0
WEB安全新玩法 [10] 防范竞争条件支付漏洞
【云安全最佳实践】WEB安全常见攻击与防范
对于常规的Web攻击手段,如XSS、CSRF、SQL注入、(常规的不包括文件上传漏洞、DDoS攻击)等1.XSS跨站脚本攻击,因为缩写和css重叠,所以能叫XSS,跨脚本攻击是指通过存在安全漏洞的web网站注册用户的浏览器内非法的非本站点HTML标签或javascript进行一种攻击。跨站脚本攻击有可能造成以下影响利用虚假输入表单骗取用户个人信息用脚本窃取用户的cookie值,被害者在不知情况的下,帮助攻击者发送恶意请求防范手册HEAD ctx.set('X-XSS-Protection',0) //禁止X
小周sir
2022/10/31
12.9K0
web安全简易规范123
web安全,大公司往往有专门的安全开发流程去保证,有专门的安全团队去维护,而对于中小网络公司,本身体量小,开发同时兼带运维工作,时间精力有限,但是,同样需要做一些力所能及的必要的事情。有时候,安全威胁并不是因为你的防盗窗被人撬开了,而是你晚上睡觉的时候忘了关门,而关上门对开发来说也许只是举手之劳。
java达人
2018/07/31
5400
web安全简易规范123
认证服务:验证码保存和注册
一个风轻云淡
2023/10/15
2350
Web安全问题
基于Web环境的互联网应用有着其它平台没有的优势,易于维护、更新迭代更快、使用方便、跨平台等。 而缺点也同样明显,那就是性能远远没有桌面应用好,使得相对没那么受欢迎。 随着科技的发展,尤其是近几年来设备的更新换代以及新型浏览器的出现,Web应用的性能有了极大的提升。 基于web环境的互联网应用越来越多,而与之伴随的Web安全问题也更加凸显。 本人对web安全也了解不多,趁此摸鱼的时间,查一查相关资料,在此记录一下。
epoos
2022/06/06
5070
2020 网络安全重保日记
2020 年双节前夕,国内疫情稳定,长假将启,各项安保措施比以往有所升级,而此时更是网络安全重点保障时期,信息安全工作尤其不能懈怠。各用户单位也陆续启动响应,对网络安全负责人、联络人通知到位,深度排查网络安全风险,及时调整网络安全策略,部署实施态势感知、应急响应、持续安全评估、安全监测巡检等安全措施,并确保安全人员现场保障。安保工作如火如荼,天存信息的技术工程人员也相继奔赴各个信息重保工作现场。
天存信息
2021/08/13
1.2K0
2020 网络安全重保日记
经常遇到的3大Web安全漏洞防御详解
程序员需要掌握基本的web安全知识,防患于未然,你们知道有多少种web安全漏洞吗?这里不妨列举10项吧,你们可以自己去网站找相应的教程来提升自己的 1、命令注入(Command Injection) 2、eval注入(Eval Injection) 3、客户端脚本攻击(Script Insertion) 4、跨网站脚本攻击(Cross Site Scripting, XSS) 5、SQL注入攻击(SQL injection) 6、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF) 7、Session 会话劫持(Session Hijacking) 8 Session 会话固定(Sessionfixation) 9、HTTP响应拆分攻击(HTTP Response Splitting) 10、文件上传漏洞(File Upload Attack)
友儿
2022/09/11
5180
PHP 安全与性能
PHP 安全与性能 摘要 我的系列文档 Netkiller Architect 手札Netkiller Developer 手札Netkiller PHP 手札Netkiller Python 手札Netkiller Testing 手札Netkiller Cryptography 手札Netkiller Linux 手札Netkiller Debian 手札Netkiller CentOS 手札Netkiller FreeBSD 手札Netkiller Shell 手札Netkiller Security
netkiller old
2018/03/05
2K0
DDCTF2019
滴~ 这道题的误导很严重 进入题目 URL为 http://117.51.150.246/index.php?jpg=TmpZMlF6WXhOamN5UlRaQk56QTJOdz09,将参数解码 >>
安恒网络空间安全讲武堂
2019/05/09
7460
DDCTF2019
PHP简易用户登录系统
PHP简易用户登录系统 最近刚刚看到PHP连接数据库的实例,于是做了一个简易的用户系统 直接上代码 连接数据库:connect.php <?php $servername = "localhos
行云博客
2020/07/13
2K0
相关推荐
WEB安全新玩法 [4] 防护邮箱密码重置漏洞
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档