linux環境OpenRASP使用教程,集成openRASP與攻擊測試

1.介紹

openRASP是一個百度的安全框架,將其集成到我們的web項目中,就像是給web項目安裝了一款“安全管家”的軟件,它可以檢測到攻擊,并進行攔截。

2.集成openRASP到項目中

98c102192537?tdsourcetag=s_pcqq_aiomsg

openRASP針對不同的服務器,提供了不同的安裝方法,但是基本上都大同小異,本文以SpringBoot為例,springboot又可以打成jar包或者war包,本項目使用jar包部署,演示如何將openRASP集成到SpringBoot項目中。

2.1 下載壓縮文件

98c102192537?tdsourcetag=s_pcqq_aiomsg

2.2 解壓并復制文件

將上面下載的壓縮包,解壓,將其中的rasp文件復制到jar包的同級目錄中

ps:復制文件夾命令:cp -R

98c102192537?tdsourcetag=s_pcqq_aiomsg

image.png

修改rasp目錄的權限

命令:chmod 777 -R rasp

2.3 配置啟動參數

ps:添加配置參數時,指定了rasp-log4j.xml 文件,這是啟動時自動生成的,無需創建。

如果是直接java -jar啟動jar包

直接追加啟動參數:

java -javaagent:"/weblogic/app/deploy/jcpt/rasp/rasp.jar" -Dlog4j.rasp.configuration="file:///weblogic/app/deploy/jcpt/rasp/conf/rasp-log4j.xml" -jar jcpt.jar

本項目是jenkins部署,利用shell腳本啟動jar包,所以需要修改shell腳本內容,添加啟動參數

找到對應的shell腳本位置(本項目shell位置:/weblogic/shell/),編輯腳本,添加配置參數

98c102192537?tdsourcetag=s_pcqq_aiomsg

2.4 重啟springboot項目,并驗證是否安裝openRASP成功

本項目使用jenkins部署,重啟項目,需要重新build

98c102192537?tdsourcetag=s_pcqq_aiomsg

image.png

驗證是否安裝成功有兩點:

一:查看rasp的log:/rasp/logs/rasp/下的log文件,如果出現OpenRASP Engine Initialized 字樣,就表示安裝成功

98c102192537?tdsourcetag=s_pcqq_aiomsg

二:訪問web網站,檢查響應的 Header 是否包含 X-Protected-By 字樣,有就表示安裝成功

98c102192537?tdsourcetag=s_pcqq_aiomsg

到此為止,就已經將openRASP集成到了項目中

3.安裝管理后臺

安裝管理后臺以后,可以在圖形化的界面查看openRASP信息,比如攔截情況等等。

管理后臺依賴ElasticSearch和MongoDB才可以正常運行。

并且還有版本要求:

MongoDB >= 3.6

ElasticSearch >= 5.6

3.2 下載管理后臺

98c102192537?tdsourcetag=s_pcqq_aiomsg

解壓至任意服務器任意目錄(后臺管理的服務器和項目運行的服務器能聯通)

本例中解壓到:機器的/opt/rasp-cloud-2019-01-04/

98c102192537?tdsourcetag=s_pcqq_aiomsg

image.png

3.3 配置并啟動管理后臺

98c102192537?tdsourcetag=s_pcqq_aiomsg

image.png

啟動后臺管理:

98c102192537?tdsourcetag=s_pcqq_aiomsg

./rasp-cloud -d

3.4 訪問后臺管理頁面

http://ip:8086

默認的用戶名密碼是:openrasp/admin@123

98c102192537?tdsourcetag=s_pcqq_aiomsg

默認有一個php示例應用

4 將管理后臺和項目連接起來

4.1 在管理后臺創建應用

在此添加一個Java應用

98c102192537?tdsourcetag=s_pcqq_aiomsg

4.2 添加主機

98c102192537?tdsourcetag=s_pcqq_aiomsg

獲取到這三個數據

4.3 將上述三個數據配置到rasp的配置中

/rasp/conf/下面(是springboot項目的rasp的conf,不是后臺管理的conf)

98c102192537?tdsourcetag=s_pcqq_aiomsg

image.png

4.4 重啟springboot項目,檢測后臺管理頁面是否可以查看到對應的主機

98c102192537?tdsourcetag=s_pcqq_aiomsg

image.png

到此,后臺管理也搭建完成

5. 攻擊測試

