绕过黑名单上传
上传模块,有时候会写成黑名单限制,在上传文件的时获取后缀名,再把后缀名与程序中黑名单进行检测,如果后缀名在黑名单的列表内,文件将禁止文件上传
黑名单代码分析
首先是检测 submit 是否有值,获取文件的后缀名,进行黑名单对比,后缀名不在黑名单内,允许上传
绕过黑名单上传的攻击
上传图片时,如果提示不允许 php、asp 这种信息提示,可判断为黑名单限制, 上传黑名单以外的后缀名即可。 在 iis 里 asp 禁止上传了,可以上传 asa cer cdx 这些后缀,如在网站里允许.net 执行 可以上传 ashx 代替 aspx。如果网站可以执行这些脚本,通过上传后门即可 获取 webshell。 在不同的中间件中有特殊的情况,如果在 apache 可以开启 application/x-httpd-php 在 AddType application/x-httpd-php .php .phtml .php3 后缀名为 phtml 、php3 均被解析成 php 有的 apache 版本默认就会开启。 上传目标中间件可支持的环境的语言脚本即可,如==.phtml、php3==
将文件后缀名改成符合要求的后缀名即可完成上传
通过上传的文件返回的路径直接获取信息
htaccess重写解析绕过上传
上传模块,黑名单过滤了所有的能执行的后缀名,如果允许上传.htaccess。htaccess 文件的作用是可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定 IP 地址的用户、只允许特定 IP 地址的用户、禁止目录列表,以及使用其他文件作为 index 文件等一些功能。 在 htaccess 里写入 SetHandler application/x-httpd-php 则可以文件重写成 php 文件。要 htaccess 的规则生效,则需要在 apache 开启 rewrite 重写模块,因为 apache 是多数都开启这个模块,所以规则一般都生效
黑名单上传代码分析
黑名单限制的文件名有:
".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",
".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",
".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",
".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf"
htaccess重写解析攻击
上传.htaccess文件
.htaccess内容为:
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
上传恶意jpg文件
获取后台信息
大小写绕过上传
有的上传模块后缀名采用黑名单判断,但是没有对后缀名的大小写进行严格判断,导致可以更改后缀大小写可以被绕过。如 PHP、 Php、 pHp
大小写代码分析
没有大小写转换代码
有大小写转换代码
将文件后缀名进行大小写转换
观察源代码,选择没有黑名单限制的文件上传方式
获取信息
文件绕过上传
在上传模块里,采用黑名单上传,如果没有对空格进行去掉可能被绕过
空格绕过上传代码分析
有去掉空格代码
没有去掉空格代码
检测 submit 后 上传目录存在时,进入黑名单判断。如果文件后缀名在黑名单里。 不允许上传,但是文件后缀名,没有过滤空格,可以添加空格绕过
空格绕过上传攻击
抓包上传
获取信息
利用windows系统特征绕过源码分析
文件名尾不加点代码
文件名尾加点代码
所以对于这种漏洞,可以通过在文件名尾加点的方式绕过,同样是黑名单禁止上传,但是可以上传.php.这种文件后缀
抓包上传获取路径
获取到信息
NTFS 交换数据流::$DATA 绕过上传
如果后缀名没有对::$DATA 进行判断,利用 windows 系统 NTFS 特征可以绕过上传
NTFS交换数据流::$DATA代码分析
有过滤掉$DATA后缀名的操作
没有过滤掉$DATA后缀名的操作
同样用黑名单过滤后缀名。但是程序中没有对::$
DATA进行过滤可以添 加:: $
DATA 绕过上传。
NTFS交换数据流::$DATA攻击绕过上传
burp suite 抓包
修改后缀名为php::$DATA
获取到文件路径
利用 windows 环境的叠加特征绕过上传
在 windwos 中如果上传文件名 moonsec.php:.jpg 的时候,会在目录下生产空白的 文件名 moonsec.php
再利用 php 和 windows 环境的叠加属性,
以下符号在正则匹配时相等
双引号" 等于 点号.
大于符号> 等于 问号?
小于符号< 等于 星号*
文件名.<或文件名.<<<或文件名.>>>或文件名.>><空文件名
黑名单源码分析
利用windows环境的叠加特征绕过上传攻击
burpsuite 抓包上传
修改文件后缀名为s.php:.jpg
想文件中写入数据
获取到文件路径
获取信息
PHP文件前后对比
双写后缀名绕过上传
在上传模块,有的代码会把黑名单的后缀名替换成空,例如 a.php 会把 php 替换 成空,但是可以使用双写绕过例如 asaspp,pphphp,即可绕过上传