滲透測試——七、網站漏洞——命令注入和跨站請求偽造(CSRF)

滲透測試

  • 一、命令注入
  • 二、跨站請求偽造(CSRF)
  • 三、命令注入頁面之注人測試
  • 四、CSRF頁面之請求偽造測試

一、命令注入

命令注入(命令執行) 漏洞是指在網頁代碼中有時需要調用一些執行系統命令的函數例如 system()、exec()、shell_exec()、eval()、passthru(),代碼未對用戶可控參數做過濾,當用戶能控制這些函數中的參數時,就可以將惡意系統命令拼接到正常命令中,從而造成命令執行攻擊。
常見連接符如下:

A;B,# 先執行A,再執行 B。
A&B,# 簡單拼接,A、B之間無制約關系
A|B,# 顯示B的執行結果。
A&&B,# A執行成功,然后才會執行 B。
A||B,# A執行失敗,然后才會執行 B。

命令注入漏洞的分類如下:

  • (1)代碼層過濾不嚴
    商業應用的一些核心代碼封裝在二進制文件中,在 Web 應用中通過 system 函數來調用svstem( “bin/program – arg $arg”) 😮
  • (2) 系統的洞造成命令注入
    例如 Bash 破殼漏洞(CVE-2014 -6271)
  • (3)調用的第三方組件存在代碼執行漏洞
    例如 WordPress 中用來處理圖片的ImageMagick 組件、Java 中的命令執行漏洞 (Struts2/Elasticsearch Groovy 等)、ThinkPHP 命令執行等。

對于命令注入,可從以下幾個方面進行防御:

  • 1、盡量少用執行命令的函數或者直接禁用。
  • 2、參數值盡量使用引號括,并在拼接調用 addslashes 函數進行轉義
  • 3、在使用動態函數之前,確保使用的函數是指定的函數之一
  • 4、在進入執行命令的函數方法之前,對參數進行過濾,對敏感字符進行轉義。
  • 5、在可控點是程序參數的情況下,使用escapeshellcmd 函數進行過濾;在可控點是程序參數值的情況下,使用escapeshellarg 函數進行過濾。

二、跨站請求偽造(CSRF)

跨站請求偽造(cross-site request forgery),也被稱為 one-click attack 或者 session riding.通常縮寫為 CSRF 或者XSRF,是一種挾制用戶在當前已登錄的 Web 應用程序上執行非本意的操作的攻擊方法。
跨站請求攻擊,簡單地說,是攻擊者通過一些技術手段欺騙用戶的瀏覽器去訪問一個自己曾經認證過的網站并運行一些操作 (例如發郵件、發消息,甚至財產操作,比如轉賬和購買商品)。由于瀏覽器曾經認證過,所以被訪問的網站會認為是真正的用戶操作而去運行。這利用了 Web 中用戶身份驗證的一個漏洞:簡單的身份驗證只能保證請求發自某個用戶的瀏覽器,卻不能保證請求本身是用戶自愿發出的。
在這里插入圖片描述

三、命令注入頁面之注人測試

將安全級別調整至 Low 級別,打開“命令注人”頁面,查看源碼,可以知道 Low 級別的代碼接收了用戶輸入的 IP,對目標P 從主機服務器的角度進行 ping 測試。代碼中對用戶輸人的IP 并沒有進行任何的過濾,所以利用該漏洞進行命令注入。
網頁在編輯時,要注意編碼格式,使用UTF -8 格式時,中文相應地會出現HTML亂碼。
在這里插入圖片描述
在這里插入圖片描述
可以利用&、&&、|、||等命令連接符,在 ping 完后再執行系統命令,如查看IP 信息、為服務器添加用戶 等非法操作。
在這里插入圖片描述
將安全級別調整至 Medium 級別,打開“命令注入”頁面,查看源碼,可以知道 Medium級別的代碼在 Low 級別代碼的基礎上增加了對字符“&&”和“;”的過濾,但在做 Low 級別實驗時,用的字符“&”并不在它的過濾范圍中。
在這里插入圖片描述
&& 和&的區別在于,&& 是執行完前面的命令后,再執行后面的命令;& 是不管前面的命令是否已執行,后面的都執行。
將安全級別調整至 High 級別,打開“命令注入”頁面,查看源碼,可知道 High 級別的代碼進行了黑名單過漲,把一些常見的命令連接符給過濾了。黑名單過濾看似安全,但是如果黑名單不全,則很容易進行繞過。仔細看黑名單過濾中的“1”,其后面還有一個空格,于是用“1”或者“1”又可以繞過。
實際滲透中,命令注入可以用來修改上傳文件的文件類型。利用“重命名”命令把上傳的JPG 文件改成 PHP 文件。
在這里插入圖片描述

四、CSRF頁面之請求偽造測試