openRASP是安全框架,在這里就使用sqlmap進行sql注入攻擊,來查看openRASP是否有效果,關于sqlmap的使用,可以查看本人另一篇文章,地址是:https://www.jianshu.com/p/3d3656be3c60

但是由于項目中的代碼并沒有sql可以注入的地方,所以本人故意在項目中添加一個擁有sql漏洞的接口,用于檢測openRASP是否可以攔截到

5.1 包含sql漏洞的接口代碼

package com.base.web.aisino.web;

import com.alibaba.fastjson.JSONObject;

import com.base.web.common.base.ApiResponse;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.web.bind.annotation.*;

import java.sql.*;

/**

* @author ah.zhanglei3@aisino.com

* @ClassName

* @Description 測試OpenRasp

* @Date 18:42 2019/3/16

*/

@RestController

@RequestMapping("/test")

public class TestOpenRaspWebService {

private final Logger logger = LoggerFactory.getLogger(TestOpenRaspWebService.class);

private String resultSetString1;

private String resultSetString2;

private String resultSetString3;

private String resultSetString4;

@PostMapping("/openrasp")

public ApiResponse getRecidDateData(@RequestParam("userId") String userId) throws ClassNotFoundException, SQLException {

logger.info("請求->測試opensasp->輸入參數【userId:"+userId+"】");

//1.注冊驅動

Class.forName("com.mysql.jdbc.Driver");

//2.獲取鏈接

Connection connection = DriverManager.getConnection("jdbc:mysql://192.168.202.162:3306/jcpt?useUnicode=true&characterEncoding=utf8", "root", "ybf5mysql");

//3.創建執行sql語句的對象

Statement statement = connection.createStatement();

//4.sql語句

String sql = "select * from sys_user where user_id= "+userId+";";

//5.執行sql語句

ResultSet resultSet = statement.executeQuery(sql);

//6.對結果集進行處理

if(resultSet.next()){

logger.info("取值成功");

//獲取第一列和第二列的值,不是從0開始

resultSetString1 = resultSet.getString(1);

resultSetString2 = resultSet.getString(2);

resultSetString3 = resultSet.getString(3);

resultSetString4 = resultSet.getString(4);

logger.info(resultSetString1+"--"+resultSetString2+"--"+resultSetString3+"--"+resultSetString4);

}else {

logger.info("取值失敗");

}

//7.關閉

if (resultSet != null){

resultSet.close();

}

if (statement != null){

statement.close();

}

if (connection != null){

connection.close();

}

JSONObject jsonObject = new JSONObject(16);

jsonObject.put("data",resultSetString1+"--"+resultSetString2+"--"+resultSetString3+"--"+resultSetString4);

logger.info("數據庫返回結果->測試opensasp->返回結果參數【result:"+jsonObject+"】");

return ApiResponse.ofSuccess(jsonObject);

}

}

5.2 sqlmap攻擊本地沒有集成openRASP的代碼

執行sqlmap:

python2 sqlmap.py -u "http://localhost:9099/test/openrasp?userId=1" --cookie="JSESSIONID=d8f4209e-848b-405c-8986-907c4de6d984" --method=POST

sqlmap順利的找到了漏洞:

98c102192537?tdsourcetag=s_pcqq_aiomsg

現在嘗試利用這個漏洞獲取一些數據庫的信息

獲取數據庫名:

python2 sqlmap.py -u "http://localhost:9099/test/openrasp?userId=1" --cookie="JSESSIONID=d8f4209e-848b-405c-8986-907c4de6d984" --method=POST --dbs

98c102192537?tdsourcetag=s_pcqq_aiomsg

獲取數據庫的表名:

python2 sqlmap.py -u "http://localhost:9099/test/openrasp?userId=1" --cookie="JSESSIONID=d8f4209e-848b-405c-8986-907c4de6d984" --method=POST -D jcpt --tables

98c102192537?tdsourcetag=s_pcqq_aiomsg

image.png

獲取數據庫jcpt的sys_user表的列名:

python2 sqlmap.py -u "http://localhost:9099/test/openrasp?userId=1" --cookie="JSESSIONID=d8f4209e-848b-405c-8986-907c4de6d984" --method=POST -D jcpt -T sys_user --columns

98c102192537?tdsourcetag=s_pcqq_aiomsg

可以看到,sqlmap可以通過注入拿到一些數據庫的信息

5.3 sqlmap攻擊集成了openRASP的代碼

執行sqlmap:

