Web應用系統的小安全漏洞及相應的攻擊方式

1???寫作目的

本文講述一個簡單的利用WebAPI來進行一次基本沒有破壞力的“黑客”行為。

主要目的如下:

  • 了解什么叫安全漏洞
  • 知道什么是api
  • 了解一些獲取api的工具
  • 通過對API的認識了解白盒接口測試基本概念和技術

免責聲明:

本文主要是以學習交流為目的,而且實驗的對象也是通過搜索引擎隨機選擇的。不以搞破壞為目的,純粹是以教學為目的,同時也警醒大伙重視基本的互聯網安全。當然,本文會對關鍵字打個馬賽克,防止有興趣的同學也把網站主當了靶子了。

如果網站主通過搜索引擎找到了本文,希望網站主最先能夠做的是如何使用簡單的方法堵住漏洞,當然如果網站主要求本文刪除相應的信息,本文也會全力配合的。

2???背景介紹

先說一個在互聯網上常見,但是普通人又不太理解的東西--“驗證碼”。

下面是來自?百度百科?的一段解釋:

驗證碼(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自動區分計算機和人類的圖靈測試)的縮寫,是一種區分用戶是計算機還是人的公共全自動程序。可以防止:惡意破解密碼、刷票、論壇灌水,有效防止某個黑客對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登陸嘗試,實際上用驗證碼是現在很多網站通行的方式,我們利用比較簡易的方式實現了這個功能。這個問題可以由計算機生成并評判,但是必須只有人類才能解答。由于計算機無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認為是人類。

一般對于開放式的互聯網應用,在有需要“上行”數據接口的地方都需要加上一道驗證碼(也可以是驗證短信,但是考慮到成本問題,驗證碼還是更普遍一些),以防止機器程序使用其遠高于人的計算能力進行一些惡意破壞行為。

所謂的惡意行為從技術本質上講就是利用web應用已經提供的一些接口,來對網站主的后臺數據庫進行?增/刪/改/查?的操作,而且由于這種操作是由計算機來完成,計算機巨大的計算能力常常伴產生極恐怖的破壞力。

  • 查詢數據

    • 耗盡網絡式攻擊。攻擊者網絡帶寬資源超級豐富的,可以OS占滿被攻擊對象的入口和出口帶寬,無法對外正常提供服務。
    • 耗盡服務器負載攻擊。大量高并發的數據庫請求,超過數據庫的最大連接數,導致web應用無法完成數據庫的正常查詢。
    • 耗盡服務器CPU攻擊。對于有復雜計算的應用,每次調用一次服務會造成大量的CPU消耗,導致服務異常。
    • 耗盡服務器內存攻擊。通過查詢產生大量的session,耗盡服務器內存。
  • 增加數據

    在web應用里面惡意注冊幾十萬級別的?僵尸?用戶。然后通過程序來操控這些用戶來投票,轉發,刷帖等等。比如,微博,廣告行業

  • 刪除/修改數據

    造成數據的不正常,這樣的后果也是不可估量的。比如金融行業,比如電子交易行業。

通過“圖靈測試”可以達到對自然人和機器的良好區分,以達到將機器程序抵擋在外面的目的,阻止其利用其強大的計算能力和自動化信息處理能力來實施破壞。這就是“驗證碼”的最基本作用。

那么回歸到今天的正題,既然是“黑客技術入門”和“接口自動化測試”的入門篇,本文就先挑一些難度低的開始,專門找“軟柿子”來捏一下。

3???主要工具

  • Google搜索引擎

    搜索資料和尋找“獵物”

  • Chrome

    查看web應用提供的接口的最簡單的方式

  • Wireshark

    一種高級的查找接口的工具,可在某些不適合Chrome的場合進行使用

  • Python

    編碼破解代碼的腳本

4???尋找攻擊對象

通過搜索引擎,找關鍵字:“意見反饋”、“用戶反饋”,得到如下的搜索結果:

“用戶反饋”模塊有如下特點:

  • 有數據上行。因為有向服務器提交數據,會通過相應的接口往網站主服務器上寫相應的數據。
  • 在Web應用里面重要性很低。很多是象征的擺設,所以安全防范極低。
  • 不涉及具體的重要業務。可以在練手的同時,也不會產生多少破壞。

