截断在文件包含和上传中的利用

截断大概可以在以下情况适用

include(require)

file_get_contents

file_exists

所有url中参数可以用%00控制

0x01. 本地文件包含1.1 截断类型:php %00截断

截断条件:

php版本小于5.3.4 详情关注CVE-2006-7243

php的magic_quotes_gpc为OFF状态

漏洞文件lfi.php


要include的password文件

Password


利用代码:lfi.php?action=password%00

注意:url正宗%00是被会url解码成0x00,所以可能导致截断。

password文件被成功包含并且执行phpinfo()函数。

如果没有截断条件,lfi.php就只能包含php扩展名的文件。

相反,如果有截断条件,lfi.php可以包含任意文件的扩展名。

当把magic_quotes_gpc打开,php版本依然是5.2.9时,再测试,结果%00被转义成了\0两个单体字符,不再具有截断功能。

原因是:当打开magic_quotes_gpc时,所有的 '(单引号),"(双引号),\(反斜线)和 NULL字符(%00)都会被自动加上一个反斜线进行转义。还有很多函数有类似的作用 如:addslashes()、mysql_escape_string()、mysql_real_escape_string()等

当把magic_quotes_gpc关闭,php版本依然是5.3.10时,依然不能截断。所以证明,php版本和gpc两个条件都必须满足,才能截断。

除了上面的include、require、include_once、require_once还有file_get_contents也能配合php %00利用。

FileGetContents.php


利用方式:

http://www.victim.com/FileGetContents.php?file=password%00

此时可以看到当前目录put.txt是上面password中的内容。

Password

1.2 文件路径长度截断

除了1.1说的%00可以截断,还可以用字符.或者/.,或者./(注意顺序)来截断,不能纯用/,至于为什么,不能用其他字符,想必应该和php实现有关。

系统文件路径长度限制:

windows 259个bytes

linux 4096个bytes

具体可以看这篇文章:http://joychou.org/index.php/Misc/filename-length-limit-on-windows-linux.html

截断条件:

php版本为5.3.4以下(具体哪个版本不是很清楚,乌云上kukki写的5.2.8以下,这明显是不对的,因为我测试用的5.2.9)

GPC是否开启没关系

漏洞代码lfi.php,和1.1中的lfi.php一样


在windows下需要.字符最少的利用POC:

lfi.php?action=password..............................................................................................................................................................................................................................................

成功包含,执行password里面的phpinfo函数

加上根目录路径一共为258个字节。所以需要的最少的.数为

258 - (lfi.php文件的路径长度即C:/wamp/www/+strlen('password'))

或者用./截断,最短的POC为,并且最短路径长度为258

lfi.php?action=password./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

将password文件名改为password123后,最短的POC为,最短路径长度依然为258

lfi.php?password123/./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

注意这两者一个是/开始,一个是.开始,这和路径长度的奇偶有关系,真正遇到这样的情况,就丢很长的/.,最后再跳整下第一个/或者.即可。

linux就自行测试吧。

0x02. 文件上传

截断类型:php的%00截断。所以截断的条件依然是php %00截断的条件

php版本5.3.4以下

gpc关闭

测试环境:

php版本5.2.9

gpc关闭

漏洞代码 upload.php

File Upload Vulnerability

文件:'; echo'路径:'.$targetPath; } else { echo("上传失败"); } }else{ echo("上传失败");}}?>

这个漏洞代码是我YY的,可能实际情况不一定能够用上。只是证明截断可以达到上传的功能。

先将一个php木马重命名为上面扩展名为白名单的后缀,比如.jpg

访问:http://www.victim.com/upload.php?jieduan=xxoo.php%00

点击submit按钮,就在server上生成了一个xxoo.php的马。

0x03. file_exists判断文件是否存在

file_exists在判断文件存在的时候也有被截断的现象。

截断条件:

php版本小于5.3.4

GPC关闭状态

漏洞代码如下,和CVE-2014-8959 phpmyadmin的这个漏洞一样。

';if(! file_exists($filename)){ echo'not exist';}else{ include_once($filename); echo'exist';}?>

当前目录存在一个shell.jpg文件,此时访问?file=shell.jpg%00,返回结果是文件存在。

有一个小技巧:

当上面文件第五行变成$filename = 'xxoo' . $file . '.php';,如果仍然要用shell.jpg,那么只需这样构造:?file=/../shell.jpg%00,利用/../回到当前目录。

在php中一些目录切换

../表示上一层目录

./表示当前目录

/单独使用不能表示当前目录,只用xx/这样才能表示xx这个目录

参考文章

http://sebug.net/node/t-45

http://drops.wooyun.org/tips/3827

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容