电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

PHP安全-文件系統(tǒng)跨越

瀏覽:129日期:2022-09-12 08:01:32
文件系統(tǒng)跨越

無論你用什么方法使用文件,你都要在某個(gè)地方指定文件名。在很多情況下,文件名會作為fopen()函數(shù)的一個(gè)參數(shù),同時(shí)其它函數(shù)會調(diào)用它返回的句柄:

<?php

$handle = fopen(’/path/to/myfile.txt’, ’r’);

?>

當(dāng)你把被污染數(shù)據(jù)作為文件名的一部分時(shí),漏洞就產(chǎn)生了:

<?php

$handle = fopen('/path/to/{$_GET[’filename’]}.txt', ’r’);

?>

由于在本例中路徑和文件名的前后兩部分無法由攻擊者所操縱,攻擊的可能性受到了限制??墒?,需要緊記的是有些攻擊會使用NULL(在URL中表示為%00)來使字符串終止,這樣就能繞過任何文件擴(kuò)展名的限制。在這種情況下,最危險(xiǎn)的攻擊手段是通過使用多個(gè)../來方問上級目錄,以達(dá)到文件系統(tǒng)跨越的目的。例如,想像一下filename的值被指定如下:

http://example.org/file.php?file ... nother/path/to/file

與許多攻擊的情況相同,在構(gòu)造一個(gè)字串時(shí)如果使用了被污染數(shù)據(jù),就會給攻擊者以機(jī)會來更改這個(gè)字串,這樣就會造成你的應(yīng)用以你不希望方式運(yùn)行。如果你養(yǎng)成了只使用已過濾數(shù)據(jù)來建立動態(tài)字串的習(xí)慣,就可以防止很多類型包括很多你所不熟悉的漏洞的出現(xiàn)。

由于fopen()所調(diào)用的文件名前導(dǎo)的靜態(tài)部分是/path/to,所以上面的攻擊中向上跨越目錄的次數(shù)比所需的更多。因?yàn)楣粽咴诎l(fā)起攻擊前無法察看源碼,所以典型的策略是過多次地重復(fù)../字串。../字串使用太多次并不會破壞上面的攻擊效果,所以攻擊者沒有必要猜測目錄的深度。

在上面的攻擊中使fopen()調(diào)用以你不希望方式運(yùn)行,它簡化后等價(jià)于:

<?php

$handle = fopen(’/another/path/to/file.txt’, ’r’);

?>

在意識到這個(gè)問題或遭遇攻擊后,很多開發(fā)者都會犯試圖糾正潛在的惡意數(shù)據(jù)的錯(cuò)誤,有時(shí)根本不會先對數(shù)據(jù)進(jìn)行檢查。正如第一章所述,最好的方法把過濾看成檢查過程,同時(shí)迫使使用者遵從你制定的規(guī)則。例如,如果合法的文件名只包含字母,下面的代碼能加強(qiáng)這個(gè)限制:

<?php

$clean = array();

if (ctype_alpha($_GET[’filename’]))

{

$clean[’filename’] = $_GET[’filename’];

}

else

{

/* ... */

}

$handle = fopen('/path/to/{$clean[’filename’]}.txt', ’r’);

?>

并沒有必要對filename值進(jìn)行轉(zhuǎn)義,這是因?yàn)檫@些數(shù)據(jù)中只用在PHP函數(shù)中而不會傳送到遠(yuǎn)程系統(tǒng)。

basename( )函數(shù)在檢查是否有不必要的路徑時(shí)非常有用:

<?php

$clean = array();

if (basename($_GET[’filename’]) == $_GET[’filename’])

{

$clean[’filename’] = $_GET[’filename’];

}

else

{

/* ... */

}

$handle = fopen('/path/to/{$clean[’filename’]}.txt', ’r’);

?>