將安全級別調整至 Low 級別,打開“CSRF”頁面。
在這里插入圖片描述
頁面功能是用戶更新密碼,但代碼里沒有對更改代碼的合理性做驗證。在界面中輸入要修改的密碼并用 Burp Suite 軟件抓包,修改密碼的 URL為:
在這里插入圖片描述
在這里插入圖片描述
這時攻擊者可利用這個 URL,稍做修改,發送給受害者,并引誘受害者在登錄網站的情況下點擊,如 URL 修改為 http://192.168.217.130/dvwa/vulnerabilities/csrf/? password_new =harker&password_conf = harker&Change =%E6%9B%B4%E6%9%B9#,受害者點擊鏈接后,就會在不知情下把登錄網站的密碼修改為“harker”。
為了隱藏攻擊者發送的URL,可將URL鏈接寫在網頁里,發布在攻擊者的網站上,當受害者無意中瀏覽攻擊者的網站時原有的密碼被修改。
將安全級別調整至 Medium 級別,打開“CSRF”頁面。
在這里插入圖片描述
Medium 級別比Low 級別多了一個驗證:if(stripos($_SERVER HTTPREFERER門SERVER['SERVER NAME )! == false)。
驗證受害者訪問的網頁與修改密碼網頁是否同一網站。這時含有 CSRF 的網頁就不能放在攻擊者的服務器上了,而需要利用文件上傳的方式上傳至與受害者訪問修改密碼網頁的網站上進行訪問。
在這里插入圖片描述
High 級別的代碼加入了 Anti - CSRF token 機制,用戶每次訪問修改密碼頁面時,服務器都會返回一個隨機的 token。向服務器發起請求時,需要提交 token 參數,而服務器在收到請求時,會優先檢查 token,只有 token 正確,才會處理客戶端的請求。要繞過這個機制,就需要獲得 token 值,這需要一定的網頁編程基礎,這里就不贅述了。

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

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

相關文章

基于ssm在線云音樂系統的設計與實現論文

摘 要 隨著移動互聯網時代的發展,網絡的使用越來越普及,用戶在獲取和存儲信息方面也會有激動人心的時刻。音樂也將慢慢融入人們的生活中。影響和改變我們的生活。隨著當今各種流行音樂的流行,人們在日常生活中經常會用到的就是在線云音樂系統…

走迷宮(詳細分析)

目錄 一、課題描述 輸入樣例: 輸出樣例: 二、需求分析 輸入的形式和輸入值的范圍: 輸出的形式: 程序所能達到的功能: 三、概要設計 四、流程圖 五 、代碼詳細注釋 六、測試數據和結果 一、課題描述 以一個…

freeswitch webrtc video_demo客戶端進行MCU的視頻會議

系統環境 一、編譯服務器和加載模塊 二、下載編譯指定版本video_demo 三、配置verto.conf.xml 1.修改配置文件 2.重新啟動 四、MCU通話測試 1.如何使用video_demo 2.測試結果 五、MCU的通話原理及音頻/視頻/布局/管理員等參數配置 附錄 freeswitch微信交流群 系統環境 lsb_rel…

MyBatis處理映射關系

在Mybatis實現數據處理過程中,字段名符合數據庫的規則,屬性一般為駝峰規則,因此字段名和屬性名通常不一致,此時可以通過以下兩種方式對數據庫字段進行映射處理: 為字段起別名,保證和實體類中的屬性名一致在…

lv11 嵌入式開發 IIC(下) 20

目錄 1 Exynos4412下IIC控制器介紹 1.1 總覽 1.2 特征 1.3 工作框圖 1.4 其他內容介紹 1.5 四種工作模式寄存器流程 2 IIC寄存器詳解 2.1 概述 2.2 控制寄存器 2.3 狀態寄存器 2.4 地址寄存器 2.5 數據寄存器 2.6 其他寄存器 3 MPU06050 3.1 簡介 3.2 MPU6050主…

HJ103 Redraiment的走法

題目: HJ103 Redraiment的走法 題解: dfs 暴力搜索 枚舉數組元素,作為起點如果后續節點大于當前節點,繼續向后搜索記錄每個起點的結果,求出最大值 public int getLongestSub(int[] arr) {int max 0;for (int i 0…

data_loader返回的每個batch的數據大小是怎么計算得到的?

data_loader是一個通用的術語,用于表示數據加載器或數據批次生成器。它是在機器學習和深度學習中常用的一個概念。 一、data loader 數據加載器(data loader)是一個用于加載和處理數據集的工具,它可以將數據集劃分為小批次&#…

提示(Prompt)工程中提示詞的開發優化基礎概念學習總結

本文對學習過程進行總結,僅對基本思路進行說明,結果在不同的模型上會有差異。 提示與提示工程 提示:指的是向大語言模型輸入的特定短語或文本,用于引導模型產生特定的輸出,以便模型能夠生成符合用戶需求的回應。 提示…

內存學習——堆(heap)

目錄 一、概念二、自定義malloc函數三、Debug運行四、heap_4簡單分析4.1 heap管理鏈表結構體4.2 堆初始化4.3 malloc使用4.4 free使用 一、概念 內存分為堆和棧兩部分: 棧(Stack)是一種后進先出(LIFO)的數據結構&…

AVFormatContext封裝層:理論與實戰

文章目錄 前言一、封裝格式簡介1、FFmpeg 中的封裝格式2、查看 FFmpeg 支持的封裝格式 二、API 介紹三、 實戰 1:解封裝1、原理講解2、示例源碼 13、運行結果 14、示例源碼 25、運行結果 2 四、 實戰 2:轉封裝1、原理講解2、示例源碼3、運行結果 前言 A…

文章解讀與仿真程序復現思路——電力系統自動化EI\CSCD\北大核心《考慮電力-交通交互的配電網故障下電動汽車充電演化特性》

這個標題涉及到電力系統、交通系統和電動汽車充電的復雜主題。讓我們逐步解讀: 考慮電力-交通交互的配電網故障: 電力-交通交互: 指的是電力系統和交通系統之間相互影響、相互關聯的關系。這可能涉及到電力需求對交通流量的影響,反…

回溯算法之N皇后

一 什么是回溯算法 回溯算法(Backtracking Algorithm)是一種用于解決組合優化問題的算法,它通過逐步構建候選解并進行驗證,以尋找所有滿足特定條件的解。回溯算法通常應用于在給定約束條件下枚舉所有可能解的問題,如…

Git—文件添加查看刪除修改

目錄 1.添加文件—場景一 2.查看.git文件 3.添加文件—場景三 4.修改文件 5.版本回退 6.撤銷修改 7.刪除文件 1.添加文件—場景一 在包含.git的目錄下新建?個ReadMe文件,我們可以使用 git add 命令可以將文件添加到暫存 區: ●添加一個或多個文…

Matlab數學建模算法之小波神經網絡詳解

🔗 運行環境:Matlab 🚩 撰寫作者:左手の明天 🥇 精選專欄:《python》 🔥 推薦專欄:《算法研究》 🔐#### 防偽水印——左手の明天 ####🔐 💗 大家…

vue的屬性

key 預期:number | string | boolean (2.4.2 新增) | symbol (2.5.12 新增) key 的特殊 attribute 主要用在 Vue 的虛擬 DOM 算法,在新舊 nodes 對比時辨識 VNodes。如果不使用 key,Vue 會使用一種最大限度減少動態元素并且盡可能的嘗試就地…

2022藍橋杯c組求和

題目名字 求和 題目鏈接 題意 輸入的每個數都要兩兩相乘,然后再加起來,求最后總和; 思路 每個數乘這個數的前綴和即可 算法一:前綴和 實現步驟 先把前綴和寫出來再寫for循環每個數都乘以自己的前綴和; 實現步驟 直接…

存儲成本降71%,怪獸充電歷史庫遷移OceanBase

怪獸充電作為共享充電寶第一股,業務增長迅速,以至于業務架構不停地增加組件。在驗證 OceanBase 可以簡化架構并帶來更大的業務價值后,首次嘗試在歷史庫中使用 OceanBase 替代 MySQL,存儲成本降低 71%。本文為怪獸充電運維架構部王…

Docker 入門

Docker 入門 基礎 不同操作系統下其安裝包、運行環境是都不相同的!如果是手動安裝,必須手動解決安裝包不同、環境不同的、配置不同的問題 而使用Docker,這些完全不用考慮。就是因為Docker會自動搜索并下載MySQL。注意:這里下載…

【C++】輸入輸出流 ⑥ ( cout 標準輸出流對象 | cout 常用 api 簡介 | cout.put(char c) 函數 )

文章目錄 一、cout 標準輸出流對象1、cout 標準輸出流對象簡介2、cout 常用 api 簡介 二、cout.put(char c) 函數1、cout.put(char c) 函數 簡介2、代碼示例 - cout.put(char c) 函數 一、cout 標準輸出流對象 1、cout 標準輸出流對象簡介 cout 是 標準輸出流 對象 , 是 ostrea…

端口被占用 --- 解決方案

問題描述 加速服務啟動失敗,443端口被magentproc(1576)占用。請關掉占用443端口的程序或者嘗試使用系統代理模式。 問題解決 按下 win R 打開 輸入cmd 輸入命令 netstat -ano | findstr 443 找到 0.0.0.0:443 對應的端口 (1576) 按下 ctrl shift esc, 打開任務管…