亚洲国产精品人久久,亚洲va国产日韩欧美精品色婷婷,久久久久88色偷偷,免费人成黄页在线观看国际

17站長網

17站長網 首頁 安全 腳本攻防 查看內容

分享PHP場景中getshell防御思路

2022-9-27 08:54| 查看: 2546 |來源: 互聯網

1 背景概述 WEB應用漏洞導致的入侵時有發生,掃描器和WAF并不能解決所有的問題,于是嘗試在主機側針對PHP環境做了一個防御方案。很榮幸的邀請到TSRC部分白帽子做了一次對抗演習,本文主要分享一下防御思路。 防御

1 背景概述

WEB應用漏洞導致的入侵時有發生,掃描器和WAF并不能解決所有的問題,于是嘗試在主機側針對PHP環境做了一個防御方案。很榮幸的邀請到TSRC部分白帽子做了一次對抗演習,本文主要分享一下防御思路。

防御方案主要想解決的問題是getshell、主機敏感文件泄漏等問題。于是乎出了下面這樣一個題目:部署了防御方案的Nginx + PHP 的WEB環境,提供一個上傳入口,可上傳任意文件。找到WEB目錄下的一個flag文件讀取到內容即算突破。

2 PHP擴展

防御方案使用了PHP擴展來完成阻斷。PHP內核支持C/C++開發一些擴展功能,并且提供了一個框架 – ext_skel幫助生成基本的代碼簡化開發,由于PHP擴展并不涉及底層的資源管理,所以編寫一個PHP擴展和編寫一個C應用程序是一樣的。下圖展示了PHP擴展所處的結構層次,擴展位于PHP內核ZEND 和 PHP應用層代碼之間,那么利用PHP擴展可以:

1) 監控PHP應用層代碼的執行細節,包括執行CGI、函數名、參數等;

2) 調用PHP內核ZEND提供的API接口,包括禁用類、修改配置選項等。

PHP場景中getshell防御思路分享

圖1 PHP語言的結構

3 相關知識

3.1 HOOKPHP代碼

PHP是解釋型語言,代碼被翻譯為中間字節碼由ZEND引擎解析執行。PHP把中間字節碼稱之為OPCODE,每個OPCODE對應ZEND底層的一個處理函數,ZEND引擎最終執行這個處理函數。實現HOOK功能只需要改變HOOK OPCODE對應的處理函數即可,而ZEND預先就提供了一個現成的接口:zend_set_user_opcode_handler。防御方案只需要HOOK以下三個OPCODE:

ZEND_INCLUDE_OR_EVAL — eval、require等

ZEND_DO_FCALL — 函數執行system等

ZEND_DO_FCALL_BY_NAME — 變量函數執行 $func = “system”;$func();

舉例:

ZEND_DO_FCALL這個OPCODE對應的功能是函數調用,如果需要HOOK所有的函數調用:

1) 在模塊初始化函數中使用zend_set_user_opcode_handler修改ZEND_DO_FCALL新的處理函數為mysub:

PHP_MINIT_FUNCTION(phpips){

zend_set_user_opcode_handler(ZEND_DO_FCALL, mysub);

return SUCCESS;

}

2) 在自定義函數中實現自己需要的功能并返回原來的處理函數:

void mysub(){

自定義功能;

return ZEND_USER_OPCODE_DISPATCH;

}

3.2 ZEND接口

HOOK之外還需要獲取一些基本信息或功能,比如:

1) 獲取執行的PHP腳本名,可調用ZEND的接口zend_get_executed_filename:

char *cgi_name = (char*)zend_get_executed_filename(TSRMLS_C);

2) 禁用一些類庫,可使用zend_disable_class接口;

ZEND提供了很多豐富的接口,可根據需求選擇調用。

3.3 數據結構

PHP是弱類型語言,其上層并不區分變量類型,變量底層對應的是一個union結構體,以php-5.3.6版本舉例,結構體在Zend/zend.h文件中定義;內容如下:

