代码审计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头

通过这样的方式也可以

posted @ 2020-05-30 18:45  A4m1n  阅读(347)  评论(0编辑  收藏  举报