注册安全分析报告:短信宝

前言
由于网站注册入口容易被黑客攻击,存在如下安全问题:

  1. 暴力破解密码,造成用户信息泄露
  2. 短信盗刷的安全问题,影响业务及导致用户投诉
  3. 带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞
    在这里插入图片描述

所以大部分网站及App 都采取图形验证码或滑动验证码等交互解决方案, 但在机器学习能力提高的当下,连百度这样的大厂都遭受攻击导致点名批评,图形验证及交互验证方式的安全性到底如何?请看具体分析。

一、 短信宝-PC 注册入口

简介:上海彤伴信息科技有限公司成立于2015年(“短信宝”网站名),并取得增值电信业务经营许可证。作为一家有着技术积累的移动商务平台技术和应用方案提供商。
公司自创立至今,一直致力于为企业提供具备国际技术水准的电商行业营销及运营服务。通过与三大运营商的紧密合作,目前服务可覆盖全球208个地区及中国大陆31个省市自治区。

1. 注册页
在这里插入图片描述

2. 会员注页面
在这里插入图片描述

二、 安全性分析报告:

采用极验的V1版本,容易被模拟器绕过甚至逆向后暴力攻击,滑动拼图识别率在 95% 以上。在这里插入图片描述

三、 测试方法:

前端界面分析, 采用的是极验1.0 ,最早的一个版本, 最大特点就是将图片做分割后,在前端再做合并,这就好办了, 网上有大量现成的逆向文章及视频参考,不过我们这次不用逆向, 只是采用模拟器的方式,关键点主要模拟器交互、距离识别和轨道算法3部分。

在这里插入图片描述

  1. 模拟器交互部分

public RetEntity send(WebDriver driver, String areaCode, String phone) {
   
   
		RetEntity retEntity = new RetEntity();
		try {
   
   
			driver.get(INDEX_URL);
			WebElement phoneEle = driver.findElement(By.xpath("//input[@placeholder='手机号码']"));
			phoneEle.click();
			for (int i = 0; i < phone.length(); i++) {
   
   
				phoneEle.sendKeys(String.valueOf(phone.charAt(i)));
				phoneEle.click();
			}
			Thread.sleep(500);
			// 点击按钮弹出
			By clickBy = By.className("geetest_radar_tip_content");
			ActionMove.waitForLoad(driver, clickBy);
			driver.findElement(clickBy).click();

			// 下面的js代码根据canvas文档说明而来
			// 完整背景图geetest_canvas_fullbg geetest_fade geetest_absolute
			Thread.sleep(1000);
			WebElement gtInfoElement = ChromeDriverManager.waitElement(driver, By.className("gbn gbt-blue send-code J_Captcha gbt-off"), 1);
			String gtInfo = (gtInfoElement != null && gtInfoElement.isDisplayed()) ? gtInfoElement.getText() : null;

			if (gtInfo != null) {
   
   
				System.out.println("gtInfo=" + gtInfo);
			} else {
   
   
				boolean ret = geetApi.getAndMove(driver, 0);
			}

		} catch (Exception e) {
   
   
			System.out.println(e.toString());
			retEntity.setRet(-1);
			retEntity.setMsg(e.toString());
		}
		return retEntity;
	}

  1. 获取滑动图片及调用移动交互

public boolean gtSliderKnob(WebDriver driver, Integer offSet) {
   
   
		try {
   
   
			// 获取滑动按钮
			By moveBy = By.cssSelector("[class='gt_slider_knob gt_show']");
			GeetSplitApi.waitForLoad(driver, moveBy);
			WebElement moveElement = driver.findElement(moveBy);
			int i = 0;
			String gtInfo;
			while (i++ < 3) {
   
   
				try {
   
   
					// 获取滑动距离
					int distance = GeetSplitApi.getMoveDistance(driver);
					if (distance == 0) {
   
   
						gtInfo = "get distance err";
						continue;
					}
					// 滑动
					if (offSet != null)
						ActionMove.move(driver, moveElement, distance - offSet);
					else
						ActionMove.move(driver, moveElement, distance);
					// 滑动结果
					Thread.sleep(2 * 1000);
					By gtInfoBy = By.className("gt_info_content");
					gtInfo = driver.findElement(gtInfoBy).getAttribute("innerHTML");
					System.out.println();
					if (gtInfo.isEmpty() || gtInfo.contains("速
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值