typedef union _zvalue_value {

long lval; /* longvalue */

double dval; /* double value */

struct {

char *val;

int len;

} str;

HashTable *ht; /* hash table value*/

zend_object_value obj;

} zvalue_value;

PHP是在底層區分開了變量類型;在union結構體中有個非常重要的結構體HashTable,PHP中的數組結構就是利用HashTable這個結構體實現,如果變量是個數組,獲取變量內容需要遍歷這塊HashTable,數據結構這塊不做太多介紹。ZEND底層用zval這個結構體存儲變量,同時ZEND提供了幾個宏可以方便的轉換zval到具體的數據類型,比如把zval類型轉換為字符串 – zval el; Z_STRVAL_P(el),常用的還有:

Z_LVAL_P、Z_DVAL_P、Z_ARRVAL_P等,以上宏列表在 Zend/zend_operators.h有定義。

4 規則策略

4.1 基本思路

我們需要解決的問題是getshell、主機敏感文件泄漏等問題。如果限制住PHP腳本執行命令 和 翻閱文件的功能,就達到了目的。同時,由于讀取文件的接口非常多,使用場景也較多,因此采取禁用打開目錄接口來側面達到禁止翻閱文件的目的,不能遍歷目錄便無法得到文件名,可以有效的達到目標。故最終形成的最終策略如下:

1) 禁用掉執行命令的接口

2) 禁用掉打開目錄的接口

禁用函數有一些需要注意的問題:

1) PHP接口還是比較繁多復雜的,除了system、exec、opendir、scandir常用函數之外,一些生僻函數比如glob等函數都要考慮全面,另外還有一些回調函數、反射類(PS:部分考慮不全被blackeye和雪人繞過)

2) PHP SPL提供的一些類庫有文件管理的功能,也需要禁止,比如DirectoryIterator(不過好像沒有白帽子使用過SPL)

4.2 對抗變形

PHP使用assert或preg_replace /e執行代碼,調用zend_get_executed_filename獲取的PHP腳本名中會帶有辨別標識,assert對應的是assert code,preg_replace對應的是regexp code;當發現這些特殊的腳本執行了system等4.1中提高的高危函數直接阻斷。以下圖的nonalphanumeric -webshell舉例:

變形webshell解析后的形式和$_GET[1]($_GET[2])類似,比如傳入1=assert&2=system(whoami)執行代碼,PHP擴展層監控到system函數執行,并且發現PHP腳本名帶regexp code標識,清晰的知道是preg_replace的代碼執行了調用了system,阻斷system。Assert函數同理。總結:擴展并不關注在靜態層如何編碼運算或加密,擴展只監控最后的行為,所以可以很好的解決目前的變形難題。

1

圖2nonalphanumeric – webshell

4.3 減少誤殺

有時正常的PHP腳本也需要用到命令執行的功能,如何保證其正常運行,不被我們的防御策略阻斷呢?這里提供三種思路:

1) 寫入權限和執行命令權限互斥

考慮到入侵者利用上傳漏洞或者其他0DAY getshell得到的文件大多會有W寫權限,防御方往往希望阻止這部分文件擁有過高的權限。

那么,我們可以去除正常PHP腳本的可寫權限,然后只對有寫權限的PHP腳本實施命令執行等防御策略的阻斷邏輯。這樣即不會影響到業務的使用,又達到了預設場景的防護目標。不過這樣的思路,需要禁用chmod等可以修改文件權限的函數。

2) 使用白名單邏輯

粗暴一點的可以用文件名白名單,也就是業務報備過的文件不受阻斷,其它不認識的文件一律禁止。優雅一點的可以對函數參數做白名單,比如提取正常PHP腳本執行命令的參數或者代碼特征,對其進行放行,不認識的特征一律阻斷。

3) 使用黑名單邏輯

