Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Apache Tapestryの 注意すべき特殊な仕様

raise-isayan
September 05, 2023

Apache Tapestryの 注意すべき特殊な仕様

raise-isayan

September 05, 2023
Tweet

Other Decks in Research

Transcript

  1. 自己紹介 ⚫ お名前:諌山 貴由(いさやま たかよし) ⚫ 会社:三井物産セキュアディレクション ⚫ セキュリティ:2008年3月から ⚫

    趣味:旅行 (メインは日本国内) 2007年頃から特に旅行が増えた • 47都道府県すべて訪問かつ宿泊ずみ 47都道府県めぐりは最低2巡している • お城巡り • 日本建築・昔の建物・遺跡 • 温泉・自然 • etc ⚫ 国外 • 台湾(台北) ⚫ そして写真撮影!! 3
  2. デバッグ機能 システムが解釈できそうにない不正なエンコード形式を送信 1)https://★/◆/detail/mbs${234} その後、とあるURLにアクセスすると以下のスタックトレースが表示され る パッケージ名が「 org.apache.tapestry5 」の箇所でエラーためApache Tapestryの仕様と考えて良さそう 15

    java.lang.IllegalArgumentException: Input string ‘mbs${234}' is not valid; the '$' character at position 11 should be followed by another '$' or a four digit hex number (a unicode value). at org.apache.tapestry5.internal.services.URLEncoderImpl.decode(URLEncoderIm pl.java:138)
  3. SQLのバージョン取得 特殊なエンコードのためBlindで抜くのはめんどい スタックトレース出力できるんだからこれを利用できるよね。 HEX形式に変換して以下にする 取れた 18 ’||cast(version() as int)||’ $0027$007c$007c$0063$0061$0073$0074$0028$0076$0065$0072$00

    73$0069$006f$006e$0028$0029$0020$0061$0073$0020$0069$006e$ 0074$0029$007c$007c$0027 Caused by: org.postgresql.util.PSQLException: ERROR: invalid input syntax for integer: “PostgreSQL 13.7 (Debian 13.7-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit“ Where: PL/pgSQL function dso.count_estimate(text) line 6 at FOR over EXECUTE statement
  4. URLEncodeの特殊な解釈(2) 以下の文字は特殊な解釈がされる ※ 「$N$B」「$B$0027」「$N$0027」のように組み合わせて表現は不可 最初にでてきた「$N」は nullであったことがここで判明 20 URLEncode 意味 備考

    $hhhh 文字エンコード Unicodeでエンコード $N null (javaのnull文字) ※文字全体が一致する必要がある $B Empty (空文字 ””) ※文字全体が一致する必要がある $$ $ ($のエスケープ)