代码审计upload-labs上传漏洞靶场

Posted ekko-z

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码审计upload-labs上传漏洞靶场相关的知识,希望对你有一定的参考价值。

基本把代码的意思都写入注释中了,我之前博客写的,图可能不是太清晰,也可以去我之前博客看
1.Js绕过

webshell;
技术图片
技术图片

直接function改成return true

2.Content-type绕过
技术图片
技术图片

稍微改一下就可以了

3.phtml上传绕过
这一关没什么可说的,算是钻了apahce的一个空子吧
技术图片
简单的一个黑名单的方式,但是利用了apahce的解析
技术图片
在http.conf文件的第403行,这里直接会把phtml文件当作php代码来执行,其实你在这后面加个.txt,他都能给你当作php来执行
5 大小写绕过
技术图片
技术图片

成功绕过,这种黑名单方式不是很好,,建议白名单

6 后缀加空格绕过
技术图片
可以看到源代码中并没有对空格做限制,windows中一个特性,加一个空格他会自动给你删除掉,加空格并不影响上述文件的一系列操作
技术图片

木马上传成功

7.后缀加点绕过
同样是windows的特性
技术图片
http://192.168.1.4/upload-labs/upload/7.php.
已经上传成功了
技术图片

在upload目录下看到的7.php其实是不带.的原因是在windows中的特性,把点取消了

  1. 后缀加::$DATA绕过
    技术图片

在前面的代码基础上增加了 首尾去空,那么加空格绕过就不行了
技术图片

:??”DATA”
Windows特性,把后面的当作Io流了
上传成功

9.利用. .绕过
点空格点
技术图片

比如上传一个.php. .
那么第一步去这个名字,然后删除文件名末尾的点 变成”.php. “
然后函数strrchr 再去第一次出现的点,最后变成php点空格
然后在转为小写,然后在去字符串,变成php点空格,没影响,再首尾去空
又变成php.
变成了和上面一样的后缀加点的绕过方式。

10.利用双写php绕过
技术图片
技术图片

11.GET %00截断绕过
技术图片

想要成功这个需要一个小条件,一般会在拿到php版本的时候去测试
要先判断下save_path后面的上传路径是否可控
1.PHP 版本 < 5.3.4
2.php.ini 中 magic_quotes_gpc=off
满足上面的条件的时候php就是把%00当成结束符,后面的数据直接忽略
save_path可控,因此00截断即可。利用save_path=../upload/11.php%00

12.POST 00截断
技术图片
改成加号的原因是+号在hex中是2b方便找到
技术图片
技术图片

改好就是这样的
其实这个content-type改不改是无所谓的,这个代码和11的区别就是get形和post的区别,GET请求中%00会被当做url解析最后成空,而在post请求中,他会把这个当作是字符串去执行。

13.图片马配合文件包含漏洞
先解读下代码的意思
技术图片
技术图片
技术图片
然后这个要去通过文件包含漏洞去利用
技术图片

先传一个gif
在通过文件包含去访问gif
http://192.168.1.4/upload-labs/include.php?file=/upload/1820200215212531.gif
技术图片

使用菜刀成功连接
14.图片马配合文件包含2
这个上传绕过的方式和前面13的是一样的,有区别的地方是后端代码的不一样
技术图片
这个后面上传的是一样的
技术图片

上面的判断逻辑是这样的

15 exif_imagetype图片马绕过
方法和前面两个一样,唯一与众不同的就是上传的方式,用的是exif_imagetype的方式
技术图片

这个开启php的php_exif模块
技术图片

16图像二次渲染绕过
技术图片

上传的方式是一样的,但是代码区别很大

二次渲染之后,图片是被替换了的,可以看到这里用到了imagecreatefromjpeg
这个函数把你上传的图片二次渲染后生成新的图片,用winhex打开,可以看到图片的代码是不一样的,有一部分是没变的,另外一部分的代码是被改变了的,要把Php一句话写入到没改变的代码中,用winhex。
然后判断二次渲染中的图片内容中是否含有Php代码。

17.条件竞争
技术图片

这样可能会出现条件竞争,比如在程序还没运行完,我们就先访问到了他在校验文件后缀是否合法的那个文件。

	import requests  
	url = "http://127.0.0.1/upload-labs/upload/test.php"  
	while True:  
	    html = requests.get(url)  
	    if html.status_code == 200:  
	        print("OK")  
	        break  

通过Burp不断发提交一句话木马的请求
这里可以通过Python脚本来实现不断访问Php马的页面

18.条件竞争 2
日了 ,有点小坑
技术图片

他这个upload路径没加/ 导致都传到根目录去了
直接上传图片马就行

代码写在前面了,先校验后缀,所以我们要先上传图片马,然后在对其条件竞争,可以通过上传.php.jpg的文件,条件竞争后,后有没被更改名字的,这个时候通过apahce的解析漏洞去找php.jpg的文件即可拿到shell

19.move_uploaded_file()
技术图片

知道了大致内容再去看下代码分析下
技术图片
技术图片
技术图片

Jpg要改成Php
然后上面那个加个gif头
技术图片

通过这样的方式也可以













































































以上是关于代码审计upload-labs上传漏洞靶场的主要内容,如果未能解决你的问题,请参考以下文章

web安全基础-文件上传(含部分upload-labs靶场通关)

Upload-Labs靶场 1-21全通关教程

安全-Pass02之MIME绕过(upload-labs)

实际操作文件上传漏洞-upload-labs

安全-Pass14之文件头绕过(upload-labs)

安全-Pass15之图片马绕过(upload-labs)