DVWA通关 |
您所在的位置:网站首页 › dvwa靶场教程 › DVWA通关 |
目录 LOW 通关路径 源码分析 MEDIUM 通关路径 源码分析 HIGH 通关路径 源码分析 IMPOSSIBLE 源码分析 总结 LOW 通关路径1、新建个sh.php文件,内容如下: 2、尝试直接上传,上传成功,给出了文件保存路径。 看来这关一点防御都没有,任意文件可上传。 3、用蚁剑连接之前可以先在浏览器中试一下文件在不在,能不能被当作php解析。 那一般如果404就是文件不存在,如果php代码以字符串显示了就是不能解析用户上传的php。这两种情况下也就不用搬出蚁剑了。 4、用蚁剑连接一句话木马 源码分析果然是没有防御的,没有对上传的文件进行任何过滤。 三个主要操作: (1)全局数组$_FILES用来获取通过 POST 方法上传文件的相关信息。详见PHP 文件上传 (2)basename函数返回路径中的文件名部分 (3)move_uploaded_file函数将上传的文件保存到新位置 MEDIUM 通关路径1、直接上传上一关中的sh.php,会提示上传失败,只能上传JPEG和PNG格式的文件 2、将上一步中的文件后缀名改成.png,上传sh.png文件并用burpsuite抓包,将抓到的报文右键send to repeater 3、在repeater中修改filename参数的值,从sh.png修改为sh.php,点send,从response中可以看到文件上传成功,并返回了保存路径。 4、蚁剑连接一句话木马 源码分析这关增加了MIME校验,如下图高亮部分所示,只允许上传MIME类型(Content-Type请求头)为image/jpeg或image/png的文件。 HIGH 通关路径1、上一关的sh.png也传不上去了 2、试了一张百度上下载的正常的图片是能上传的,所以这关估计还检查了magic number。 3、图片里面加个一句话木马试试: 16进制形式查看并找个地方添加一句话木马 可以上传成功。 那么就剩下修改文件名了。 4、上传包含一句话木马的文件bai-ma.jpeg的时候,burpsuite抓包,在proxy---http history中找到这个http请求,并send to intruder 5、这里我打算先用爆破的方式来试试这关是否是黑名单过滤。 将文件后缀设置成待爆破参数 可以把文件名后缀做成一个尝试黑名单绕过的字典,可以包含各种php后缀变种,各种中间件、系统解析漏洞相关的后缀。 注意高亮部分不要勾选 爆破结果根据Length进行排序,从结果看,所有后缀都上传失败。很可能是文件后缀白名单过滤。 6、尝试了00截断,但是没有成功,网上查了很多资料,最终在这个博文里面找到了原因: 【文件上传】00截断详解(见步骤4和5) 本关应该是不适合用00截断的,即便满足以下两个条件也不行: php版本小于5.3.4 php的magic_quotes_gpc=off(php中magic_quotes_gpc函数详解) 因为本关提交的数据中并没有文件保存路径,对filename进行00截断后,用$_FILES[ 'uploaded' ][ 'name' ]获取到的文件名已经是00截断后的了,所以白名单校验不通过。 而根据上述链接,如果表单中有文件保存路径,则是通过$_POST获取的,就可以进行00截断 (具体为什么$_FILES[ 'uploaded' ][ 'name' ]获取到的文件名是00截断后的,暂时没有找到原理性依据,如果有哪位大神知道,请赐教) 7、官方给的help中说这关要和其他漏洞,比如文件包含结合,下面试了是可以的。 我用的是蚁剑, 这里似乎要添加cookie头才能成功连上一句话木马。 (不添加的话,测试连接时会出现返回数据为空的警告。至于为什么前面两关不用添加就能连接一句话木马,应该是因为前两关上传的文件不需要登录就可以访问,但存在文件包含漏洞的这个文件必须要登录访问) 源码分析和猜测的一样,如高亮部分所示这关一方面有检测到实际文件类型,另一方面对上传的文件名后缀也进行了白名单过滤。 主要函数: (1)getimagesize函数用于获取图像信息(详见php getimagesize 函数 - 获取图像信息) (2)strrpos函数用于查找子字符串在字符串中最后一次出现的位置(详见PHP strrpos() 函数) (3)substr函数返回字符串的一部分 (4)strtolower函数把字符串转换成小写 IMPOSSIBLE 源码分析就文件上传而言,impossible不但对文件后缀名和MIME进行了白名单过滤,还去除了上传的文件中的php代码,并给上传的文件重命名(虽然这个重命名展示出来了,对安全没有什么卵用)。 主要函数: (1)uniqid函数基于以微秒计的当前时间,生成一个唯一的 ID (2)md5函数计算字符串的 MD5 散列。 (3)ini_get函数获取php.ini里变量值 (4)sys_get_temp_dir函数返回 PHP 储存临时文件的默认目录的路径 (5)imagecreatefromjpeg函数以及imagecreatefrompng函数由文件或 URL 创建一个新图象 (6)imagejpeg函数以及imagepng函数输出图象到浏览器或文件 (7)getchwd函数返回当前工作目录 (8)rename函数重命名文件或目录 总结文件上传漏洞网上有很多挺全的总结了,比如文件上传漏洞 (上传知识点、题型总结大全-upload靶场全解)和文件上传绕过总结。 这里我就简单说一下。 文件上传常见的可绕过限制和绕过方法见下图 比较全的文件上传靶场应该是upload-labs,可以试试。
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |