整理一些特殊文件导致的利用方式:
- robots.txt
- .swp
- .DS_Store
- .user.ini
- .htaccess
- .git
- phps
robots.txt #
robots.txt 是一个放置在网站根目录下的文本文件,它用于告诉搜索引爬虫哪些页面可以抓取,哪些不可以。限制不是强制的,一些爬虫可能会忽视这些规则。
User-agent: Googlebot
Disallow: /private/
Allow: /public/
User-agent: Baiduspider
Disallow:
User-agent: *
Disallow: /
Disallow
规则的优先级高于 Allow
,以上例子指示:
Googlebot
不允许抓取/private/
目录下的任何内容,允许抓取/public/
目录下的所有内容Baiduspider
可以抓取网站上的所有内容- 对于不是
Googlebot
或Baiduspider
的所有其他爬虫,禁止它们访问网站的任何部分
robots.txt 在 ctf web题目中的作用是提供目录扫描工具扫描不到的网站路径
.swp #
.swp
文件是 Vim 在编辑时自动生成的临时交换文件
主要用途如下:
- 防止文件冲突:如果尝试打开一个已经在编辑中的文件,Vim 会警告该文件已经被打开,并显示 .swp 文件的存在,用于提示可能的文件冲突
- 数据恢复:当编辑一个文件时,如果 Vim 意外关闭(比如电脑突然断电或关掉terminal),.swp 文件可以用来恢复之前的更改
.swp
文件在 ctf web题目中的作用是提供swp文件,使用vi -r xxx
,从.xxx.swp
还原出xxx
文件内容
.DS_Store #
.DS_Store
macOS 的桌面服务(Desktop Services)创建,用于保存关于文件夹的视图设置和其他元数据,使得 Finder
(类似windows文件管理器) 可以记住不同文件夹的显示属性,例如窗口位置、图标视图或列表视图等。
Python-dsstore,是一款Python语言写的 .DS_Store
文件解析器,从 .DS_Store
文件可以获取目录下涉及的文件的清单
如,当给一个文件添加备注时,会触发当前目录下.DS_Store
的修改,并不是目录下所有文件都会反映在.DS_Store
文件中
.DS_Store
文件在 ctf web题目中的作用是提供当前目录下的文件名信息,进而通过文件名作为url进行访问
.user.ini #
.user.ini
比.htaccess
用的更广,不管是nginx/apache/IIS,只要是Server API 为CGI/FastCGI
运行的php都可以用这个方法。
.user.ini
文件提供了一种便捷的方法来调整特定目录下的 PHP 行为,如下指定脚本最大可使用的内存量和脚本执行的最大时间(秒):
memory_limit = 256M
max_execution_time = 180
但其作用范围限制在包含该文件的目录及其子目录中,且文件创建后立即生效。这使得用户能够对执行环境进行细粒度的控制,而不会影响到主机上的其他用户或应用。
.user.ini
文件在 ctf web题目中的作用是搭配文件上传:
- 上传
.user.ini
文件auto_prepend_file = "a.jpg"
- 上传
a.jpg
为一句话木马这样设置后,每次执行当前目录及其子目录下的任何 PHP 脚本前,都会自动加载
a.jpg
一句话木马,使得木马生效。当然大部分文件会上传到特定的
upload
目录之内,还需要有一个利用条件:upload
目录存在类似index.php
脚本,且在web服务器的纳官范围之内
.htaccess #
.htaccess(Hypertext Access)
文件是一个非常强大的配置文件,用于管理 Apache Web 服务器上的目录级别设置。
通常在 Apache 的主配置文件 httpd.conf
或目录级的配置文件如 apache2.conf
中设置:
<Directory /var/www/html>
AllowOverride All
# 或者更具体地:
AllowOverride FileInfo Options # 允许使用文件相关的指令如重写规则(mod_rewrite)和一些选项设置
</Directory>
确保 Apache 已经加载了 URL 重写模块 mod_rewrite
:
LoadModule rewrite_module modules/mod_rewrite.so
一些例子如下:
- 重写规则:这条规则将所有访问
oldpage.html
的请求永久重定向到newpage.html
RewriteEngine On
RewriteRule ^oldpage\.html$ newpage.html [R=301,L]
- 密码保护目录:设置了对目录的基本认证,密码存储在服务器上的
.htpasswd
文件中
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /path/to/.htpasswd
Require valid-user
- 自定义错误页面:尝试访问不存在的页面时,将显示
notfound.html
ErrorDocument 404 /notfound.html
- 防止特定文件类型被访问:阻止用户直接通过浏览器访问
.env
或.config
文件
<Files ~ "\.(env|config)$">
Order allow,deny
Deny from all
</Files>
.htaccess
在 ctf web 题中搭配文件上传的利用方式有以下几种:
- 如上传
.jpg
内容为一句话木马,将.jpg
后缀的文件当作 php 文件执行(默认情况下.jpg
不会被视为代码执行)<FilesMatch "jpg"> SetHandler application/x-httpd-php </FilesMatch> # 或者 AddType application/x-httpd-php .jpg
- 文件包含:使作用范围内的php文件在文件尾include指定文件
php_value auto_append_file /etc/passwd php_value auto_append_file master://search/path=%2fhome%2f&name=flag php_value auto_append_file "php://filter/convert.base64-decode/resource=mn.ppt"
.git #
git仓库目录,用于git记录代码改动等
dvcs-ripper,是一款Perl语言写的,可以对Git、Subversion (SVN) 和 Mercurial (Hg)等常⻅版本控制系统进行信息泄漏利用的工具
rip-git.pl -v -u http://www.example.com/.git/
上述命令会自动还原git工作目录,即显示源代码内容,进而对代码进行审计,SVN/Hg同理
ctf web 题目一般在目录扫描扫描出.git
后使用
phps #
.phps
扩展名通常用来指示 PHP 源代码文件,这种文件被用于在浏览器中直接显示其内容的源代码,而不是像php
展示执行代码后的输出
以下httpd.conf
配置说明.phps
文件应当被当作 PHP 源代码文件处理,使用 PHP 的语法高亮功能
AddType application/x-httpd-php-source .phps
ctf web 题目一般在有特定提示或者无其他任何其他提示下访问xxx.phps
,尝试获取源码后进行代码审计