DVWA學習日記-2 命令注入

命令注入
什麼是命令注入?
就是通過WEB程序在服務器上拼接系統命令

準備階段:
打開Firefox瀏覽器
打開我們的環境DVWA

1.選擇我們的簡單等級
在這裏插入圖片描述
2.進入我們的命令注入頁面
在這裏插入圖片描述
3.首先讓我們輸入ip地址
輸入127.0.0.1
這裏和我們平時cmd的命令一樣,web系統調用了我們的系統命令
在這裏插入圖片描述
4.確認命令注入流程
首先查看是否調用系統命令
再看函數或函數的參數是否可控
是否拼接注入命令

5.確認可控字段
我們發現ping+空格是固定的,而ip地址是可控的:任意
6.確定命令語句
最常用的是我們的兩個&& and符號
ping 127.0.0.1 && net user

7.確定注入字段
ping 127.0.0.1&&net user
則ping是固定字段
注入字段是127.0.0.1&&net user

8.驗證注入命令
執行成功
在這裏插入圖片描述
在這裏插入圖片描述
9.進入普通模式
再試用127.0.0.1&&net user
我們則發現命令注入不成功
我們猜測兩個&符號被過濾掉了
在這裏插入圖片描述
9.1.我們再想想還有什麼符號可以連接兩條命令
其實一個&的符號也可以連接兩條命令的
在這裏插入圖片描述
9.2我們則結果測試成功
在這裏插入圖片描述
10.進入高等難度
嘗試了兩個方法都不行
windows下面除了&和&&
則我們要想到管道符號|
將我們的上一個命令傳輸的結果,通過管道傳輸給下一個命令
則發現執行成功
在這裏插入圖片描述
11.進入不可能模式
限制了輸入IP的格式
有效防止了命令注入
在這裏插入圖片描述

12.修復方法
最好使用白名單,在修復命令漏洞中黑名單是不靠譜的,而用白名單,像這個限制ip地址的格式

13.總結:
A&B
簡單的拼接
AB之間無制約關係

A&&B
A執行成功,然後纔會執行B

A|B
A的輸出,作爲B的輸入

A||B
A執行失敗,然後纔會執行B

14.實戰技巧:
過濾了敏感命令怎麼辦?
這就是爲什麼不推薦用黑名單進行過濾

14.1 如果過濾了whoami
我們可以使用who"“ami或者who”“am”" i進行繞過
如果在linux中,還支持單引號 who’'ami

15.如果不顯示輸出結果怎麼辦?
延時注入:
Windows 命令

ping 127.0.0.1 -n 5 >nul		#>nul的意思是不在屏幕上顯示ping的結果

Linux命令

sleep 5		#如果超過5秒就存在這個漏洞

遠程請求:
Windows

ping,telnet等

Linux

wget,curl等			#我們可以搭一個web讓他用wget請求,如果前端沒有響應信息,但是我們服務器可以看到我們的請求,但是現在比較流行的是nslookup
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章