Log4jの脆弱性

github.com
金曜にぶっこんでくるとはなかなかです。
Log4jとかメジャーすぎるライブラリでしかも攻撃も簡単とかマジ困る。。

ちょいと調べてましたが、中の仕組みは日本語解説だとこのPageがわかりやすい

今回問題となっているのはJndi Lookupだ。これはJavaJava Naming and Directory Interfaceによる変数名の置換で、ネットワーク越しに変数に相当する値を検索することができる。その中にLDAPも含まれる。例えば"${jndi:ldap://someremoteclass}"のようになる。

問題は、このURLに.を含めることにより、lg4jは任意のリモートのLDAPサーバーからjava classファイルをダウンロードして読み込んでしまうのだ。

https://ezoeryou.github.io/blog/article/2021-12-10-log4j.html

LDAPから読みこむ仕様があったなんて全く知りませんでした。
便利機能は諸刃の剣ですね。ほんと。

1系は単体のLookUpがないのでJMSAppenderがこの引き金になるぽい。

Amazonギフトカードでは予約商品が買えない。

変えないのは良いんだけど、

We are sorry. Something went wrong with your purchase of this product. Any bundle discounts associated with this product will not be applied in this purchase.

っていうエラーメッセージは分かりにくいから改善すべし!!
予約商品はクレジットカードで買って!ってなんで表示しないのか。

リモートデスクトップ先のPCをショートカットキーで素早くロックする

VDIも一般化してきましたし、テレワークでリモートデスクトップ多用していますが、リモートデスクトップで仕事しているとちょっと離席するときとかに「Win+L」でロックできないのでちょっとめんどい。
「Ctrl+Alt+End」でリモート先のセキュリティオプションを呼び出してもいいのですが、間違えてシャットダウンとか選んでしまうと大惨事なので安全に行きたい。
とすると自分でショートカットを作ってとショートカットキー(ホットキー)設定をしちゃいましょう。

シャットダウンするバッチの作成

まずはシャットダウンするバッチを作りましょう
以下のような1行のバッチファイルを作ります。

rundll32 user32.dll, LockWorkStation

試しに動かしてみると無事ロックされるはず。
これを「lock.bat」などとします。

ショートカットキーの割り当て

上記のlock.batのショートカットを作りましょう。そして適当な場所に保存。
 #場所を後で買えるとうごかなくなるはずなのできをつけましょう
ショートカットを右クリックして「プロパティ」→「ショートカット」→「ショートカットキー」で任意のショートカットキーを設定。
例えば「Ctrl+Alt+L」とかを設定。
これで完成

お試し

あとは好きな時に「Ctrl+Alt+L」をおすだけでロック!これでいつでも離席できますね!

エクセルマクロのパスワード

何事においても先達はあらまほしき事なり

「1234」
72文字
6062CC13E913E9EC1714E94DB4B5BB69EAA21E41EBFCFC944A99D12883ECB411D5C4C725
74文字
6260CE844BA14BA1B45F4CA1150CFD13A1426AB619731444BC027169003BC46CF98D2C3F8D
76文字
959739565B76787678898877782825EE08AE357FA52C620973A13594A42DFC132D2E4EE37E44
78文字
0E0CA28EEEF2390F390FC6F13A0F679EAF816FACBCDC6B29C63A6E0CC7935ECD22FE5F1FB29113

https://barihack.net/excel-macropass-hack/

PowerAutomateでエクセルを扱う場合の注意

PowerAutomate便利ですね。
Office/Teamsとあわせてつかうとめちゃ便利です。
特にデータ保存やScriptなどでExcelOnlineと合わせて使うことが多いと思いますが
ExcelOnlineは結果整合性なので注意が必要。

例えば同一フロー内で「Excel→表に行を追加」「Excelスクリプトの実行」を順に行った場合、
前者の結果がが後者で参照できるかはタイミングによります。
Flow内でWaitしてみたり、エクセルを改めて開くようなことをしてみたのですが回避できませんでした。


なので、Excelスクリプトがあるときは行の追加や更新はエクセルスクリプトで一緒にやりましょう。
そうすれば1トランザクションの中なので、うまくいきます。

その他エクセルスクリプトをFlow内から呼び出すときの注意点
docs.microsoft.com

PowerAutomateフローで指定時間Waitする

自動化あるあるですが、PowerAutomateでもフロー内でWaitが必要になるときがあります。
ちょっと前まで「Delay Until」というWait用フローがあったのですがいつの間にか統廃合されていました。
なので、「Do Until」を使って指定秒数Waitしましょう。
f:id:GARAPON:20210830144642p:plain

変数初期化

現在時刻にWaitしたい分だけ加算しましょう。型は文字列型です。

addSeconds(utcNow(),5)

全部UTCのままでやっているのでデバッグのときとか気を付けましょう

Do Until

条件「utcnow()」,「次の値より大きい」、「上記で初期化した変数」
でセットしましょう。
アクションに何も設定していないと最適化でスキップされるので
無駄に足し算をさせるとか、テキストの検索を無駄に行うなどの人畜無害な処理を行わせましょう。
(指定時間Waitでなくてよいならここで1000カウントさせるとかでもよい)

これでOK。
ログでみるとちゃんとWaitされているのがわかりますね。

それでは良い自動化ライフを!

PowerAutomateで文字列編集をする

PowerAutomateで文字列編集するなら圧倒的にエクセルスクリプト
というかPowerAutomateは拡張スクリプトを書く場所がほかにないのでエクセルスクリプトに書くしかないともいえる。
まあスクリプトを一回呼び出せればあとは何でもできるわけです。
エクセルにデータも保存できるし、関数だって使いたい放題。

複数戻り値を戻す場合

というかんじでエクセルスクリプト依存が高まると、複数戻り値がほしくなるので
以下のように対処しましょう。

function main(workbook: ExcelScript.Workbook) {
  let nameArray = ["がらがらさん","ぽんぽんさん"];
  return nameArray
}

みたいなのを作ってからFlowで以下のデータの詰め替えをしてあげる。

    • 変数の初期化 データタイプArray
    • Apply to each 内で 配列変数に追加 

f:id:GARAPON:20210827182652p:plain

    • 関数で抜き出す variables('配列変素')[1] とかのファンクションとして文字列内に埋め込む

f:id:GARAPON:20210827183050p:plain

これで何とかなる。

ちょっとめんどくさいけど皆様の自動化生活に幸あれ!