設定一些已知惡意腳本的黑特征參數,類似于殺毒軟件早期的特征碼思路。

上述思路在企業推廣時,需要和業務有足夠充分的配合,也都有不完美的地方,如果大家有更多方案或者思路,歡迎與我共同探討。

5 未來

利用PHP擴展可以做的事情還是比較多,比如在漏洞檢測方面、對數據庫函數參數過濾、阻斷SQL注入、阻斷存儲型XSS等場景都有非常大的想象空間。甚至在代碼審計這塊也可以考慮,國內有個大牛已經有比較成熟的開源產品,TAINT (作者:laruence),大家可能都已經比較熟悉了,就暫時不做贅述了。

行文比較倉促,有不足的地方請諒解,有任意疑問或建議歡迎聯系pandas(小毛驢)切磋交流。

本文最后更新于 2022-9-27 08:54,某些文章具有時效性,若有錯誤或已失效,請在網站留言或聯系站長:17tui@17tui.com
·END·
站長網微信號:w17tui,關注站長、創業、關注互聯網人 - 互聯網創業者營銷服務中心

免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!

17站長網微信二維碼

始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!

掃一掃,關注站長網微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        亚洲国产精品人久久,亚洲va国产日韩欧美精品色婷婷,久久久久88色偷偷,免费人成黄页在线观看国际
        丁香天五香天堂综合| 欧美刺激午夜性久久久久久久 | 久久一夜天堂av一区二区三区| 日本电影欧美片| 色婷婷综合久色| 欧美体内she精高潮| 欧美丝袜自拍制服另类| 欧美在线啊v一区| 欧美美女网站色| 亚洲精品一线二线三线无人区| 日韩精品一区二区三区swag| 久久这里只有精品6| 亚洲日韩欧美一区二区在线| 一区二区三区小说| 日韩影视精彩在线| 国产成人精品www牛牛影视| 不卡一区在线观看| 91精品国产91综合久久蜜臀| 精品对白一区国产伦| 亚洲女同一区二区| 看片网站欧美日韩| 91网站最新网址| 日韩午夜激情电影| 日韩理论在线观看| 另类小说图片综合网| 色综合久久久网| 精品久久久久香蕉网| 亚洲综合色在线| 国产精品一二三区在线| 欧美三级中文字幕| 中文字幕精品一区二区精品绿巨人| 国产精品沙发午睡系列990531| 亚洲一级在线观看| 成人黄页毛片网站| 日韩精品一区二区三区视频在线观看 | 日本道色综合久久| www激情久久| 亚洲成a人v欧美综合天堂| 国模一区二区三区白浆| 欧美日韩精品一二三区| 综合亚洲深深色噜噜狠狠网站| 秋霞午夜av一区二区三区| 91麻豆免费视频| 国产欧美日韩精品一区| 午夜精品成人在线| 色999日韩国产欧美一区二区| 国产亚洲欧美在线| 美女国产一区二区| 91精品国产91久久综合桃花| 亚洲专区一二三| 色婷婷综合久色| 亚洲乱码国产乱码精品精可以看| 国产成人自拍在线| 久久久91精品国产一区二区精品| 日本午夜精品一区二区三区电影| 欧美综合欧美视频| 亚洲最新在线观看| 91精品1区2区| 亚洲国产精品久久久男人的天堂 | 国产白丝精品91爽爽久久| 日韩久久精品一区| 日韩电影在线一区二区| 欧美放荡的少妇| 免费成人在线观看视频| 91精品国产综合久久精品| 日韩av午夜在线观看| 91精品国产乱码| 国产一区二区精品在线观看| 欧美激情一区不卡| 色综合久久六月婷婷中文字幕| 亚洲精品一二三| 在线电影国产精品| 精品亚洲成a人| 国产精品久久久久永久免费观看| 99精品视频一区二区| 亚洲一二三区视频在线观看| 欧美精品v日韩精品v韩国精品v| 日韩高清欧美激情| 日本一区二区三级电影在线观看| 91在线观看高清| 日韩电影网1区2区| 亚洲国产激情av| 欧美美女黄视频| 国产成人免费视频网站| 一区二区三区四区中文字幕| 日韩片之四级片| 91最新地址在线播放| 首页国产欧美日韩丝袜| 久久久久久久久一| 欧美日韩精品欧美日韩精品一| 精品一区二区国语对白| 一区二区三区欧美久久| 久久久精品人体av艺术| 欧美色成人综合| 成人黄色大片在线观看| 美腿丝袜亚洲色图| 一区二区三区日韩精品视频| 久久影院视频免费| 69堂成人精品免费视频| 色婷婷久久综合| 蜜桃精品视频在线| 亚洲国产精品人人做人人爽| 中文字幕av一区二区三区免费看| 一本大道综合伊人精品热热| 国产成人综合视频| 免费成人你懂的| 亚洲综合色在线| 亚洲男人电影天堂| 国产精品私房写真福利视频| 欧美mv日韩mv国产网站app| 色94色欧美sute亚洲线路二| 99久久精品久久久久久清纯| 国产高清精品网站| 久久精品国产在热久久| 热久久免费视频| 日本91福利区| 日本不卡高清视频| 免费成人av在线播放| 亚洲成国产人片在线观看| 亚洲影视资源网| 亚洲va天堂va国产va久| 午夜精品在线视频一区| 亚洲第一av色| 日韩av一区二区三区| 蜜桃一区二区三区在线| 精品一区免费av| 国产成人一级电影| 成人少妇影院yyyy| 99久久er热在这里只有精品66| k8久久久一区二区三区| av一二三不卡影片| 91国产免费观看| 91精品婷婷国产综合久久性色 | 欧美怡红院视频| 在线播放视频一区| 精品福利一区二区三区免费视频| 26uuu成人网一区二区三区| 日本一区二区三区国色天香| 最新日韩av在线| 一区二区欧美视频| 久久不见久久见免费视频7| 国产精品 欧美精品| 99精品国产热久久91蜜凸| 欧美在线观看视频一区二区 | 亚洲综合一区在线| 日本视频中文字幕一区二区三区| 捆绑变态av一区二区三区| 成人在线视频一区| 91.com在线观看| 国产精品日产欧美久久久久| 亚洲一区二区黄色| 国产精品一二二区| 欧美三级日韩三级| 亚洲精品一线二线三线无人区| 亚洲色图欧美在线| 极品瑜伽女神91| 欧美色区777第一页| 日本一区二区免费在线观看视频 | 国产综合色在线视频区| 日本精品视频一区二区| 久久久99久久精品欧美| 亚洲第一福利视频在线| 高清在线成人网| 精品福利av导航| 日本不卡一二三| 欧美日韩一区二区三区免费看| 国产欧美va欧美不卡在线| 免费观看91视频大全| 欧美三级日本三级少妇99| 亚洲欧洲三级电影| 国产凹凸在线观看一区二区| 欧美一区二区黄色| 亚洲成人综合在线| 成人app在线| 欧美国产综合色视频| 国产美女娇喘av呻吟久久| 欧美成人vps| 久久国产免费看| 精品久久国产字幕高潮| 麻豆精品一区二区| 日韩一级欧美一级| 毛片不卡一区二区| 日韩三级视频在线看| 裸体健美xxxx欧美裸体表演| 91精品国产aⅴ一区二区| 日韩不卡一二三区| 日韩精品一区二区三区在线观看 | 日韩美女天天操| 九九国产精品视频| www久久久久| 9i在线看片成人免费| 亚洲精品免费一二三区| 91久久精品国产91性色tv| 亚洲综合色在线| 日韩欧美一二区| 国产乱码一区二区三区| 欧美激情一区二区三区全黄| 色综合视频在线观看| 午夜精品福利一区二区三区av | 欧美一区二区三区免费|