登录安全分析报告:链家地产

07-19 1083阅读

前言

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

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

    登录安全分析报告:链家地产

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

一、 链家地产 PC 注册入口

简介:北京链家成立于2001年,是中国领先的房地产服务企业,业务覆盖二手房、新房、租房等全方位房产交易和居住服务,目前北京链家有1000余家门店。20年来,北京链家致力于提供安全有品质的服务,在行业率先承诺“不吃差价”、首倡“真房源”、推出“交易不成 佣金全退”“电话营销 扰一赔百”等18项安心服务承诺,与此同时北京链家也在全面推行店面服务升级和经纪人职业素养提升,坚持对客户好,对经纪人好,对社区好,持续推动行业进步,不断提供更有品质的服务。

登录安全分析报告:链家地产

二、 安全性分析报告:

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

登录安全分析报告:链家地产

三、 测试方法:

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

登录安全分析报告:链家地产

  1. 模拟器交互部分
public RetEntity send(WebDriver driver, String areaCode, String phone) {
		try {
			driver.get(INDEX_URL);
			// 点击立即注册
			driver.findElements(By.className("log")).get(0).click();
			Thread.sleep(500);
			List inputElements = driver.findElements(By.xpath("//input[@class='phonenum_input']"));
			System.out.println("findElements size=" + inputElements.size());
			WebElement phoneElemet = inputElements.get(2);
			for (int i = 0; i  
  1. 获取滑动图片及调用移动交互
public boolean getAndMove(WebDriver driver, Integer offSet) {
		int distance = -1;
		try {
			WebElement moveElement = ChromeDriverManager.waitElement(driver, By.className("geetest_slider_button"), 1000);
			if (moveElement == null) {
				logger.error("getAndMove() moveElement=" + moveElement);
				return false;
			}
			// 下面的js代码根据canvas文档说明而来
			// 完整背景图geetest_canvas_fullbg geetest_fade geetest_absolute
			StringBuffer base64 = new StringBuffer();
			String fullName = "geetest_canvas_fullbg geetest_fade geetest_absolute";
			byte[] fullImg = GetImage.callJsByName(driver, fullName, base64);
			String bgName = "geetest_canvas_bg geetest_absolute";
			byte[] bgImg = GetImage.callJsByName(driver, bgName, base64);
			File fullFile = null, bgFile = null;
			if (fullImg != null && bgImg != null) {
				Long time = System.currentTimeMillis();
				fullFile = new File(dataPath + "geet/" + time + "full.png");
				FileUtils.writeByteArrayToFile(fullFile, fullImg);
				bgFile = new File(dataPath + "geet/" + time + "bg.png");
				FileUtils.writeByteArrayToFile(bgFile, bgImg);
				if (fullImg.length  err[len
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]