只需要找出里面沒有驗證碼的頁面就可以了,主要的搜索結果如下:

有驗證碼的網站:

  • 360好搜
  • 鳳凰網
  • 56.com

無驗證碼的網站:

  • 新浪微博
  • 搜狗網址導航
  • 百度音樂
  • 百度百科
  • 網易163
  • 有道詞典
  • 易車
  • 114la
  • 中科大教務處

這只是Google的前兩頁的搜索結果,發現已經有一大半在這一塊是沒有進行任何防守的。既然已經找到了這么一個簡單的安全“漏洞”,下面就開始實施無關痛癢的“攻擊”行為。

由于本文主要是出于學習和交流目的,為了保護實驗對象的一些隱私,所以下面的圖片和相應的URL都會進行一些簡單的馬塞克。

5???收集api信息

由于Web應用系統本身是不對外開放api的,但是互聯網公司的產品為了追求高擴展性和前后端完全分離獨立,通常使用如下技術架構:

互聯網應用的架構,客戶端和服務器一般都是基于Http API來進行通訊,所以對于B/S的程序來說,可以很容易通過一些輔助工具來找到通訊的接口。

某個網站“有幸”被選中了:

http://x.xxx.xx/ugc/out/feedback/

使用Chrome瀏覽器打開頁面

然后填寫好表單之后,點擊提交按鈕。當然,因為提交按鈕之后,會跳轉到另外一個頁面,不便于我們查看提交的數據值,所以要做一些簡單的修改,就是表單提交的服務器API簡單修改成一個不存在的即可:

然后在Chrome的Network里面可以看到接口信息:

然后將右側的接口詳細數據信息展開,就可以查看到表單值:

這個表單就告訴了我們此網站應用的服務器端API所接收的合法的數據的格式,這樣就相當于知道了調用的方式了。

知道了接口,知道了調用方式,那么接下來就可以通過寫程序來實施“黑客”行為了。

6???編寫crack腳本

由于本人python比較熟悉,所以就使用python來進行相應的操作演示。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

def?test_crack_feedback(self):

????"""

????反饋頁面刷的測試

????:return:

????"""

????url_para?=?{

????????'proType':?5,

????????'platType':?1,

????????'referer':?'https://www.google.com/',

????????'content':?'看你們是否存在此漏洞',

????????'tel':?'123144',

????????'email':?'adsf@11',

????????'qq':?'123544',

????????'location':?'北京市',

????????'ip-location':?'北京市',

????????'ip-service':?'聯通',

????}

????post_url?=?'http://x.xxx.xx/ugc/out/feedback/?act=add'

????res?=?requests.post(post_url, data=url_para)

????glog.debug(res.text)

返回值

1

2

3

4

[2015-05-27?10:58:51,166] connectionpool.py:_new_conn-(259)INFO: Starting new HTTP connection (1): x.xxx.xx

[2015-05-27?10:58:51,764] connectionpool.py:_make_request-(390)DEBUG: Setting read timeout to?None

[2015-05-27?10:58:52,175] connectionpool.py:_make_request-(430)DEBUG:?"POST /ugc/out/feedback/?act=add HTTP/1.1"?200?None

[2015-05-27?10:58:52,245] singlefun.py:run_xxx-(29)DEBUG: {"retcode":200,"message":null}

根據200的狀態碼,明顯是成功了。因為有經驗的Web開發人員都清楚,Http的200狀態碼就表示成功調用的返回值了。

如果我使用個for循環,將此程序運行100萬次,那么這個網站主的這個地方的數據庫估計就要抓狂了。如果使用多個機器連續瘋狂的刷,而且恰好這個數據表和他們的核心業務數據庫放在一起,那么這將會導致數據庫連接數量超過極限,導致正常的服務無法被提供了。

7???后續展望和總結

本文只是演示了如何利用Chrome去尋找Web應用的接口及調用。而對于看不到前端代碼的App應用,則可以通過抓包工具Wireshark來輕松獲得相應的接口及調用。

