<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    什么是命令注入漏洞?

    一顆小胡椒2022-06-04 22:46:17

    什么是命令注入漏洞?

    命令注入漏洞如何讓攻擊者接管機器,以及如何防止這些漏洞。

    命令注入漏洞可能是應用程序中可能發生的最危險的漏洞之一。當應用程序允許用戶輸入與系統命令混淆時,就會發生命令注入漏洞或操作系統命令注入漏洞。當用戶輸入在沒有適當預防措施的情況下直接連接到系統命令中時,就會發生這種情況。讓我們用一個例子來理解。

    在代碼中調用系統命令

    假設Web應用程序具有允許用戶通過站點下載網頁的功能。要實現此功能,可以使用Python執行系統命令wget來下載網頁。代碼如下:

    導入操作系統def下載(url):
    os.system("wget-O- {}".format(url))顯示(下載(user_input.url))
    

    首先定義一個函數download,該函數調用wget從傳入的URL下載內容。然后它調用download用戶提供的輸入并顯示結果。如果用戶提交以下請求,應用程序將下載Google的主頁并將其顯示給用戶:

    GET/download?url=google.com
    主機:example.com
    

    命令注入是如何發生的

    在Linux命令行上,分號;字符分隔各個命令。而且由于這里的用戶輸入是直接傳遞給系統命令的,因此攻擊者可以wget通過在分號后提交他們想要的任何命令來執行命令之后的任意命令。例如,如果惡意用戶提交了這個請求會發生什么?

    GET/download?url=google.com;ls
    主機:example.com
    

    此請求將導致應用程序同時執行wget-O-google.com和 ls,從而輸出當前目錄的內容。由于應用程序隨后會將命令的結果顯示給用戶,因此惡意用戶也將能夠讀取ls命令的輸出。同樣,攻擊者也可以通過此漏洞讀取敏感文件:

    GET/download?url=google.com;cat/etc/shadow
    主機:example.com
    

    /etc/shadow是Unix系統上存儲散列用戶密碼的文件。攻擊者將能夠執行運行Web應用程序的用戶有權執行的任何系統命令。例如,他們可能能夠讀取敏感文件、訪問和利用本地網絡上的其他機器,或者修改服務器上的文件。

    如何防止命令注入?

    那么如何防止代碼中的命令注入漏洞呢?

    為防止命令注入,應避免將用戶輸入直接插入系統命令。可以使用的第一個替代策略是使用編程語言的系統API,而不是system()直接調用。大多數編程語言都有內置函數,允許您運行常見的系統命令,而不會冒命令注入的風險。

    例如,PHP有一個名為
    mkdir(DIRECTORY_NAME).
    可以使用它來創建新目錄
    而不是調用
    system("mkdirDIRECTORY_NAME").
    

    如果必須將用戶輸入插入系統命令,請在將用戶輸入傳遞到系統命令之前實施強輸入驗證。可以使用字符串或字符的允許列表來指定允許的值并拒絕所有其他不符合該格式的用戶輸入。例如,如果想允許用戶使用系統命令讀取系統文件的子集,可以創建允許的文件名列表并拒絕所有其他輸入。還可以使用正則表達式將用戶輸入限制為特定的字符子集,以防止用戶提交允許他們操縱系統命令的特殊字符。例如,這個正則表達式字符串會將用戶輸入限制為字母數字字符。

    并將用戶輸入限制為15個字符:^[A-Za-z0–9]{1,15}$.
    

    縱深防御策略

    最后,還有深度防御策略可以幫助將命令注入的風險降至最低。首先,可以部署WAF(Web應用程序防火墻)來幫助過濾掉可疑的用戶輸入。還應該僅使用完成其任務所需的權限來運行應用程序。例如,當應用程序只需要對文件進行讀取訪問時,不應授予它任何寫入或執行權限。這被稱為“最小特權原則”。這種做法將降低在攻擊期間系統受損的風險,因為攻擊者即使在應用程序上獲得命令注入,也無法獲得對敏感文件和操作的訪問權限

    url注入漏洞
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    在 HTTP 協議中,HTTP header 之間是由一個 CRLF 字符序列分隔開的,HTTP Header 與 Body 是用兩個 CRLF 分隔的,瀏覽器根據這兩個 CRLF 來取出 HTTP 內容并顯示出來。
    今天分享一篇文章,涉及Redis未授權、SSRF漏洞、寬字節注入、JSONP劫持、CORS、CRLF注入等技能,并詳細講述了其原理和漏洞利用等。能夠回連且權限夠的話,寫crontab利用計劃任務執行命令反彈shell?圖片加載與下載:通過URL地址加載或下載圖片?禁用不需要的協議。禁止30x跳轉Java和PHP的SSRF區別PHP支持的協議:
    最近在學習關于SQL注入方面的知識,想將一些相關的知識點做個匯總和筆記,方便日后的查閱也方便現在的學習。因為剛開始學習,涉獵還沒有很深入,本章將簡單的講講關于SQL注入的原理及其產生的過程和基本的一些加固方法。
    8月2日,虛擬化和云計算巨頭VMware發布了一項重要的安全公告VMSA-2022-0021,通告用戶修復數個在VMware產品中發現的安全漏洞。
    id=3';對應的sql:select * from table where id=3' 這時sql語句出錯,程序無法正常從數據庫中查詢出數據,就會拋出異常; 加and 1=1 ,URL:xxx.xxx.xxx/xxx.php?id=1' order by 3# 沒有報錯,說明存在3列爆出數據庫:?id=-1' union select 1,group_concat,3 from information_schema.schemata#爆出數據表:?id=1' and extractvalue--+(爆字段)?
    漏洞——即將進行概念驗證——是該公司修復的一系列可能導致攻擊鏈的缺陷之一。
    id=1' order by 3# 沒有報錯,說明存在3列。id=-1' union select 1,group_concat,3 from 數據庫名.數據表名--+拓展一些其他函數:system_user() 系統用戶名。updatexml函數:細節問題:extractvalue()基本一樣,改個關鍵字updatexml即可,與extractvalue有個很大的區別實在末尾注入加上,如:,而extractvalue函數末尾不加1(數值)?
    虛擬化服務提供商 VMware 周二發布了更新,以解決影響多個產品的 10 個安全漏洞,這些漏洞可能被未經身份驗證的攻擊者濫用以執行惡意操作。
    F-vuln(全稱:Find-Vulnerability)是為了自己工作方便專門編寫的一款自動化工具,主要適用于日常安全服務、滲透測試人員和RedTeam紅隊人員,它集合的功能包括:存活IP探測、開放端口探測、web服務探測、web漏洞掃描、smb爆破、ssh爆破、ftp爆破、mssql爆破等其他數據庫爆破工作以及大量web漏洞檢測模塊。
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类