Apache中.htaccess文件利用的總結與新思路拓展

 

Apache調用解析器的三種方式

在廣泛使用的LAMP架構中,Apache與PHP之間的交互,有三種常見的方式。php

第一種是最通用最多見的Module方式,即在httpd.conf中使用LoadModule的方式,將php的dll或者so文件加載到apache當中。css

還有兩種是CGI方式和FastCGI方式。其實後者用的愈來愈普遍了。通常PHP-FPM也是與FastCGI進行配合使用的。html

能夠參考CGI、FastCGI和PHP-FPM關係圖解Apache下PHP的幾種工做方式來了解更多。python

CGI啓動方式的RCE利用姿式

當咱們瞭解原理後,Apache是須要調用第三方CGI程序,可是一個程序是否是CGI程序這個事很難界定,咱們可否經過調用特定的CGI程序(普通程序)來執行任意系統命令呢。答案是能夠的。linux

利用條件

1.保證htaccess會被解析,即當前目錄中配置了`AllowOverride all或AllowOverride Options FileInfo。AllowOverride參數具體做用可參考Apache之AllowOverride參數詳解。(Require all granted也是須要的)nginx

2.cgi_module被加載。即apache配置文件中有LoadModule cgi_module modules/mod_cgi.so這麼一句且沒有被註釋。web

3.有目錄的上傳、寫入權限。apache

利用姿式

上傳.htaccess 文件, 內容以下:bash

Options ExecCGI
AddHandler cgi-script .xx

Options ExecCGI表示容許CGI執行,若是AllowOverride只有FileInfo權限且自己就開啓了ExecCGI的話,就能夠不須要這句話了。網絡

第二句告訴Apache將xx後綴名的文件,當作CGI程序進行解析。

接下來,以Windows平臺爲例,上傳poc.xx文件,內容以下:

#!C:/Windows/System32/cmd.exe /c start calc.exe
1

第一行用來表示CGI程序的路徑。能夠隨便開你的腦洞。

由於CGI程序處理完成後,會被Apache關閉,因此咱們這裏要用啓動新進程的方式來啓動。

結果

這時訪問poc.xx。計算器就出來啦~~

拿火絨劍來看下~

image.png

一目瞭然,讀取了兩個文件後,httpd.exe的mod_cgi.so模塊執行了咱們的命令。

linux環境下,也是隨你玩,是直接調用/bin/bash仍是調用/usr/bin/python來反彈Shell。都是能夠的。這其實也就是正常使用方式,由於Python也會被用做爲CGI解析程序。

FastCGI啓動方式的RCE利用姿式

咱們再來看看FastCGI模式的,這個依賴的是mod_fcgid.so,默認安裝包裏甚至沒有這個so文件,不過在PHPStudy的默認配置中,就已是加載了的,而且AllowOverride也是All權限,手動斜眼。

其實還有mod_proxy_fcgi,更爲常見,也是默認開啓的,還不清楚可否利用,表哥表姐們能夠嘗試一下。

利用條件

1.AllowOverride all或AllowOverride Options FileInfo。

2.mod_fcgid.so被加載。即apache配置文件中有LoadModule fcgid_module modules/mod_fcgid.so

3. 有目錄的上傳、寫入權限。

利用姿式

上傳.htaccess 文件, 內容以下:

Options +ExecCGI
AddHandler fcgid-script .abc
FcgidWrapper "C:/Windows/System32/cmd.exe /c start cmd.exe" .abc

老樣子,若是默認就開啓了ExecCGI,則第一句能夠省略。

第二句表示,abc後綴名的文件須要被fcgi來解析。AddHandler還能夠換成AddType。

再上傳1.abc。內容無所謂。

結果

訪問1.abc,計算器就出來了~再拿火絨劍看下。

image.png

PS:若擁有上傳權限,以上兩種利用方式,在PHPstudy默認配置當中,都是能夠直接使用的。

使用相對路徑

其實一些小夥伴也已經發現了,上面的問題再配合有上傳漏洞,我甚至能夠穿個立刻去。可是不管是CGI仍是FastCGI彷佛都是絕對路徑,相對路徑可不能夠呢?

通過了一些嘗試,並請教了」褲衩哥」,發現相對路徑也是能夠的,起始點彷佛和session.save_path變量的值是一致的。如圖,好比phpstudy當中,起始點就是在\Extensions\tmp\tmp中。

image.png

那麼,好比說我想要html後綴使用php來解析。就能夠這樣寫。

AddHandler fcgid-script .html
FcgidWrapper "../../php/php7.3.4nts/php-cgi.exe" .html

再來,我想調用網站根目錄的calc.exe。能夠這樣。

AddHandler fcgid-script .xx
FcgidWrapper "../../../WWW/localhost/calc.exe" .xx

不過計算器沒法正常彈出。23333 我猜應該是由於calc畢竟不是個標準CGI程序致使的吧。並且也不必繞這麼大個圈子,就沒繼續測試了。

其餘常規利用姿式

將特定文件做爲php解析,用做後門。

Module模式下寫法以下:

AddType application/x-httpd-php .jpg

<FilesMatch "test.jpg">
  SetHandler application/x-httpd-php
</FilesMatch>

甚至能夠將 .htaccess自己做爲php來解析,裏面編寫一句話。這塊網絡上相關資料不少。

PHP環境下使用 auto_prepend_file 或 auto_append_file 建立後門

經過配置auto_append_file或auto_prepend_file能夠向全部php文件中的開頭或尾部插入指定的文件的內容。

在. htaccess中的寫入以下:

php_value auto_prepend_file "/home/fdipzone/header.php"
php_value auto_append_file "/home/fdipzone/footer.php"

對於CGI/FastCGI模式 PHP 5.3.0 以上版本,還可使用 在目錄下建立.user.ini文件 。來引入該參數。寫法以下:

auto_prepend_file = 123.gif
相關文章
相關標籤/搜索