亚洲国产精品乱码一区二区,美景房屋2免费观看,哎呀哎呀在线观看视频高清国语,从镜子里看我是怎么C哭你

Article / 文章中心

安全測試 : 搜狗(sogou.com)網(wǎng)站短信接口安全測試,短信接口防盜刷測試

發(fā)布時間:2021-04-12 點擊數(shù):4356

– “隱患險于明火,防范勝于救災(zāi),責任重于泰山”

 

安全問題不容忽視,不要亡羊補牢!

 

前言

本文詳細介紹了針對發(fā)送短信驗證碼接口的安全性測試過程,包含思路、部分測試代碼已經(jīng)測試結(jié)果。
本次測試網(wǎng)站 —搜狗(sogou.com)
搜狗搜索是全球第三代互動式搜索引擎,支持微信公眾號和文章搜索、知乎搜索、英文搜索及翻譯等,通過自主研發(fā)的人工智能算法為用戶提供專業(yè)、精準、便捷的搜索服務(wù)。

一丶找到對外短信接口

從該網(wǎng)站注冊入口可以發(fā)現(xiàn),有提供發(fā)送短信驗證碼的服務(wù)。在這里插入圖片描述

二丶分析外部防御措施

  1. 輸入手機號
    在這里插入圖片描述

  2. 點擊發(fā)送驗證碼
    在這里插入圖片描述

這里需要先輸入算數(shù)驗證碼,輸入后才可點擊發(fā)送

在這里插入圖片描述

外部防御措施:算數(shù)驗證碼

三丶查看請求報文

1. 找到發(fā)送短信的請求

按下F12打開瀏覽器控制臺,再次點擊發(fā)送驗證碼按鈕通過控制臺找出發(fā)送短信的請求。
在這里插入圖片描述

2. 查看請求方式

在這里插入圖片描述

3. 查看請求報文頭
在這里插入圖片描述

4. 查看請求參數(shù)
在這里插入圖片描述

captchaCode為圖片驗證碼的值
5. 查看返回值
在這里插入圖片描述

四丶分析測試

1. 分析測試要點

  • 請求須攜帶圖形驗證碼參數(shù)
  • 請求中攜帶token參數(shù)

2. 編寫代碼模擬請求進行測試

該網(wǎng)站的圖形驗證碼為中文類型的簡單計算題的驗證碼:

在這里插入圖片描述

識別方法:通過機器學習,圖像處理等方法創(chuàng)建識別庫 / 通過打碼平臺識別。

大致思路:

  • 處理圖片,將圖片通過降噪,二值化等方式處理
  • 將字符分割,學習訓練
  • 最終識別出圖片中的各個字符

這里不做贅訴,感興趣可以看下相關(guān)驗證碼識別的文章:

接著利用Java模擬報文請求 ,進行測試。部分代碼如下:

//配置請求頭
	inheads.put("Host", "www.sogou.com");
	inheads.put("Accept", "application/json, text/javascript, */*; q=0.01");
	inheads.put("X-Requested-With", "XMLHttpRequest");
	inheads.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	inheads.put("Referer", "https://www.sogou.com/register");
//配置請求參數(shù)
	List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
	params.add(new BasicNameValuePair("client_id", "2017"));
	params.add(new BasicNameValuePair("mobile", phone));
	params.add(new BasicNameValuePair("captcha", input.get("imgCode")));
	params.add(new BasicNameValuePair("token", "3267574cf7a9289da2fce68b296c9d35"));
	params.add(new BasicNameValuePair("t", "" + System.currentTimeMillis()));
//配置請求
		Hashtable<String, String> inheads = new Hashtable<>();
		LinkedHashMap<String, String> outheads = new LinkedHashMap<>();
		Map<String, String> imgOutMap = new HashMap<>();
		RetEntity retEntity = new RetEntity();
		httpclient = createSSLClientDefault();

		input.put("imgFmt", "png");
		input.put("codeType", codetype);
		input.put("lenMin", "1");
		input.put("cleanType", "512");

		String imgCode = getImgeCode(phone, httpclient, cookieStore, "get", imgUrl, inheads, outheads, input, imgOutMap);
		input.put("imgCode", imgCode != null ? imgCode : "");

		retEntity = userClick(httpclient, cookieStore, "post", smsUrl, inheads, outheads, input, phone);
		closeHttpClient(httpclient);

啟動測試:

1次:

在這里插入圖片描述

手機號碼唯一,IP唯一:

10次 --間隔時間1秒:

在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

手機號碼不唯一,IP唯一:

10次 --間隔時間1秒:

在這里插入圖片描述
手機號碼不唯一,IP不唯一:

10次 --間隔時間10秒:

在這里插入圖片描述

五丶結(jié)果分析

測試目標:

針對發(fā)送短信驗證碼接口進行安全性測試。

測試思路:

1.找到請求接口
2.分析請求報文
3.模擬請求測試

測試結(jié)果:

1.單手機號頻率限制(1次/分鐘)兼次數(shù)限制
2.單IP頻率限制(3次/分鐘)

測試結(jié)論:

前臺通過圖形驗證碼,token參數(shù)進行限制,后臺手機號和Ip均有頻率限制或次數(shù)限制,當遇到大量更換手機號以及IP的攻擊時,該網(wǎng)站的所有防御措施均無效。

風險等級: 

六丶結(jié)語

很多人在短信服務(wù)剛開始建設(shè)的階段,可能不會在安全方面考慮太多,理由有很多。
比如:“ 需求這么趕,當然是先實現(xiàn)功能啊 ”,“ 業(yè)務(wù)量很小啦,系統(tǒng)就這么點人用,不怕的 ” , “ 我們怎么會被盯上呢,不可能的 ”等等。

有一些理由雖然有道理,但是該來的總是會來的。前期欠下來的債,總是要還的。越早還,問題就越小,損失就越低。

所以大家在安全方面還是要重視。(血淋淋的栗子?。?a style="box-sizing: border-box; text-decoration-line: none; background-color: transparent; color: #4ea1db;" >#安全短信#

谷歌圖形驗證碼在AI 面前已經(jīng)形同虛設(shè),所以谷歌宣布退出驗證碼服務(wù), 那么當所有的圖形驗證碼都被破解時,大家又該如何做好防御呢?