CTF-web Linux中几个关键的文件

时间:2024-03-13 13:35:23

有些时候,我们遇到可以文件包含读取linux文件的题目,在flag不在根目录,不在标准目录,需要我们去找的时候,有些文件就显得比较有意义。通过读取系统的这些关键文件,我们可以找到蛛丝马迹,从而找到flag的藏身之地,当然,最关键的是,我们需要知道linux中有哪些比较关键的,有用的文件。

下图是linux的根目录,分为需要的根文件夹。

 

CTF-web Linux中几个关键的文件

        bin:全称binary,含义是二进制。该目录中村塾的都是一些二进制文件,文件都是可以被运行的。

           dev:该目录中主要存放的是外接设备,如键盘,U盘等。但是这些设备不能直接使用,需要挂载(分配盘符)。

           etc:该目录主要存储一些配置文件。

           home:表示“家”,即存储了除了root用户以外的所有用户的文件,类似于windows下的当前用户目录。

           proc:process,表示进程,该目录存储的是linux运行时的进程。

           root:该目录存储的是root用户下的所有文件目录。

           sbin:全称super binary,该目录也是存储二进制文件,但是必须是有super权限的用户才可以执行。

           tmp:当系统运行时会产生临时文件,该目录就是用来存储临时文件的。

           usr:用于存放用户自己安装的软件。类似于windows吓得program files。

           var:该目录存放程序或系统的日志文件。

           mnt:当外接设备需要挂载的时候,就将设备挂载到mnt文件中。

上述的是linux中的根目录文件夹,我们接下来要说的才是那些单个的 比较重要的文件

/etc/passwd 用户 密码 shell等信息

其中包含了系统中的用户信息,我们可以观察到系统中安装了哪些我们可能需要注意的软件,比如安装了mysql或者是apache等

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
libuuid:x:100:101::/var/lib/libuuid:
syslog:x:101:104::/home/syslog:/bin/false
messagebus:x:102:106::/var/run/dbus:/bin/false
usbmux:x:103:46:usbmux daemon,,,:/home/usbmux:/bin/false
dnsmasq:x:104:65534:dnsmasq,,,:/var/lib/misc:/bin/false
avahi-autoipd:x:105:113:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
kernoops:x:106:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
rtkit:x:107:114:RealtimeKit,,,:/proc:/bin/false
saned:x:108:115::/home/saned:/bin/false
whoopsie:x:109:116::/nonexistent:/bin/false
speech-dispatcher:x:110:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
avahi:x:111:117:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
lightdm:x:112:118:Light Display Manager:/var/lib/lightdm:/bin/false
colord:x:113:121:colord colour management daemon,,,:/var/lib/colord:/bin/false
hplip:x:114:7:HPLIP system user,,,:/var/run/hplip:/bin/false
pulse:x:115:122:PulseAudio daemon,,,:/var/run/pulse:/bin/false
yaofei:x:1000:1000:ubuntu14.04,,,:/home/yaofei:/bin/bash
sshd:x:116:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:117:125:MySQL Server,,,:/nonexistent:/bin/false

 这个文件的内容非常规律,每行代表一个用户。大家可能会比较惊讶,Linux 系统中默认怎么会有这么多的用户啊!这些用户中的绝大多数是系统或服务正常运行所必需的用户,我们把这种用户称为系统用户或伪用户。系统用户是不能登录系统的,但是这些用户同样也不能被删除,因为一旦删除,依赖这些用户运行的服务或程序就不能正常执行,会导致系统问题。

        从文件中我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下: 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

        用户名(login_name):是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

        口令(passwd):一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

        用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

        组标识号(GID):字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

注释性描述(users):字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。

        主目录(home_directory):也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

        登录Shell(Shell):用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。

 

/etc/host,主机名和IP配置文件

 Hosts - The static table lookup for host name(主机名查询静态表)

  hosts文件是Linux系统中一个负责IP地址与域名快速解析的文件,以ASCII格式保存在“/etc”目录下,

文件名为“hosts”(不同的linux版本,这个配置文件也可能不同。比如Debian的对应文件是/etc/hostname)。

hosts文件包含了IP地址和主机名之间的映射,还包括主机名的别名。在没有域名服务器的情况下,

系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址,否则就需要使用DNS服务程序来解决。

通常可以将常用的域名和IP地址映射加入到hosts文件中,实现快速方便的访问。

        这个文件会让你看到在该计算机的网络中,是否包含内部的局域网,因为解析的需要,里面会包含在内网中的主机的IP和对应的计算机名字,我们可以通过ssrf的file协议等来判断ip与对应的计算机。

127.0.0.1 localhost.localdomain localhost 
192.168.1.100 linmu100.com linmu100 
192.168.1.120 ftpserver ftp120 

一般情况下hosts文件的每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号开头的行做说明,不被系统解释。
hosts文件的格式如下:
IP地址 主机名/域名 
第一部份:网络IP地址;
第二部份:主机名或域名;
第三部份:主机名别名;

