凤翔网站建设,农村建设自己的网站首页,企业推广,吉林做网站优化寻找测试网站的文件上传的模块#xff0c;常见#xff1a;头像上传#xff0c;修改上传#xff0c;文件编辑器中文件上传#xff0c;图片上传、媒体上传等#xff0c;通过抓包上传恶意的文件进行测试#xff0c;上传后缀名 asp php aspx 等的动态语言脚本#xff0c;查…
寻找测试网站的文件上传的模块常见头像上传修改上传文件编辑器中文件上传图片上传、媒体上传等通过抓包上传恶意的文件进行测试上传后缀名 asp php aspx 等的动态语言脚本查看上传时的返回信息判断是否能直接上传如果不能直接上传再进行测试上传突破例如上传文件的时候只允许图片格式的后缀但是修改文件时却没有限制后缀名图片文件可以修改成动态语言格式如php则可能访问这个文件的 URL 直接 getshell可以控制网站
# 首先我们创建一个木马程序让它作为文件进行上传达到我们目的Pass-01绕过前端js检测
# 本题先查看网页源码把检测js的内容删掉然后直接上传1.php# 访问图片的页面通关Pass-02(绕过contnet-type)
# 有些上传模块会对 http 的类型头进行检测如果是图片类型允许上传文件到服务器否则返回上传失败。因为服务端是通过 content-type 判断类型content-type 在客户端可被修改。则此文件上传也有可能被绕过的风险
# 所以这道题需要我们抓包然后查看contnet-type的类型# 发现后缀名要求是jpeg格式所以我们插入的格式为1.jpg然后我们在客户端抓包后再改成1.php# 修改好后放包访问文件路径成功Pass-03(绕过黑名单上传)
# 上传模块有时候会写成黑名单限制在上传文件的时获取后缀名再把后缀名与程序中黑名单进行检测 如果后缀名在黑名单的列表内文件将禁止文件上传
# 本题我们发现提示不允许上传asp,aspx.php,jsp后缀名的文件# 因此我们就需要把它的格式替换成其他格式的后缀也能在其中执行的php后缀名
上传目标中间件可支持的环境的语言脚本即可如.phtml、php3、php5Pass-04(htaccess 重写解析绕过上传)
# 上传模块黑名单过滤了所有的能执行的后缀名,如果允许上传.htaccess .htaccess 文件的作用是可以帮我们实现包括文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP 地址的用户、只允许特定 IP 地址的用户、禁止目录列表以及使用其他文件作为 index 文件等一些功能在 htaccess 里写入 SetHandler application/x-httpd-php 则可以文件重写成 php 文件。要 htaccess 的规则生效 则需要在 apache 开启 rewrite 重写模块因为 apache 是多数都开启这个模块所以规则一般都生效FilesMatch jpg
SetHandler application/x-httpd-php
/FilesMatch# 它将所有的.jpg文件解析为.php 然后访问1.jpg即可获取Pass-05(大小写绕过上传)
# 获取文件后缀名进行判断如果后缀在这个字典里就禁止上传。
$deny_ext array(.php,.php5,.php4,.php3,.php2,.html,.htm,.phtml,.pht,.pHp,.pHp5,.pHp4,.pHp3,.pHp2,.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,.ini);# 因此我们要用没有被过滤掉的文件名字# 发现1.php可以所以给它用大小写来绕过最后得出结果Pass-06(利用 windows 系统特征空格绕过上传)
# 由于在windpws系统中可以通过空格和点来表示空白# 所以我们用空格来做此题最后发现执行成功Pass-07(利用 windows 系统特征点绕过上传)
# 同Pass-06题一样不过这道题是使用点来进行绕过# 所以我们只需要抓包在输入的地方多加点就可以了Pass-08(::$DATA绕过上传)
- Windows本地文件系统中的文件流(File Streams)
- 当从 Windows shell 命令行指定创建文件时流的完整名称为 filename:stream name:stream type如示例中所示 myfile.txt:stream1:$DATA# 上面都是一些黑名单被绕过的如果黑名单上传检测后没有限定后缀名绕过的方法很多与黑名单相对的就是白名单使用白名单验证会相对比较安全因为只允许指定的文件后缀名。但是如果有可控的参数目录也存在被绕过的风险# 如果后缀名没有对::$DATA 进行判断利用 windows 系统 NTFS 特征可以绕过上传 # burpsuite 抓包修改后缀名为 .php::$DATA ;Pass-09(点空格点绕过上传)
# 本题是需要我们用点空格点来进行绕过# 直接抓包后在后面输入. . 即可Pass-10(双写后缀绕过上传)
# 在上传模块有的代码会把黑名单的后缀名替换成空例如 a.php 会把 php 替换成空但是可以使用双写绕过例如 asaspppphphp即可绕过上传
如下图就可以发现# 所以我们就可以用双绕过来解答此题
只需要在输入的1.php后来个双绕过直接拿下Pass-11(目录可控%00 截断绕过上传GET)
# 上面都是一些黑名单被绕过的如果黑名单上传检测后没有限定后缀名绕过的方法很多与黑名单相对的就是白名单使用白名单验证会相对比较安全因为只允许指定的文件后缀名。但是如果有可控的参数目录也存在被绕过的风险- 当 gpc 关闭的情况下可以用%00 对目录或者文件名进行截断
- php 版本小于 5.3.4 # 我们通过抓包来截断后面的内容
效果是1.php%00.1.jpg 变成 1.phpPass-12(目录可控%00 截断绕过上传POST)
# 此题和Pass-11是一样的 只不过一个是get一个是post# 我们抓包后在1.php后面用%00来截断完成此题Pass-13(文件头检测绕过)
# 有的文件上传上传时候会检测头文件不同的文件头文件也不尽相同。常见的文件上传图片头检测它检测图片是两个字节的长度如果不是图片的格式会禁止上传 # 制作图片一句话使用 copy 1.jpg/b123.php/a shell.jpg 将 php 文件附加在 jpg 图片上直接上传即可/b代表以二进制编码打开文件/a代表以ASCII码编码打开文件Pass-14(文件头检测绕过)
# 本题和Pass-15做法一样按步骤完成即可Pass-15(文件头检测绕过)
# pass-15和前面两道题也一样同样的步骤不再重复Pass-16(图片二次渲染检测绕过)
# 首先判断图片是否允许上传 jpgjpg 图片在二次渲染后与原图片差别不会太大。 所以二次渲染攻击最好用 gif 图片图片马# 将原图片上传下载渲染后的图片进行对比找相同处覆盖字符串填写一句话后门或者恶意指令Pass-17(条件竞争漏洞绕过)
# 在文件上传时如果逻辑不对会造成很大危害例如文件上传时用 move_uploaded_file 把上传的临时文件移动到指定目录接着再用 rename 文件,设置图片格式如果在 rename 之前move_uploaded_file 这个步骤 如果这个文件可被客户端访问这样我们也可以获取一个 webshell其实重是重点在于在多线程情况下就有可能出现还没处理完我们就访问了原文件这样就会导致被绕过防护。 # 首先我们改一个木马让它的效果明显一点
/cmd.php
?php fputs(fopen(123.php,w),?php phpinfo();?);?然后和前面的步骤一样让他生成一个图片马上传文件用burp抓包设置无限发送空的payloads线程调高一点 # # python脚本访问我们上传文件
import requests
while True:
html requests.get(http://192.168.0.216/upload/11.php)
if html.status_code 200:
print(OK)
breakPass-18(条件竞争漏洞绕过二) # 从源码来看的话对文件后缀名做了白名单判断然后会一步一步检查文件大小、文件是否存在等等将文件上传后对文件重新命名同样存在条件竞争的漏洞。可以不断利用burp发送上传图片马的数据包因为move在rename之前move操作进行了一次文件保存然后rename进行了一次更改文件名由于条件竞争程序会出现来不及rename的问题从而上传成功。本题和上一个题差不多不过是增加了Apache的解析识别漏洞 后缀冗余
# 我们需要搞一个运行请求的python的脚本
#requests_2.py
import requests
from threading import Thread
url http://192.168.0.216/upload/cmd.php.7z
url_2 http://192.168.0.216/upload/123.php
def request():
global html
global html_2
html requests.get(url)
print(html.status_code)
html_2 requests.get(url_2)
while True:
t Thread(targetrequest())
t.start()
if html_2.status_code 200:
print(123.php已生成)
break# 因此我们可以利用Apache的漏洞将webshell改为1.php.7z
//.7z在Apache的白名单中无法识别所以利用我们直接和上一题一样快速发包实现条件竞争Pass-19文件名可控绕过上传 文件上传时,文件名可被客户端修改控制,会导致漏洞产生本题也需要将php版本小于5.3.4才行 # 上传文件,文件马采用%00 截断抓包解码Pass-20数组绕过上传
# 有的文件上传如果支持数组上传或者数组命名。如果逻辑写的有问题会造成安全隐患导致不可预期的上传。这种上传攻击它是属于攻击者白盒审计后发现的漏洞居多 # 我们通过抓包然后操作以下步骤
修改content-type
2.修改POST参数为数组类型索引[0]为upload-20.php索引[2]为jpg|png|gif。
3.只要第二个索引不为1$file[count($file) - 1]就等价于$file[2-1]值为空。# 我们需要为upload-20.php复制一个数组然后完成文件上传发现图片马也成功了好小子离成功又近一步