這個(gè)流程比只允許文件名是字母的安全性要差了一些,但你不太可能要求那樣嚴(yán)格。比較好的深度防范流程是綜合上面的兩種方法,特別是你在用正則表達(dá)式檢查代碼合法性時(shí)(而不是用函數(shù)ctype_alpha( ))。

當(dāng)文件名的整個(gè)尾部是由未過濾數(shù)據(jù)組成時(shí),一個(gè)高危漏洞就產(chǎn)生了:

<?php

$handle = fopen('/path/to/{$_GET[’filename’]}', ’r’);

?>

給予攻擊者更多的靈活性意味著更多的漏洞。在這個(gè)例子中,攻擊者能操縱filename參數(shù)指向文件系統(tǒng)中的任何文件,而不管路徑和文件擴(kuò)展名是什么,這是因?yàn)槲募U(kuò)展名是$_GET[’filename’]的一部分。一旦WEB服務(wù)器具有能讀取該文件的權(quán)限,處理就會轉(zhuǎn)向這個(gè)攻擊者所指定的文件。

如果路徑的前導(dǎo)部分使用了被污染數(shù)據(jù)的話,這一類的漏洞會變得甚至更加龐大。這也是下一節(jié)的主題。

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 5L旋转蒸发器-20L-50L旋转蒸发器-上海越众仪器设备有限公司 | 光栅尺厂家_数显表维修-苏州泽升精密机械 | 餐饮小吃技术培训-火锅串串香培训「何小胖培训」_成都点石成金[官网] | 联系我们老街华纳娱乐公司官网19989979996(客服) | 机械立体车库租赁_立体停车设备出租_智能停车场厂家_春华起重 | 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 挤奶设备过滤纸,牛奶过滤纸,挤奶机过滤袋-济南蓝贝尔工贸有限公司 | 宝鸡市人民医院| 电磁辐射仪-电磁辐射检测仪-pm2.5检测仪-多功能射线检测仪-上海何亦仪器仪表有限公司 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 上海瑶恒实业有限公司|消防泵泵|离心泵|官网 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | 济南菜鸟驿站广告|青岛快递车车体|社区媒体-抖音|墙体广告-山东揽胜广告传媒有限公司 | 阜阳成人高考_阜阳成考报名时间_安徽省成人高考网| 常州企业采购平台_常州MRO采购公司_常州米孚机电设备有限公司 | 青州开防盗门锁-配汽车芯片钥匙-保险箱钥匙-吉祥修锁店 | 吸污车_吸粪车_抽粪车_电动三轮吸粪车_真空吸污车_高压清洗吸污车-远大汽车制造有限公司 | 智慧消防-消防物联网系统云平台| FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 板框压滤机-隔膜压滤机-厢式压滤机生产厂家-禹州市君工机械设备有限公司 | 英国公司注册-新加坡公司注册-香港公司开户-离岸公司账户-杭州商标注册-杭州优创企业 | 出国劳务公司_正规派遣公司[严海] | 衬四氟_衬氟储罐_四氟储罐-无锡市氟瑞特防腐科技有限公司 | 三防漆–水性三防漆–水性浸渍漆–贝塔三防漆厂家 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 校车_校车价格_19座幼儿园校车_幼儿园校车_大鼻子校车 | 天坛家具官网| 河南中专学校|职高|技校招生-河南中职中专网 | 河南中专学校|职高|技校招生-河南中职中专网 | 华禹护栏|锌钢护栏_阳台护栏_护栏厂家-华禹专注阳台护栏、楼梯栏杆、百叶窗、空调架、基坑护栏、道路护栏等锌钢护栏产品的生产销售。 | YT保温材料_YT无机保温砂浆_外墙保温材料_南阳银通节能建材高新技术开发有限公司 | 基业箱_环网柜_配电柜厂家_开关柜厂家_开关断路器-东莞基业电气设备有限公司 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 雪花制冰机(实验室雪花制冰机)百科| 江西自考网| 太空舱_民宿太空舱厂家_移动房屋太空舱价格-豪品建筑 |