在题目中,我们可以用来判断在局域网内是否还有其他主机,适用于ssrf题目等

apache配置文件 网站配置

在linux中,通过apache搭建一个网站,而该服务存在一些配置文件,用来对网站的根目录,日志设置等进行配置。在默认的情况下

1、采用RPM包安装:

默认情况下目录/usr 用来存放应用程序;/etc/apache

目录/etc 存放软件的配置文件:/etc/httpd/conf/httpd.conf

2、采用源代码安装:

默认在/usr/local下;/usr/local/apache

配置文件 /usr/local/apache/conf/httpd.conf

{这是偶然看到的 没有验证 即说明apache的目录可能是apache apache2 需要视安装环境等而定。在 Ubnutu 上,apache 服务叫 apache2,而不是 httpd(在 Centos 上叫 httpd),主配置文件为 /etc/apache2/apache2.conf}

下面的几个是关键的配置
/etc/httpd/是Apache服务器的根目录 
/etc/httpd/conf/httpd.conf是Apache服务器的主配置文件,其中包含指定文档root的配置 
/var/www/html/是Apache服务器的文档根目录  这也就是我们网站的常用的默认根目录
/etc/init.d/httpd是Apache服务器启动脚本文件 
/var/log/httpd/access_log是Apache服务器的访问日志文件 
/var/log/httpd/error_log是Apache服务器的错误日志文件 

下面的是目录的组成 Bin目录中包括了

Apache服务器运行和管理所需的执行程序,其中httpd是服务器的执行程序,apachectl是服务器的启动脚本 

Lib目录中保存了Apache服务器运行所需的库文件 

Conf目录用于保存Apache服务器的配置文件,其中httpd.conf是Apache服务器的主配置文件 Htdocs目录是Apache服务器的文档根目录,该目录将作为Web服务器的根目录 

Manual目录中保存了Apache服务器的帮助手册文件,文件是网页格式的,可以通过访问Apache服务器中的/manual目录阅读该目录下的帮助文件内容 

Man目录用于保存Apache服务器手册页文件,文件被分别保存在man1和man8两个子目录中,可用man命令阅读指定的手册页文件查询目录的帮助信息 

Logs目录是用于保存Apache服务器的日志文件

access_log文件是访问日志文件

error_log文件是错误日志文件

下面的是啊apache的说明文件,给我们提示了几个关键的目录和文件

Ubuntu Logo Apache2 Ubuntu Default Page
It works!
This is the default welcome page used to test the correct operation of the Apache2 server after installation on Ubuntu systems. It is based on the equivalent page on Debian, from which the Ubuntu Apache packaging is derived. If you can read this page, it means that the Apache HTTP server installed at this site is working properly. You should replace this file (located at /var/www/html/index.html) before continuing to operate your HTTP server.
If you are a normal user of this web site and don't know what this page is about, this probably means that the site is currently unavailable due to maintenance. If the problem persists, please contact the site's administrator.
Configuration Overview
Ubuntu's Apache2 default configuration is different from the upstream default configuration, and split into several files optimized for interaction with Ubuntu tools. The configuration system is fully documented in /usr/share/doc/apache2/README.Debian.gz. Refer to this for the full documentation. Documentation for the web server itself can be found by accessing the manual if the apache2-doc package was installed on this server.
The configuration layout for an Apache2 web server installation on Ubuntu systems is as follows:
/etc/apache2/
|-- apache2.conf
|  `-- ports.conf
|-- mods-enabled
|  |-- *.load
|  `-- *.conf
|-- conf-enabled
|  `-- *.conf
|-- sites-enabled
|  `-- *.conf

上述配置文件夹都有连接符号 例如000-default.conf -> ../sites-available/000-default.conf 所以不要在意下面的文件夹的名字

指明了apache的配置在apache2.conf中 

 

apache虚拟站点的配置根目录文件在 /etc/apache2/sites-available/000-default.conf 默认文档位置 var/www/html,这其中可能会有一些关键的信息。

 

默认主页的配置在 /etc/apache2/mods-available/dir.conf 

可以为如下格式:index.html  index.cgi  index.pl  index.php index.xhtml index.htm  可以修改为 ***.html等

 

php.ini php配置文件

一般Apache安装php后,php配置文件默认加载位置在php/lib/文件夹下

可能的位置大概有:

如果采用RPM包安装,安装路径应在 /etc/ 目录下

PHP的配置文件:/etc/php.ini

如果采用源代码安装,一般默认安装在 /usr/local/lib 目录下

PHP配置文件: /usr/local/lib/php.ini 或/usr/local/php/lib/php.ini 

或 /usr/local/php/etc/php.ini  或 /usr/local/apache2/conf/php.ini等

 

参考文章

https://blog.csdn.net/yaofeino1/article/details/54616440 

https://blog.csdn.net/qq_40672748/article/details/81844173 

https://www.cnblogs.com/rinack/p/6861893.html

https://blog.csdn.net/qq_35873847/article/details/78841554 

https://www.cnblogs.com/52php/p/5668826.html

https://www.jb51.net/article/113286.htm