musl libc改造にっき
これは過去の話なんですけどね
AndroidってLinuxLinux言いますけど魔改造されててPOSIX準拠じゃないんですよ
例えばpmコマンドって知ってます? パッケージインスコするのに使うアレ。
今Nexus 5Xで調べたら /system/bin/pm にあるんですよ
でもUbuntuには/systemなんてないんですわ
なのでAndroidを極めると"普通の"(POSIX準拠の)LinuxとAndroidで違う場所にあったりそもそも無かったりなんて事があってしまう訳で
今回も他人事とはいえ起こっちゃったんですね
/etc/resolv.conf がねぇぞどこいったと大騒ぎになったんですね。phpからネットにつなぐために
じゃあ指定出来るようにしてしまおう、と。
いや指定できたら脆弱性突けるだろ というお話になりそうですか仕方ないね。突かれて死んで頂こう
だけどこれってphpの管轄じゃないんですわ
その下に居座るlibcっていう奴がハードコーディングしてくれてるわけ
嗚呼、libc触らなアカンのか
今回そのphpはmuslを使ってstatic linkされておりました。archは参考までにaarch64でした
で、muslを改造する訳ですが、沢山あるファイルの中からresolv.confをハードコーディングしているしている部分をすぐ見つけるのは大変なので、GitHubにImportしてから検索掛けたんですな
なんと/src/network/resolvconf.cだけ触れば要件は満たせちゃうんですな。しかもやってることは超単純。
チャチャっと弄って、終わり!
でもコンパイラ無いと意味がないんですな
まぁmusl-cross-makeなんていう便利なツールキットがあったものだ
これに適当にパッチをブチ込めば改造musl搭載コンパイラ作れちゃうんですな
makeすると数十分掛かるので暇つぶしの方法ぐらい探しておこうね
あとは適当にphpをコンパイルして喚いてる何かにぶん投げて終わり
AndroidってLinuxLinux言いますけど魔改造されててPOSIX準拠じゃないんですよ
例えばpmコマンドって知ってます? パッケージインスコするのに使うアレ。
今Nexus 5Xで調べたら /system/bin/pm にあるんですよ
でもUbuntuには/systemなんてないんですわ
なのでAndroidを極めると"普通の"(POSIX準拠の)LinuxとAndroidで違う場所にあったりそもそも無かったりなんて事があってしまう訳で
今回も他人事とはいえ起こっちゃったんですね
/etc/resolv.conf がねぇぞどこいったと大騒ぎになったんですね。phpからネットにつなぐために
じゃあ指定出来るようにしてしまおう、と。
いや指定できたら脆弱性突けるだろ というお話になりそうですか仕方ないね。突かれて死んで頂こう
だけどこれってphpの管轄じゃないんですわ
その下に居座るlibcっていう奴がハードコーディングしてくれてるわけ
嗚呼、libc触らなアカンのか
今回そのphpはmuslを使ってstatic linkされておりました。archは参考までにaarch64でした
で、muslを改造する訳ですが、沢山あるファイルの中からresolv.confをハードコーディングしているしている部分をすぐ見つけるのは大変なので、GitHubにImportしてから検索掛けたんですな
なんと/src/network/resolvconf.cだけ触れば要件は満たせちゃうんですな。しかもやってることは超単純。
チャチャっと弄って、終わり!
でもコンパイラ無いと意味がないんですな
まぁmusl-cross-makeなんていう便利なツールキットがあったものだ
これに適当にパッチをブチ込めば改造musl搭載コンパイラ作れちゃうんですな
makeすると数十分掛かるので暇つぶしの方法ぐらい探しておこうね
あとは適当にphpをコンパイルして喚いてる何かにぶん投げて終わり
乙
コメント
コメントを投稿