久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

代碼審計(一)

 zZ華 2023-02-12 發(fā)布于廣東

代碼審計(一)

系統(tǒng)架構(gòu)

基于Java語言,,采用流行的架構(gòu)整合相關(guān)主流技術(shù)開發(fā)的網(wǎng)站/系統(tǒng),,SpringBoot+springsecurity+mybatis等,。

項目目錄

src/main 下面有兩個目錄,分別是 java 和 resources java 目錄中主要存放的是java代碼
resources 目錄中主要存放的是資源文件,比如:html,、js、css等 在 java 目錄下還有其他一些常見目錄,,具體含義整理如下:
/java目錄下:
annotation :放置項目自定義注解
controller/ : 存放控制器,,接收從前端傳來的參數(shù),對訪問控制進(jìn)行轉(zhuǎn)發(fā),、各類基
本參數(shù)校驗或者不復(fù)用的業(yè)務(wù)簡單處理等,。
dao/ : 數(shù)據(jù)訪問層,與數(shù)據(jù)庫進(jìn)行交互,,負(fù)責(zé)數(shù)據(jù)庫操作,,在Mybaits框架中存放自定
義的Mapper接口
entity/ : 存放實(shí)體類
interceptor/ : 攔截器 service/ : 存放服務(wù)類,負(fù)責(zé)業(yè)務(wù)模塊邏輯處理,。Service 層中有兩種類,,一是
Service ,用來聲明接口,;二是 ServiceImpl ,,作為實(shí)現(xiàn)類實(shí)現(xiàn)接口中的方法。
utils/ : 存放工具類
dto/ : 存放數(shù)據(jù)傳輸對象(Data Transfer Object),,如請求參數(shù)和返回結(jié)果
vo/ : 視圖對象(View Object)用于封裝客戶端請求的數(shù)據(jù),,防止部分?jǐn)?shù)據(jù)泄漏,保證
數(shù)據(jù)安全
constant/ : 存放常量
filter/ : 存放過濾器
/resources目錄下:
mapper/ : 存放Mybaits的mapper.xml文件
static/ : 靜態(tài)資源文件目錄(Javascript,、CSS,、圖片等),,在這個目錄中的所有文
件可以被直接訪問
templates/ : 存放模版文件
application.properties 或 application.yml : Spring Boot默認(rèn)配置文件

Maven簡介

Maven 是一個項目管理工具,,它包含了一個項目對象模型(Project Object Model),反 映在配置中,,就是一個 pom.xml 文件,。是一組標(biāo)準(zhǔn)集合,一個項目的生命周期,、一個 依賴管理系統(tǒng),,另外還包括定義在項目生命周期階段的插件(plugin)以及目標(biāo)(goal)。當(dāng)我們使用 Maven 的使用,,通過一個自定義的項目對象模型,,pom.xml 來詳細(xì)描述我 們自己的項目。簡單來說,,我們開發(fā)一個JavaWeb項目是需要加載很多依賴的,,使用Maven可以便于管 理這些依賴。pom.xml POM是項目對象模型(Project Object Model)的簡稱,它是Maven項目中的文件,,使用XML表 示,,名稱叫做 pom.xml ,。該文件用于管理:源代碼、配置文件,、開發(fā)者的信息和角 色,、問題追蹤系統(tǒng)、組織信息,、項目授權(quán),、項目的url、項目的依賴關(guān)系等等,。Maven項 目中必須包含 pom.xml 文件,。需要導(dǎo)入的依賴應(yīng)該在 pom.xml 中進(jìn)行配置與填寫。比如導(dǎo)入某些依賴,,如下圖所 示: 

圖片

project - project 是 pom.xml 中描述符的根,。
modelVersion - modelVersion 指定 pom.xml 符合哪個版本的描述符。maven 2 和 3 只能為 4.0.0,。parent - maven 支持繼承功能,。子 POM 可以使用 parent 指定父 POM ,然后繼承
其配置,。
dependencies - 在dependencise中進(jìn)行依賴配置
groupId - 團(tuán)體,、組織的標(biāo)識符。團(tuán)體標(biāo)識的約定是,,它以創(chuàng)建這個項目的組織名稱
的逆向域名(reverse domain name)開頭,。一般對應(yīng)著 java 的包結(jié)構(gòu)。
artifactId - 單獨(dú)項目的唯一標(biāo)識符,。比如我們的 tomcat,、commons 等。不要在
artifactId 中包含點(diǎn)號(.),。version - 版本信息,。

