日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php项目私有化部署保护代码,ThinkPHP项目安全配置解决方案

發布時間:2023/12/2 php 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php项目私有化部署保护代码,ThinkPHP项目安全配置解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

ThinkPHP MVC框架越來被開發者接受,眾多的開發者選擇了這個框架,也有很多的優秀項目使用的ThinkPHP框架。最近整理了一下ThinkPHP項目的一些安全配置。可能并不適用全部項目,大家可以適當的使用如下的安全配置。

前置知識:

web容器和各類組件的版本,這里使用的LNMP 的架構:Nginx1.19 Mysql 5.6 PHP7.4 Centos8.2,這里推薦是PHP的版本7.4

一、ThinkPHP常見的被入侵方式

ThinkPHP RCE

案例分享:

在某些ThinkPhp版本中只有開啟了Debug才會導致命令執行的出現,例如拿ThinkPhp5.1.14舉例

獲取網站的絕對路徑等等敏感信息

開啟了Debug,執行exp

2、通過log日志獲取網站權限

智宇發卡網舉例

此發卡網是可以訪問runtime目錄的,給大家看看目錄

他入口文件和runtime目錄在同一個目錄里面,他也沒設置其他東西,所以可以直接訪問runtime目錄

然后根據runtime目錄的日志存儲的格式runtime/log/年份月份/日.log來存儲的,所以得到runtime/log/202007/22.log來獲取網站日志,在遍歷日志的時候在18號發現了管理員賬號密碼

通過后臺登錄賬號密碼,通過代碼審計發現存在一個比較雞肋的Rce

利用條件

可以開啟日志,或者支持into outfile

GetShell

1

在審計的時候發現了數據庫可以指定其他文件進行數據庫恢復(恢復數據相當于執行SQL語句),下面是利用步驟

1.下載網站備份文件

2.修改SQL語句,添加漏洞利用代碼

3.在文件存儲處添加.sql的后綴,然后在上傳文件的地方上傳.sql文件

4.然后在恢復數據的時候指定這個.sql文件達到寫shell的目的

備份數據庫

下載后修改備份文件并修改文件

漏洞利用代碼(路徑自己設置,后面的注釋不可以刪除)

SET GLOBAL general_log = 'ON';SET GLOBAL general_log_file = 'C:\\wwwroot\\192.168.2.128\\wwwa.php';select '<?php eval($_POST[0]);?>';SET GLOBAL general_log_file = 'C:\\Temp\\a.txt';

文件存儲添加.sql后綴

上傳剛剛修改的.sql文件,例如此處

在點擊上傳圖片的時候,先抓包,添加一個.sql后綴的文件

然后上傳剛剛修改的sql文件,可以得到上傳的路徑

恢復數據GetShell

恢復成功后訪問網站的wwwa.php,密碼是0

另外一個命令執行漏

由于thinkphp框架開發,他存在Thinkphp的Rce漏洞,但是由于路由設置的原因,在進行Rce的時候他每次請求都會帶有路由的子域名參數,例如

可以看見他會帶著當前的域名或者ip先傳入該參數進行執行,所以導致很多函數無法使用,所以大部分函數無法使用,不過還是找到了system這個函數進行命令執行

??????????

二、思考如何防御???

2.1配置防御log目錄泄露

runtime目錄下的文件是ThinkPhp運行時產生的文件,里面包括了日志,緩存,等等的信息,如果可以訪問會導致如下危害:可以看見管理員和其他用戶的登錄日志,會記錄明文賬號和密碼在某些版本可以通過緩存來進行代碼執行

修復方法

偽靜態中添加

location ~* (runtime/|Application/)

{

return 403;

}

2.2?ThinkPHP安全入口限制

案例

https://www.bt.cn/bbs/thread-52183-1-1.html

修復方法

location ~ ^/index.php{

include enable-php-70.conf;

}

location ~* \.(php){

deny all;

}

2.3?使用Nginx防火墻

默認攔截日志防御和ThinkPHP?RCE攻擊

如下:

發起ThinkPHP RCE 請求被攔截

2.3 使用堡塔PHP安全防護

防跨站的危害性

作用

當服務器中有多個網站時這個設置就非常有用,如果服務器中的某個網站被攻擊了,可以避免其他網站也淪陷

案例

例如,如下服務器

當該服務器的的192.168.2.128站點被入侵的時候,如果沒有設置防跨站他是可以訪問其他的網站的內容的

如果設置了防跨站的話,是可以防止這種事情發生的

以看到訪問錯誤,不過單純使用open_basedir是有被繞過的風險,上傳一個帶有如下內容的php文件

訪問該php文件,可以成功獲取到/etc/passwd文件里面的內容

安裝堡塔php安全防護后,進行設置

具體使用說明

https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=49256&highlight=%E5%A0%A1%E5%A1%94php

開啟堡塔php安全防護后,已經成功攔截

2.4?使用企業級防篡改

thinkphp中默認是兩個目錄是存在寫入和刪除的。一個是緩存目錄cache 一個是上傳目錄upload(并不是全部都是通用的根據項目自身去寫規則)。這里我使用的是智宇發卡的程序來做的測試

智宇發卡這個程序就兩個目錄需要寫入和刪除。一個是runtime 目錄和/static/upload 這兩個目錄需要寫入。那么先把企業級防篡改的保護目錄全部清空

只留下這兩個目錄即可。測試一下效果

測試為:寫入不了文件

2.5?webshell防御–OpenRasp

webshell防御的話。這里使用的百度的Openrasp

具體的使用教程

https://www.bt.cn/bbs/thread-49371-1-1.html

直接安裝即可

測試效果如下:

使用方法,在該網站放了一個webshell

執行php代碼,被攔截

成功被攔截

三、ThinkPHP其他安全設置

3.1?關閉debug

在線上環境,開啟Debug模式會導致如下危害

泄露網站敏感信息

在Thinkphp5.0.24版本開啟Debug模式的時候,在特定情況下會導致mysql數據庫賬號密碼泄露

在某些Thinkphp版本要開啟Debug模式才會導致代碼執行漏洞

一般配置文件項目地址中的/application/config.php 文件中

3.2?設置日志輸出

日志文件他存儲在runtime/log/下面,上面也有講解案例和危害,如果我們可以輸出日志的內容就可以避免一些攻擊,一般的日志輸出會輸出大部分的敏感信息,就想上面一樣,登錄的賬號密碼都會被記錄,如果我們只輸出錯誤的信息,就可以避免上面的敏感信息泄露出去

修復方法

只輸出錯誤的日志

或者直接關閉日志的輸出

四、其他安全設置

1、服務器密碼和網站密碼全部分開

2、數據庫密碼和網站密碼。和FTP密碼全部獨立

3、密碼建議為md5的隨機強密碼這樣減少被爆破的風險

五、總結

Thinkphp的MVC的單一入口的解決方案可以解決掉很多的一些安全問題。但是還是需要配合一些安全產品來更多的安全風險

后續我們會持續更新更多的項目的安全策略。敬請期待

如果此文章對你有幫助請轉發至朋友圈中讓更多人能學習

總結

以上是生活随笔為你收集整理的php项目私有化部署保护代码,ThinkPHP项目安全配置解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。