iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
2
Security

Web Security 魔法使攻略系列 第 20

Web Security 魔法使攻略─ Upload

正文

「當你在一個網站看到有上傳的功能的時候,你會怎麼做?」

  1. 正常使用者會乖乖上傳需要上傳的文件格式
  2. 不乖的使用者可能規定上傳 jpeg 但是卻上傳 png
  3. 惡意的使用者可能會上傳一個 webshell

「要如何利用這些漏洞呢?」
上傳之後查看是否有上傳路徑,訪問該路徑看是否有權限可以使用

「如果有副檔名限制,該怎麼繞過?」
查看這個網站的驗證方式

  • 前端驗證
    • 如果只是前端驗證你可以直接把 js 關掉
    • 或是利用直接 request的方式繞過
  • 後端驗證
    • 如果只是單純用黑名單的方式
      • blacklist = ['php','asp']
      • 你可以嘗試利用大小寫比如說 PhP 或是 AsP
      • 或是其他比較特別的副檔名繞過黑名單
  • 透過驗證 file signature
    • png
    89 50 4E 47 0D 0A 1A 0A	 	‰PNG....
    
      - PNG	 	Portable Network Graphics file
      - Trailer: 49 45 4E 44 AE 42 60 82 (IEND®B`‚...)
      - CRC算法:`x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1`
    
    • jpeg
    FF D8	 	ÿØ
    
      - JPE, JPEG, JPG	 	Generic JPEGimage file
      - Trailer: FF D9 (ÿÙ)
    
    • 有興趣可以來這裡查看關於 file signature
    • 當然惡意使用者可以在檔案 header 塞下這些signature,後面在塞 php code

「這麼多方法可以繞過該怎麼辦」

  1. 用別人的服務:圖床(aws s3, imgur)
  2. 利用後端加上白名單驗證

「好像有一些要補充。」

  1. Apache 解析漏洞
    • Apache 遇到認不得的副檔名不會噴錯,他會往前找到他知道的副檔名時
      • feifei.php.hack
      • 認不得 hack 但是認識 php 就當作 php 吧

上一篇
Web Security 魔法使攻略─Local File Inclusion
下一篇
Web Security 魔法使攻略─ Template Injection
系列文
Web Security 魔法使攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言