狠狠撸

狠狠撸Share a Scribd company logo
Best Practices - The Upload

     2013/01/13 @ WebConf
      <Orange@chroot.org>
About Me

? 蔡政達 aka Orange
? 2009 台灣駭客年會競賽
  冠軍
? 2011, 2012 全國資安競
  賽金盾獎冠軍                ? 專精於
? 2011 東京 AVTOKYO 講師     – 駭客攻擊手法
? 2012 台灣 PHP Conf 講師    – Web Security
? 2012 香港 VXRLConf 講師    – Windows Vulnerability
                           Exploitation
About Me

? CHROOT Security Group 成員
? NISRA 資訊安全研究會 成員
? Disclosed
  – MS12-071 / CVE-2012-4775


? http://blog.orange.tw/
WebConf 2013「Best Practices - The Upload」
Best Practices
今天的主題是關於上傳的最佳實踐
駭客攻擊流程
1. Reconnaissance
  –   Google Hacking, Reversed Whois, AXFR ……
2. Scanning
  –   SYN/ACK Scan, TCP NULL/FIN/Xmas/Mainmon/Window
      Scan, SCTP INIT Scan, Hydra, Nessus ……
3. Gaining Access
  –   Heap/Stack/V-table Overflow, ROP, Heap Spray, System
      Misconfiguration, Metasploit, Exploit Database ……
4. Maintaining Access
  –   Privilege Escalation, Trojan, Backdoor, Rootkit, Code/DLL
      Injection, API Hook, LD_PRELOAD, Anti AV/Debugger ……
5. Clearing Tracks
  –   Syslog, WTMP/UTMP, Event Log, Shell(Bash/Explorer) ……
聽不懂嗎 ?
其實有份簡單版的啦
駭客攻擊流程
(2013 WebConf 簡單版)

1. 觀察尋找漏洞
2. 透過漏洞上傳後門取得控制權
 – Upload?
3. 清理足跡
 – Web log? Dabase log?
上傳後門 - Webshell

? 一段網頁後端語言寫的小程式
? 具有讀, 寫, 執行命令的功能讓駭客更方便
  控制受害主機
 –   <?php eval( $_REQUEST[cmd] );?>
 –   Runtime.getRuntime().exec( cmd )
 –   <%eval request("cmd") %>
 –   __import__('os').system(cmd)
e.g. Python Webshell




    https://github.com/evilcos/python-webshell/
來看個小案例
模擬駭客入侵手法
論壇架站 ?以 Discuz 為例
可能用到了
不是说上述网站有漏洞啦…
骇客註册帐号
骇客上传自己的大头贴
骇客看看自己的大头贴
接下来,就是见证奇蹟的时刻




    http://www.lu-chen.com/
http://webconf.orange.tw
/discuz/uc_server/data/avatar/000/00/00/05_
avatar_big.jpg
http://webconf.orange.tw
/discuz/uc_server/data/avatar/000/00/00/05_
avatar_big.jpg/.php
Nginx 文件解析漏洞

? 難道 Nginx 錯了嗎 ?
 – 實際上是 PHP CGI 處理 PATH_INFO 的問題
? 什麼是 PATH_INFO ?
 – /index.php/module/login
 – /index/module/login
? 只要駭客上傳一張經過設計的圖片
 – /userfiles/mypic.jpg
 – /userfiles/mypic.jpg/nihao.php
經過設計的圖片怎麼來 ?

? 一張圖片很多地方可藏
 – Huffman table
 – EXIF
? 老招也可以拿出來用
 – copy /b rst.jpg+backdoor.php dst.jpg
? 範例圖片
 – http://orange.tw/exif.jpg
所以上傳這件事安不安全呢 ?
(駭客入侵什麼的, 都是電影特效啦)
上傳檔案

?   沒檢查
?   黑名單 vs. 白名單
?   如何判斷檔案類型 ?
?   如何做出讓駭客頭痛的上傳功能 ?
黑名單 vs. 白名單

 ? 防護目前最頭痛問題
     – 沒有防不了的東西
     – 不知道的東西防不了
     – 游走邊緣的東西防不了
 ? 常見禁止上傳附檔名
     – php phtml php3 php4 php5
     – asp asa cer cdx shtml
     – aspx asax ascx ashx asmx
http://www.hitcon.org/download/2010/5_Flash Exploit.pdf#Page.20
1. 沒有防不了的東西
「程式設計師用黑名單禁止了所
 有他知道不可以上傳的副檔名」
沒有防不了的東西

1. 建立個檔案上傳,檔案名叫做 .htaccess
 – AddHandler application/x-httpd-php .jpg
2. 上傳經過設計的 jpg ,駭客取得控制權


? Apache 的個別目錄使用者定義設定檔
 – 打破典型只認為 .php* 有害的思考框框
遇過 網站管理者 說:
「這個是伺服器提供的功能不是漏洞,沒有
 人会这样子搞啦,你以為每个人都骇客唷」
https://speakerdeck.com/allenown/the-internet-is-not-safe-webconf-taiwan-2013
https://www.facebook.com/TWWDB
2. 不知道的東西防不了
「程式設計師用黑名單禁止了所
 有他知道不可以上傳的副檔名」
 (htaccess也加上了喔 ^_^)
不知道的東西防不了

? Apache 文件解析 feature
? 未在 mime.types 定義的副檔名,會從檔名
  後方依序往前尋找副檔名做為解析
 – user.jpg           ?   .jpg
 – user.php.jpg       ?   .jpg
 – user.php.xxx       ?   .php
 – user.php.xxx.ooo   ?   .php
3. 遊走邊緣的東西防不了
「後端攻城師換了白名單的方式
 只允許 jpg 的圖片才可以上傳」
游走邊緣的東西防不了

? IIS 文件解析 feature
  – IIS < 7
                                       user.asp;aa.jpg
  – Asp.net 也是一樣 ^__<


? 以 *.asp 取名的資料夾下檔案會以 asp 解析
  – http://webconf.orange.tw/files/a.asp/user.jpg
? IIS 檔名解析時會被分號截斷
  – http://webconf.orange.tw/files/user.asp;aa.jpg
用黑名單
要注意的東西好多…




            ╮(╯3╰)╭ …
後端程式如何取得檔案類型 ?
这是一张图片上传时会送出的资讯




     filename
            Content-Type

     File header
事實上, 多數錯誤的程式碼來自搜尋引擎

  網路寫什麼就貼上,你是 (逼) 就是了。
寫出安全的上傳功能

? Update your sense and software.
? User controlled filename is always dangerous.
  – Whatever filename, extension or temporary
    filename.
? Use Image library to valid or strip the image.
? Disabled the directory’s execution permission
  you uploaded to.
Summary

? Nginx(PHP) 文件解析漏洞
? 黑名單 vs. 白名單
 – htaccess
? 文件解析問題
 – Apache 文件解析
 – IIS 文件解析
? 檔案類型的判斷
? 撰寫上傳功能時要注意的點
深夜問題多…
刑法36章358~363條,妨害電腦使用罪
問與答
Q&A
Thanks.
<Orange@chroot.org>

More Related Content

WebConf 2013「Best Practices - The Upload」