python2 sqlmap.py -u "ip:9099/test/openrasp?userId=1" --cookie="JSESSIONID=95571903-b864-4ef7-8c22-d52fe3203e8a" --method=POST

這時sqlmap就找不到注入點了:

98c102192537?tdsourcetag=s_pcqq_aiomsg

同時查看網站日志,可以看到,sqlmap的攻擊行為都被openRASP攔截了

98c102192537?tdsourcetag=s_pcqq_aiomsg

最后查看openRASP后臺管理頁面

可以看到,openRASP的攔截記錄

98c102192537?tdsourcetag=s_pcqq_aiomsg

image.png

6. 總結

openRASP的簡單使用就是這樣,它還有更多的功能,比如大規模部署,SIEM系統集成等。

同時我們還可以對openRASP進行插件開發,二次開發等,定制openRASP的功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539899.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539899.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539899.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JQuery調用iframe子頁面函數/對象的方法

JQuery調用iframe子頁面函數/對象的方法例子: 父頁面有個ID為mainfrm的iframe,iframe連接b.html,該頁面有個函數test 在父頁面調用b.html的test方法為: $("#mainfrm")[0].contentWindow.test();

ExtJs 備忘錄(4)—— Form表單(四) [ 數據提交 ]

一、截圖和示例共用Ext.FormPanel1.1  截圖由于本文主要關注的是表單提交的幾種方式&#xff0c;所以僅用了一個表單項以便于測試和減少示例代碼。1.2  示例共用Ext.FormPanel <script type"text/javascript">Ext.onReady(function() { Ext.Qui…

web.xml文件的作用

每個javaEE工程中都有web.xml文件&#xff0c;那么它的作用是什么呢&#xff1f;它是每個web.xml工程都必須的嗎&#xff1f; 一個web中可以沒有web.xml文件&#xff0c;也就是說&#xff0c;web.xml文件并不是web工程必須的。 web.xml文件是用來初始化配置信息&#xff1…

linux 掃描mipi設備,VS-RK3399 在linux系統下面調試Mipi camera接口介紹

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓debian系統目前支持Usb camera是沒有問題&#xff0c;走UVC功能接口。那么mipi 接口camera和并口接口的camera&#xff0c;在Debian系統怎么設置呢&#xff0c;其實原理一樣&#xff0c;也走uvc接口封裝函數.下面深圳視壯給大家簡單…

hadoop window 搭建

hadoop 原理參考&#xff1a;用 Hadoop 進行分布式并行編程官方中文文檔&#xff1a;http://hadoop.apache.org/core/docs/r0.18.2/cn/index.html1. 首先安裝 cygwin ssh 參考 windows ssh 搭建2. 搭建hadoop 參考 Cygwin下的Hadoop快速入門-偽分布式模式的查缺補漏 這里…

一篇文章解釋struts常用功能

一、什么是框架&#xff1f; 來源于建筑行業&#xff0c;如果建筑一個茅草屋&#xff0c;不需要框架&#xff0c;如果建造一個幾個億的摩天大樓&#xff0c;就需要框架。 小系統用框架浪費人力&#xff0c;中大型系統用框架。 軟件中的框架&#xff0c;是一種半成品。實現了一些…

webpack 3 零基礎入門教程 #12 - 如何使用模塊熱替換 HMR 來處理 CSS

模塊熱替換 是什么意思&#xff1f; 以前我們使用的 webpack --watch 或 webpack-dev-server 的功能是監聽文件改變&#xff0c;就自動刷新瀏覽器&#xff0c;而這個 模塊熱替換 不用刷新瀏覽器&#xff0c;它是只讓修改到的模塊&#xff0c;才會在瀏覽器上發生相應的變化&…

struts2訪問jsp頁面404

問題描述 在搭建struts2環境的時候&#xff0c;拷貝了web.xml&#xff0c;拷貝了struts.xml&#xff0c;拷貝了jar包。運行&#xff0c;正常&#xff0c;訪問jsp頁面&#xff0c;報404錯誤。 web.xml <?xml version"1.0" encoding"UTF-8"?> <w…

centos7定制linux鏡像,自定制Centos7.3系統鏡像(ISO)

本文主要介紹如何根據官方的Centos鏡像文件&#xff0c;在保留原有默認安裝的RPM包的基礎下&#xff0c;添加自己所需要的RPM包的&#xff0c;最終生成一個自定制版的ISO&#xff0c;節省了寶貴的時間并確保了安裝的定制性。對于其他沒有介紹的修改&#xff0c;后續在實踐中會進…