網站主避免此漏洞的方法:給相應的位置加上可靠的“驗證碼”即可。 PS:傳統的字符型驗證碼,稍微會一些圖片識別技術,或者機器學習技術,也是相當好破解的。目前的OCR技術已經相當發達了,想想注冊Gmail的時候,那一串人都不認識的字符,結果程序可以進行90%的成功破解率,可想而之機器遠比人類想像得要厲害。

當然,如何做好“圖靈測試”對“自然人”和“機器人”進行區分,已經成為安全領域的一個重要的課題,也非本文重點討論的問題了,有興趣的同學可以在相關領域繼續研究吧。

這個事情給做Web應用系統的人員兩個警鐘:

  • 所有涉及到數據交互的地方,最好加上驗證碼。
  • 數據盡量要按照重要等級分開部署。

8???免責聲明

  • 本文只是以學習交流為目的
  • 本文沒有產生破壞行為
  • 本文所獲取的信息都是通過正常的暴露在外部的信息得到的
  • 本文隱藏了具體的URL目標的信息
  • 如果實在是有人有要求認為本文造成了事實傷害,作者會按照要求刪除此文
  • 最后希望此文能夠給有志做接口自動化測試的朋友提供了一個好的“開胃菜”

Python接口自動化測試零基礎入門到精通(2023最新版)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163478.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163478.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163478.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ ,VCPKG那些事

玩過C都知道,熟悉三方庫對開發工作的重要性,尋找同步更新、穩定、權威的庫源更是每一位開發者經常要做的功課,諸如赫赫有名的boost,google SDK、騰迅sdk、阿里庫,vcpkg等等,這里要說的就是VCPKG,以下是記錄…

盤點63個Python登錄第三方源碼Python愛好者不容錯過

盤點63個Python登錄第三方源碼Python愛好者不容錯過 學習知識費力氣,收集整理更不易。 知識付費甚歡喜,為咱碼農謀福利。 鏈接:https://pan.baidu.com/s/1l7oooH9YovHmWzQ_58FRdg?pwd8888 提取碼:8888 項目名稱 A headless…

11-23 SSM4

Ajax 同步請求 :全局刷新的方式 -> synchronous請求 客戶端發一個請求,服務器響應之后你客戶端才能繼續后續操作,請求二響應完之后才能發送后續的請求,依次類推 有點:服務器負載較小,但是由于服務器相應…

Vue3+Ts實現聊天機器人(chatBot-附代碼)

一:項目介紹 本次實驗主要涉及到的技術是 Vue3 Ts,當然其中也有部分是 Vue2 格式的代碼以及 json 和 CSS 布局等。本來是想仿照 文心一言 來開發的一個聊天機器人案例。結果由于時間不足,可能只是做出來了一個半成品。不過核心功能是有的。由…

淺談安科瑞智能照明系統在馬來西亞國家石油公司項目的應用

摘要:隨著社會經濟的發展及網絡技術、通信技術的提高,人們對照明設計提出了新的要求,它不僅要控制照明光源的發光時間、 亮度,而且與其它系統來配合不同的應用場合做出相應的燈光場景。本文介紹了馬亞西亞石油公司智能照明項目的應…

tp8 使用rabbitMQ(2)工作隊列

代碼的參數說明在 第一小節的代碼中,如果需要可移步到第一節中查看 工作隊列 工作隊列(又稱:任務隊列——Task Queues)是為了避免等待一些占用大量資源、時間的操作。當我們把任務(Task)當作消息發送到隊列…

推薦一款png圖片打包plist工具pngPackerGUI_V2.0

png圖片打包plist工具,手把手教你使用pngPackerGUI_V2.0 此軟件是在pngpacker_V1.1軟件基礎之后,開發的界面化操作軟件,方便不太懂命令行的小白快捷上手使用。1.下載并解壓縮軟件,得到如下目錄,雙擊打開 pngPackerGUI.…

《第一行代碼:Android》第三版-2.4.3循環語句 for循環