SpringBoot簡介

SpringBoot是一款基于JAVA的開源框架。目的是為了簡化Spring應(yīng)用搭建和開發(fā)流程,。是目前比較流行,,大中小型企業(yè)常用的框架。正因為極大簡化了開發(fā)流程,,才收到絕大 開發(fā)人員的喜愛,。SpringBoot核心原理是自動裝配(自動配置),在這之前,,開發(fā)一個 JavaWeb,,Spring等項目要進(jìn)行很多配置,使用了SpringBoot就不用在過多考慮這些方 面。并且在SpringBoot中還內(nèi)置了Tomcat,。

SpringBoot 常用注解

@Controller 注解:標(biāo)注該類為controller類,,可以處理http請求。@Controller一般要
配合模版來使用?,F(xiàn)在項目大多是前后端分離,,后端處理請求,然后返回JSON格式數(shù)
據(jù)即可,,這樣也就不需要模板了,。
@ResponseBody 注解:將該注解寫在類的外面,表示這個類所有方法的返回的數(shù)據(jù)
直接給瀏覽器,。@RestController 相當(dāng)于 @ResponseBody 加上 @Controller @RequestMapping 注解:配置 URL映射 ,,可以作用于某個Controller類上,也可以作
用于某Controller類下的具體方法中,,說白了就是URL中請求路徑會直接映射到具體方法
中執(zhí)行代碼邏輯,。
@PathVariable 注解:接受請求URL路徑中占位符的值,示例代碼如下圖所示:

圖片

@RestController 相當(dāng)于 @ResponseBody 和@Controller的結(jié)合體 聲明rest風(fēng)格
@GetMapping 前端發(fā)起一個get請求到此接口 依次類推 @PostMapping
@Api 上圖Swagger Swagger 是一款RESTful接口的文檔在線自動生成加功能測試的軟件,。目的是為了減少與其他團(tuán)隊的溝通成本,,因此會使用Swagger構(gòu)建RESTful API文檔來描述所有的接口信息。

SpringSecurity簡介

Spring 是一個非常流行和成功的java應(yīng)用開發(fā)框架,。Spring Security 基于Spring 框架,, 提供了一套web應(yīng)用安全性的完整解決方案。一般來說,,Web 應(yīng)用的安全性包括兩部分:

  1. 用戶認(rèn)證(Authentication)   用戶認(rèn)證指的是驗證某個用戶是否為系統(tǒng)中的合法主體,,也就是說用戶能否訪問該 系統(tǒng)。用戶認(rèn)證一般要求用戶提供用戶名和密碼,。系統(tǒng)通過校驗用戶名和密碼來完成認(rèn) 證過程,。

  2. 用戶授權(quán)(Authorization)   用戶授權(quán)指的是驗證某個用戶是否有權(quán)限執(zhí)行某個操作。在一個系統(tǒng)中,,不同用戶 所具有的權(quán)限是不同的,。比如對一個文件來說,有的用戶只能進(jìn)行讀取,,而有的用戶可 以進(jìn)行修改。一般來說,,系統(tǒng)會為不同的用戶分配不同的角色,,而每個角色則對應(yīng)一系列的權(quán)限。對于上面提到的兩種應(yīng)用情景,,Spring Security 框架都有很好的支持,。在用戶認(rèn)證方面,Spring Security 框架支持主流的認(rèn)證方式,包括 HTTP 基本認(rèn)證,、 HTTP 表單驗證,、HTTP 摘要認(rèn)證、OpenID 和 LDAP 等,。在用戶授權(quán)方面,,Spring Security 提供了基于角色的訪問控制和訪問控制列表(Access Control List,ACL),,可以對應(yīng)用中的領(lǐng)域?qū)ο筮M(jìn)行細(xì)粒度的控制,。

Mybatis簡介

MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL,、存儲過程以及高級映射,。MyBatis免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis可以通過簡單的 XML 或注解來配置和映射原始類型,、接口和 Java POJO(Plain Old Java Objects,,普通老式 Java 對象)為數(shù)據(jù)庫中的記錄。它內(nèi)部封裝了jdbc,,使開發(fā)者只需要關(guān)注sql語句本身,,而不需要花費(fèi)精力去處理加載驅(qū) 動、創(chuàng)建連接,、創(chuàng)建statement等繁雜的過程,。

Mybatis拼接sql有下面兩種方式:
#{} 告訴 MyBatis 創(chuàng)建一個預(yù)編譯語句(PreparedStatement)參數(shù),在 JDBC 中,,這
樣的一個參數(shù)在 SQL 中會由一個“?”來標(biāo)識,,并被傳遞到一個新的預(yù)處理語句中。
${} 僅僅是純粹的 string 替換,,在動態(tài) SQL 解析階段將會進(jìn)行變量替換,,類似于直接
替換字符串,會導(dǎo)致SQL注入產(chǎn)生,。like+#{ }

Swagger簡介

Swagger 是一款RESTful接口的文檔在線自動生成加功能測試的軟件,。目的是為了減少與 其他團(tuán)隊的溝通成本,因此會使用Swagger構(gòu)建RESTful API文檔來描述所有的接口信息,。

常見Swagger敏感信息泄露的路徑:
/swagger/
/api/swagger/
/swagger/ui/
/api/swagger/ui/
/swagger-ui.html/
/api/swagger-ui.html/
/user/swagger-ui.html/
/swagger/ui/
/api/swagger/ui/
/libs/swaggerui/
/api/swaggerui/
/swagger-resources/configuration/ui/
/swagger-resources/configuration/security/

Thymeleaf簡介

Thymeleaf是一個流行的模板引擎,,該模板引擎采用Java語言開發(fā)。模板引擎(這里特 指用于Web開發(fā)的模板引擎)是為了使用戶界面與業(yè)務(wù)數(shù)據(jù)(內(nèi)容)分離而產(chǎn)生的,,它 可以生成特定格式的文檔,,用于網(wǎng)站的模板引擎就會生成一個標(biāo)準(zhǔn)的html文檔。從字面 上理解模板引擎,,最重要的就是模板二字,,這個意思就是做好一個模板后套入對應(yīng)位置 的數(shù)據(jù),,最終以html的格式展示出來,這就是模板引擎的作用,。

SpringBoot Actuator簡介

Actuator主要用于公開有關(guān)正在運(yùn)行的應(yīng)用程序的運(yùn)行信息 - 運(yùn)行狀況,,指標(biāo),信息,, 轉(zhuǎn)儲,,env等等。它使用HTTP端點(diǎn)或JMX bean來使我們能夠與它進(jìn)行交互,。一些常見的執(zhí)行端點(diǎn):

/beans:此端點(diǎn)返回應(yīng)用程序中配置的所有bean的列表,。
/env:提供有關(guān)Spring Environment屬性的信息。
/health:顯示應(yīng)用程序運(yùn)行狀況
/info:顯示應(yīng)用程序信息,,我們可以在Spring環(huán)境屬性中配置它,。
/mappings:顯示所有 @RequestMapping 路徑的列表 。
/shutdown:允許我們正常關(guān)閉應(yīng)用程序,。
/threaddump:提供應(yīng)用程序的線程轉(zhuǎn)儲,。

Druid簡介

Druid是阿里研發(fā)的一款數(shù)據(jù)庫連接池,其開發(fā)語言為java,,druid集合了c3p0,、dbcp、 proxool等連接池的優(yōu)點(diǎn),,還加入了日志監(jiān)控,、session監(jiān)控等數(shù)據(jù)監(jiān)控功能,使用Druid 能有效的監(jiān)控DB池連接和SQL的執(zhí)行情況,。

以上均有可能出現(xiàn)的漏洞