調用打開另外一個APK

2019獨角獸企業重金招聘Python工程師標準>>> Intent mIntent new Intent(); mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ComponentName comp new ComponentName("com.mm.android.direct.gdmssphoneLite", "com.mm.android.direct.gdmsspho…

Jquery Mobile dialog的生命周期

JQuery Mobile對htm5的移動開發絕對是個好用的東西&#xff0c;今天簡單談談JQuery Mobile中的dialog的使用。 1.對話框的彈出。 2.對話框的生命周期。 3.對話框內事件的注冊。 1&#xff09;第一個問題&#xff1a;對話框的彈出。 如果要彈出一個對話框&#xff0c;可以在頁面…

基本linux命令vi,基本linux和vi命令.pdf

基本linux和vi命令DETIBIHORP ___________________YLTCIR 附錄 BTSSIR 基本的 Linux 和ETUP vi 命令 yM lO nC oS___________________I eH sT uM NOR OF IS TL AAI RR OET PA RMT OIK

集成Java內容倉庫和Spring

JCR模塊 Spring Modules的一部分&#xff0c;JCR模塊的主要目標是&#xff1a;以一種類似Spring主分發包中ORM包的方式&#xff0c;簡化使用JSR-170 API進行開發。特點如下&#xff1a; JcrTemplate&#xff0c;允許執行JcrCallback和異常處理&#xff08;將需檢查的JCR異常轉換…

jQuery Mobile彈出對話框后不刷新原頁面,保持原頁面內容不變

使用jQuery Mobile開發移動應用程序時&#xff0c;在一個頁面上彈出對話框&#xff0c;關閉對話框后&#xff0c;發現原來的頁面被刷新了。如果原頁面上有一些已經選擇或者填寫的數據&#xff0c;則這些數據就會丟失。這時候&#xff0c;就需要對對話框的返回按鈕做一些處理&am…

mpi4py linux例子,python-3.x – mpi4py中的共享內存

我使用MPI(mpi4py)腳本(在單個節點上),它與一個非常大的對象一起使用.為了讓所有進程都可以訪問該對象,我通過comm.bcast()分發它.這會將對象復制到所有進程并占用大量內存,尤其是在復制過程中.因此,我想分享像指針而不是對象本身.我發現memoryview中的一些功能對于增強進程內對…

c語言源程序最多可能由組成,一個C語言源程序由若干函數組成,其中至少應含有一個()。...

個C語言源由I am interested in the training course, which _____ at Hilton Hotel in Beijing from March 8 to 12, 2018.程序成“萬物莫不有對”體現了中國傳統哲學的矛盾觀。用戶在進行產品的三維設計時&#xff0c;干函可以采用以下( )的設計方法。數組少意識是人腦對客觀…

oracle的背景

oracle簡介 1977年 美國人 Larry 成立軟件開發實驗室 。 1980年 用c/c開發了世界第一個商用關系型數據庫&#xff08;RDBMS&#xff09;。 1983年 公司更名為Oracle Corporation&#xff08;甲骨文公司&#xff09;。 2009年4月21日&#xff0c;Oracle收購Sun公司。 30多…

Citrix Netscaler版本管理和選擇

Citrix Netscaler版本管理和選擇 來源 http://blog.51cto.com/caojin/1898164 隨著Citrix Netscaler的快速發展&#xff0c;有很多人在維護設備時經常搞不懂Netscaler軟件版本是如何查看和選擇&#xff0c;當前軟件是否需要升級&#xff0c;當前軟件是否穩定等。基于以上問題&a…

樹的基本操作代碼 c語言,二叉樹的基本操作(C語言、源代碼)

二叉樹的基本操作(源代碼)#include "stdio.h"#include "malloc.h"#define MAX 100typedef struct node{int date;struct node *lchild,*rchild;}bitnode,*bitree;bitree createbitree(bitree bt){int m;printf("m");scanf("%d",&m…

oracle實例與數據庫

一、名稱 Oracle數據庫服務器。單叫數據庫或服務器都不全面。 二、組成 oracle數據庫服務器由二部份組成&#xff1a;實例和數據庫 實例&#xff1a; 可理解為對象&#xff0c;看不見。數據庫&#xff1a; 理解為類&#xff0c;看得見的&#xff0c;E:\app\Administrator\…