linux环境OpenRASP使用教程,OpenRASP技术分析
閱讀:
11,455
Open-RASP 將新興的RASP(Run-time Ap-pli-ca-tion Self-Pro-tec-tion)安全防護技術普及化,使其迅速成為企業Web安全防護中的一個重要武器,有效增強防御體系縱深和對漏洞防護的適應能力。本文主要針對OpenRASP進行原理介紹和應用。
OpenRASP介紹
百度云分析團隊開源的自適應安全產品
https://rasp.baidu.com/??? 文檔 https://rasp.baidu.com/doc/;
目前只支持JAVA;?以-javaagent 方式啟動Tomcat。
安裝
java –jar? raspInstall.jar 可源碼安裝;
攻擊檢測告警日志(XSS):
安全基線檢查告警日志:
OpenRASP – 初始化流程
OpenRASP – 類字節碼修改流程(instrument方式)
OpenRASP – 攻擊檢測流程
在進入到被修改類的函數時,調用事先注入的檢測函數,最終調用pluginCheck函數。
1.pluginCheck(CheckParameter.Type type, Object params);
(type為檢查的掛載點類型,params為函數原始調用參數)
2.遍歷執行該掛載點類型的所有JavaScript檢測函數;
3.如果檢測函數沒有返回block,繼續執行;
4.否則記錄攻擊日志到alarm.log中,并執行Block操作(重定向到一個提示異常的頁面)
(重定向的異常頁面可通過配置修改)
OpenRASP防護原理
Tomcat安全基線檢查
啟動Tomcat時檢查允許環境和配置是否符合安全規范
檢測類:org/apache/catalina/startup/Catalina
檢測函數:start (Tomacat的啟動函數)
檢測掛載點:startup
檢測方法:沒有使用js插件函數,直接通過代碼檢測。
是否以admin啟動
是否開啟http only
tomacat管理員是否有弱密碼
是否刪除默認webapps
SQL權限控制
檢測類:java/sql/DriverManage
檢測函數:getConnection
檢測掛載點:sql(但沒有使用)
檢測方法:沒有使用js插件函數,直接通過代碼檢測。
解析數據庫類型、登錄用戶,限制通過管理員用戶登錄。
SQL慢查詢檢測
SELECT語句執行時間超過3s(尚未實現)
SELECT語句一次讀取數據行數超過配置的閾值
檢測類:select查詢結果返回的類,每種數據庫的類不同,如PostgreSql的ResultSet類
檢測函數:next(取下一條記錄的函數)
檢測掛載點:sql_result_set (但沒有使用)
檢測方法:沒有使用js插件函數,直接通過代碼檢測。
如果返回結果大于配置值,認為是慢查詢,提示告警:
SQL注入檢測
檢測類:sql語句執行類,每種數據庫的類不同,如PostgreSql的PgStatement類
檢測函數:execute/executeUpdate
/executeQuery/addBatch
檢測掛載點:sql
檢測方法:使用js插件函數檢測
如下params.query為sql語句
params.server為sql數據庫類型
context.parameter為http請求實體
SQL注入檢測
方法一:結合Hook截獲的http請求參數做檢測
如果請求參數中包含了sql語句,認為是webshell-數據庫管理器,block掉
從SQL語句中去掉用戶輸入,再和原語句進行比較,關鍵字個數相差太多則認為查詢邏輯變化,block掉
方法二:數據庫語句異常檢測
禁止多條sql語句;
禁止16禁止字符串;
禁止MySQL版本號注釋/*!
禁止常量比較操作
禁止執行敏感函數
方法三:簡單正則匹配檢測/\bupdatexml\s*\(|\bextractvalue\s*\(|\bunion.*select.*(from|into|benchmark).*\b/i
任意文件上傳檢測
原理:
攻擊者通過上傳木馬文件,直接得到WEBSHELL
形成原因:
代碼作者沒有對訪客提交的數據進行檢驗或者過濾不嚴,可以直接提交修改過的數據繞過擴展名的檢驗。
危害:
可以得到WEBSHELL;
上傳木馬文件,可以導致系統癱瘓
檢測類:org/apache/commons/fileupload/disk/DiskFileItem
檢測函數:setHeaders
檢測掛載點:fileUpload
檢測方法:使用js插件函數檢測,判斷文件名后綴是否合法
var scriptFileRegex= /\.(jspx?|php[345]?|phtml)\.?$/i
var ntfsRegex= /::\$(DATA|INDEX)$/i//其他的stream都沒啥用
遠程命令執行檢測
檢測類:java/lang/ProcessBuilder
檢測函數:start
檢測掛載點:command
檢測方法:使用js插件函數檢測
(不允許遠程執行命令)
XSS跨站攻擊檢測
檢測類:apache/catalina/core/ApplicationFilterChain
檢測函數:doFilter
檢測掛載點:request
檢測方法:使用js插件函數檢測
(檢查http參數中是否含有特殊字段)
反序列化用戶輸入檢測
檢測類:java/io/ObjectInputStream
檢測函數:resolveClass
檢測掛載點:deserialization
檢測方法:使用js插件函數檢測
(檢查反序列化的類名是否合法,使用黑名單檢驗)
ObjectOutputStream類的writeObject()方法實現序列化;ObjectInputStream類的readObject()方法用于反序列化。
Struts 2的Ognl表達式執行漏洞檢測
OGNL是Object-Graph Navigation Language的縮寫,全稱為對象圖導航語言,是一種功能強大的表達式語言,它通過簡單一致的語法,可以任意存取對象的屬性或者調用對象的方法,能夠遍歷整個對象的結構圖,實現對象屬性類型的轉換等功能。
檢測類:ognl/Ognl
檢測函數:parseExpression(在此函數中執行表達式)
檢測掛載點:ognl
檢測方法:使用js插件函數檢測
(檢查structpayload中是否含有非法信息)
SIEM
security information and event management(安全信息和事件管理)
OpenRASP 支持兩種類型的SIEM插件,分別是 Splunk 和 Kibana,它們采集OpenRASP的日志并展示。
支持郵件告警
OneASP
總結
?OpenRASP框架已完成,并支持大部分攻擊類型的檢查
?可新增JS插件和HooK類進行二次開發
?深入了解每種攻擊類型,常見攻擊方法,再豐富插件和代碼
?對應用程序的性能影響需要測試
?管理平臺:? 探針的管理、插件的管理、WEB展現
?結合自身與WAF的優點,聯合WAF進行防護
總結
以上是生活随笔為你收集整理的linux环境OpenRASP使用教程,OpenRASP技术分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux的as编译文件,Ubuntu
- 下一篇: 左耳一直嗡嗡响是什么原因?