Spring Security驗證繞過漏洞
Spring Security認(rèn)證繞過
Spring Boot框架SPEL表達(dá)式注入漏洞
Spring Security未經(jīng)授權(quán)的訪問
Spring Boot Actuator命令執(zhí)行漏洞
Spring Boot Actuator hikari配置不當(dāng)導(dǎo)致的遠(yuǎn)程命令執(zhí)行漏洞
Spring Boot Actuator jolokia 配置不當(dāng)導(dǎo)致的XXE漏洞
Spring Boot Thymeleaf 模板注入
Spring Boot Tomcat導(dǎo)致的JNDI注入
Spring Boot eureka xstream deserialization rce Spring Boot h2 database query rce Spring Boot mysql jdbc deserialization rce Spring Boot sql Spring Boot whitelabel error page SpEL rce Spring Boot 修改環(huán)境屬性導(dǎo)致的rce Spring Boot 提取內(nèi)存密碼
Spring Boot 獲取被星號脫敏的密碼的明文 (方法一) Spring Boot 路由地址及接口調(diào)用詳情泄漏
Spring Boot 配置不當(dāng)而暴露的路由
Druid未授權(quán)訪問

審計開始

總之我的第一步開始先是從代碼入手比如該系統(tǒng)采用的是mybatis 那么就一定會有xml文件編寫sql 那么剛剛介紹 #{}是防止sql注入預(yù)編譯 ${}這個自然是不防止 如下圖

sql注入

圖片

一個一個來測試 

圖片

找到controller接口調(diào)用處

圖片

一個%讓他閉合

圖片

下一步我直接sqlmap大法懶得手注了 

圖片

經(jīng)過一番探測,,發(fā)現(xiàn) 系統(tǒng)管理 -> 用戶管理 -> 查詢 系統(tǒng)管理 -> 字典管理 -> 查 詢 兩處存在SQL注入

dirsearch 閑的沒事扔里面跑一跑

圖片

GET 請求目標(biāo)網(wǎng)站的 /env 或 /actuator/env 接口,搜索 ****** 關(guān)鍵詞,,找到想要獲取的被星號 * 遮掩的屬性值對應(yīng)的屬性名,。這里脫敏密碼 四種方法我都有試過 有知道的可以試試 我還是太菜了

swagger 文檔

圖片

組件漏洞 Fastjson

Fastjson簡介 Fastjson 是Alibaba的開源JSON解析庫,它可以解析 JSON 格式的字符串,,支持將 Java Bean 序列化為 JSON 字符串,,也可以從 JSON 字符串反序列化到 JavaBean。

FastJson中的 parse() 和 parseObject()方法都可以用來將JSON字符串反序列化成Java對象,,parseObject() 本質(zhì)上也是調(diào)用 parse() 進(jìn)行反序列化的,。但是 parseObject() 會額外的將Java對象轉(zhuǎn)為 JSONObject對象,即 JSON.toJSON(),。所以進(jìn)行反序列化時的細(xì)節(jié)區(qū)別在于,,parse() 會識別并調(diào)用目標(biāo)類的 setter 方法及某些特定條件的 getter 方法,而 parseObject() 由于多執(zhí)行了 JSON.toJSON(obj),,所以在處理過程中會調(diào)用反序列化目標(biāo)類的所有 setter 和 getter 方法。 

圖片

搜索代碼看看哪里使用了parseObject結(jié)果不存在 

圖片

登錄爆破繞過圖像驗證碼

這里隨便發(fā)包 驗證碼實(shí)際就沒用 這就是個練習(xí)的代碼審計的項目 所以比較簡陋 超級管理員就是弱口令 只不過在實(shí)際過程中 圖像驗證碼有的可以重復(fù)利用 繞過前端校驗 再不濟(jì)花點(diǎn)錢接個識別 害 

圖片

異常信息泄露

搜索關(guān)鍵字 e.printStackTrace() ,該函數(shù)會將異常調(diào)用信息,。如下圖所示: 

圖片

越權(quán) (平行越權(quán))(垂直越權(quán))

普通賬號 

圖片

這里不能垂直越權(quán) 有權(quán)限的校驗 這不應(yīng)該存在userId通過前端來控制 通常 解析token 或者session來的 這里將userId 修改為超級管理員的 

圖片

代碼處查看是修改用戶是有判斷是否是超級管理員的 

圖片

圖片

嘗試改普通用戶的 

圖片

這里 把userId 2的給禁用了 

圖片

圖片

其他這就不演示了 還有

存儲xss

這里怎么說就是見框就x 

圖片

沒啥技術(shù)含量 其他就不找了 隨便一處都是 到這里就簡單審計一下 就不細(xì)節(jié)去展示了 害

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多