本節主要講for 循環,主要就是創建個區間,然后用for 來遍歷。 /*** You can edit, run, and share this code.* play.kotlinlang.org*/fun main() {println("Hello, world!!!")for(i in 1..10)//表示 0 到10 但是包括10 ,即數學上的…

使用paddleocr進行OCR文字識別

1 OCR介紹 OCR(Optical Character Recognition)即光學字符識別,是一種將不同類型的文檔(如掃描的紙質文件、PDF文件或圖像文件中的文本)轉換成可編輯和可搜索的數據的技術。OCR技術能夠識別和轉換印刷或手寫文字&…

Python接口自動化測試——如何搭建測試環境

前言 接口測試的方式有很多,比如可以用工具(jmeter,postman)之類,也可以自己寫代碼進行接口測試,工具的使用相對來說都比較簡單,重點是要搞清楚項目接口的協議是什么,然后有針對性的進行選擇&a…

NF是哪個國家品牌?韓國NF-耐福功放芯片介紹

NF是韓國一家專注于數字音頻芯片領域公司旗下的數字功放IC品牌,2008年開始進入中國市場,ISweek工采網作為其代理商;在國內簡稱:韓國NF,又被稱耐福、耐福NTP功放芯片;國內長虹、TCL、海信、小豹AI音箱、騰訊…

大數據-之LibrA數據庫系統告警處理(ALM-37001 MPPDBServer實例Redo日志缺失)

告警解釋 當DN主實例有未同步到DN備實例的xlog日志被刪除時,產生該告警。 告警屬性 告警ID 告警級別 可自動清除 37001 嚴重 是 告警參數 參數名稱 參數含義 ServiceName 產生告警的服務名稱 RoleName 產生告警的角色名稱 HostName 產生告警的主機名…

shell從服務列表中讀取參數并檢查服務

一、shell腳本 #!/usr/bin/env bash# 讀取文檔數據 while read -r line do# 提取服務名和命令service_name$(echo "$line" | awk {print $1})command$(echo "$line" | awk {$1""; print substr($0,2)})#echo "服務名: $service_name"…

SQL進階學習

1.[NISACTF 2022]join-us sql報錯注入和聯合注入 過濾: as IF rand() LEFT by updatesubstring handler union floor benchmark COLUMN UPDATE & sys.schema_auto_increment_columns && 11 database case AND right CAST FLOOR left updatexml DATABA…

Vue3入門組合式 API

Vue3 學習 開發環境 tong ~/Projects/EasyVue3 $ node -v v16.20.1 tong ~/Projects/EasyVue3 $ sw_vers ProductName: macOS ProductVersion: 14.1.1 BuildVersion: 23B81 tong ~/Projects/EasyVue3 $ npm --version 8.19.4 tong ~/Projects/Ea…

selenium 簡單案例 <批量下載文件> <網頁自動化點擊上報>

一、批量下載文件 網頁分析 點擊跳轉到下載頁面 from selenium import webdriver import timedef get_link_list():# 創建瀏覽器對象driver webdriver.Chrome(executable_pathrC:\Users\nlp_1\Desktop\chromedriver\chromedriver-win32\chromedriver.exe)url https://www…

微信報名怎么做_輕松便捷的數字化報名體驗

微信報名:輕松便捷的數字化報名體驗 在這個數字化時代,微信已經成為我們生活中不可或缺的一部分。它不僅僅是一個社交平臺,更是一個功能強大的綜合性工具。其中,微信報名功能更是給我們的生活帶來了極大的便利。本文將詳細介紹微…

Django之cookie和session

文章目錄 Cookie的介紹Cookie的由來什么是CookieCookie原理Cookie覆蓋瀏覽器查看Cookie 在Django中操作Cookie設置Cookie查詢瀏覽器攜帶的Cookie刪除Cookie Cookie校驗登錄sessionSession的由來Session設置查看、更新Session值刪除Session值Seesion的其他方法Session的其他配置…

企業微信機器人:自動化辦公的未來已來!

導語:隨著科技的迅速發展,人工智能已經逐漸滲透到我們的日常生活和工作中。而企業微信機器人的出現,更是開啟了自動化辦公的新紀元。本文將為您詳細解析企業微信機器人的功能、優勢以及如何為企業帶來實質性的價值。 一、企業微信機器人的功…

擴展外部eMMC存儲

By Toradex胡珊逢 簡介 存儲器的嵌入式設備中扮演著重要角色,上面不僅安裝有操作系統,同時也保存著應用程序和運行日志等。對于存儲器如 eMMC,寫入的數據量決定其使用壽命,對于有大量日志記錄的應用,通常可以選用一個…