1. 程式人生 > >CTF-web Linux中幾個關鍵的檔案

CTF-web Linux中幾個關鍵的檔案

有些時候,我們遇到可以檔案包含讀取linux檔案的題目,在flag不在根目錄,不在標準目錄,需要我們去找的時候,有些檔案就顯得比較有意義。通過讀取系統的這些關鍵檔案,我們可以找到蛛絲馬跡,從而找到flag的藏身之地,當然,最關鍵的是,我們需要知道linux中有哪些比較關鍵的,有用的檔案。

下圖是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