Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Powershell のセキュリティ (大都会ver)
Search
tsuda.a
May 16, 2015
Programming
0
31
Powershell のセキュリティ (大都会ver)
Powershell のセキュリティ
tsuda.a
May 16, 2015
Tweet
Share
More Decks by tsuda.a
See All by tsuda.a
バックアップしていますか?
tsudaahr
0
53
RDB以前のファイル設計の話でもしようか(ぇ
tsudaahr
0
61
NPUわからん
tsudaahr
0
110
計算量オーダーの話
tsudaahr
1
290
クラウド初学者が抱える不安について
tsudaahr
0
160
キューとは何か
tsudaahr
0
160
等幅は死んだ(ぇ
tsudaahr
0
33
いくら眺めてもエラーの理由がわからないコードについて
tsudaahr
0
110
何のために文字数をカウントするのか?
tsudaahr
0
42
Other Decks in Programming
See All in Programming
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.2k
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
110
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
1.1k
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
120
色々なIaCツールを実際に触って比較してみる
iriikeita
0
340
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で Gemma 2 × vLLM を動かす。
kohecchi
5
950
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
イベント駆動で成長して委員会
happymana
1
340
Quine, Polyglot, 良いコード
qnighy
4
650
EMになってからチームの成果を最大化するために取り組んだこと/ Maximize team performance as EM
nashiusagi
0
100
Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan
ivargrimstad
0
1k
「今のプロジェクトいろいろ大変なんですよ、app/services とかもあって……」/After Kaigi on Rails 2024 LT Night
junk0612
5
2.2k
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
334
57k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Gamification - CAS2011
davidbonilla
80
5k
Documentation Writing (for coders)
carmenintech
65
4.4k
Code Reviewing Like a Champion
maltzj
520
39k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
110
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Being A Developer After 40
akosma
87
590k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Transcript
Powershell のセキュリティ @tsuda_ahr 2015/5/16 の懇親会
自己紹介
NemCa はこんな感じ 合点がいかない! この人のせい!!
バズったコンテンツ
そして #ハレ婚 の日にこんな記事が出ていてびびる http://internet.watch.impress.co.jp/docs/special/20150307_691658.html
インターネット怖い! ガクガクブルブル (((( ;゚Д゚))
ちなみに私のブログで参照された記事の上位…(汗
さて本題
約半年前、こんな会議が大都会でありました
そこで聞いた Powershell 話。 • ほとんど忘れましたけど。
簡単に言うと • 個人PCのセキュリティが厳しくなりました。 • Windows 7 で UAC で縛り。 しかし
Admin 権限がないので、解除できず。 • UAC を操作するには上司の立ち合いが必要。 • IDE とか入れられないのでプログラム組めない。 • ファイルのコピーすら満足に自動化できんじゃん? • そうだ、Windows なら Powershell があるんじゃね? という流れだった気がする。
やってみよう
.¥test.ps1 を実行
拒否られる
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
やっぱり拒否られる
要するにファイル指定で スクリプト実行するためには 管理者権限を強いられる!
オワタ \(^o^)/
ここまでが、忘年会議での話。
しかし、手入力する分には 実行できるよね?
そう、手入力はOKなわけです。
ということは ファイル指定で実行しなければ いける!
しかし毎度コマンドを 入力するのは面倒すぎる
そこで Function の活用ですよ!
こんな風にスクリプトを function にまとめておく function test() { Get-Process } function test2($a)
{ Write-Host "hello $a!" } test.ps1
Powershell を起動したときにコピペ!
あとは function を実行すれば繰り返しいける!
権限の範囲で 楽しい スクリプトライフを!
・・・
そうじゃない!
やっぱりファイル単位で整理して、 ファイル単位で指定したい!
たとえばこんなスクリプトファイルがある $a = $args[0] Get-Process | ? { $_.CPU -ge
$a } | select Cpu, ProcessName, MainWindowTitle, Path | sort cpu -Descending | ogv getHeavtProcess.ps1 ここがコマンドラインパラメーター
こうあってほしいが・・・
当然、現実はこう (汗
そこでこんなバッチファイルを作る powershell -command "$a=gc -raw %1; $a='{'+$a+"'}'; $b=Invoke-Expression $a; $b.Invoke(%2);
pause;" psexec.bat
するとこう! コマンドプロンプト
バッチファイル経由で Powershell Script が 起動できた!
バッチファイルでやっていること。 Powershell ① -command ② " $a=gc -raw %1; ③
$a='{'+$a+'}'; ④ $b=Invoke-Expression $a;⑤ $b.Invoke(%2); ⑥ pause; ⑦ " ①Powershellを起動する ②-command オプションで Scriptを 渡す。 ③第一引数に指定したファイルをテ キストで読み込む。 ④スクリプトブロックにするので { } で囲む。 ⑤文字列をスクリプトブロックとし て評価する。 ⑥スクリプトブロックの実行。 %2 をパラメーターとして渡す。 ⑦確認待ち。
結果、生成・実行される Powershell Script $a='{$a = $args[0] Get-Process | ? {
$_.CPU -ge $a } | select Cpu, ProcessName, MainWindowTitle, Path | sort cpu -Descending | ogv}'; $b=Invoke-Expression $a; $b.Invoke(10); pause; いわゆる eval
セキュリティとは 一体なんだったのか!
権限の範囲で 楽しい スクリプトライフを!
ここまでが、LT駆動 #10 (2015/1) での話。
ここから OSO 2015 懇親会ver の懇親会
powershell -ExecutionPolicy RemoteSigned そもそも、そんな謎な事しなくても・・・ Powershell の起動オプションを指定でいけるよ!
普通に使える!
いままでの苦労はなんだったのか _| ̄|◦
しかも、3年前にヒーロー島でその話聞いてた(汗 https://twitter.com/tsuda_ahr/status/183366319545131008
結論 みんな Powershell を使おう!
ご清聴ありがとうございました