News

Redmineにブログパーツを貼るには

Added by kanata over 4 years ago

Redmineプラグインを作った。
Redmineにブログパーツを貼るには、このプラグインの機能を使えば可能。
可能というか、HTMLとJavaScriptで出来ることなら、なんでもできてしまう。

Redmine RawHtml plugin

RawHtml plugin開発

概要

通常のRedmine(RubyOnRails)は、デフォルトで許可していないタグやスクリプトを表示・実行することができません。
これはセキュリティ上の仕様であり、正しい、あるべき姿です。

ただ、ただどうしても、貼り付けたいブログパーツとか、実行させたいJavaScriptとかがある場合があります。
それを可能にするWikiマクロになります。

使い方

{{rawhtml(ここにhtmlタグ等を書く)}}

{{rawhtml(<div style="color:#ff0000">あああ</div>)}}

あああ

実行例

SlideShareの貼り付け

PHOTOPRESSOの貼り付け

ブログカードの貼り付け(はてなブログ記事紹介ジェネレータを利用)

オシャレ定量化コマンドを作ってオシャレ評価してみた - A painter and a black catオシャレ定量化コマンドを作ってオシャレ評価してみた - A painter and a black cat

ブログカードの貼り付け(Embed Code Generatorを利用)

オシャレ定量化コマンドを作ってオシャレ評価してみた - A painter and a black cat

ダウンロード

このページに添付してあるやつをダウンロードします。

redmine-rawhtml-0.8.0.tar.gz

セットアップ

DBは使ってないので、rakeとかは必要ありません。
ダウンロードファイル解凍後、pluginsフォルダへ。

# mv -i ./rawhtml /opt/alminium/plugins

お使いの環境に合わせて、ファイルの所有者を変更してください。

# cd /opt/alminium/plugins

# chown -R apache:apache rawhtml

注意事項

利用者のセキュリティに対する考慮について

このプラグインは 全てのタグ、全てのスクリプトを許容 します。
そのため、Redmineの登録ユーザは、 XSSCSRF 等の攻撃を容易に仕込む事が出来ます。

まぁ…かなり気の知れた仲間内で使うとか、私みたいに自分用Redmineとして使ってる人向けだと思ってください。

特定のユーザだけ許可するとか、そんな機能を加えればいいんだろうけど。

混在コンテンツのブロックについて

HTTPとHTTPSが入り交ざってコンテンツを配信していることを、混在コンテンツと言います。
最近のほとんどのWebブラウザは混在アクティブコンテンツに対しては自動でブロックします。
これはWebブラウザのセキュリティを考慮した仕様です。

以下の条件で、表示されたり、表示されなかったりします。

ブログパーツがhttp ブログパーツがhttps
表示元のサイトがhttp ○表示できる ○表示できる
表示元のサイトがhttps ×表示できない ○表示できる

これはこのプラグインに限った話ではなく、ブログパーツ一般のお話になります。
うまく表示されないブログパーツについては、混在コンテンツになっていないか確認するのがよいでしょう。

ちなみにニコニコ動画のブログパーツがhttpのみで、このサイトをhttpsでアクセスしていると、うまく表示されないんや。。

オシャレ定量化コマンドを作ってオシャレ評価してみた (2 comments)

Added by kanata over 4 years ago

以下の記事に感動した。

Instagramでオシャレを定量化できると信じて疑わない彼氏の話
http://kuma-no-kara-age.hatenablog.com/entry/2016/02/01/003051

なるほど、、、一理ある。この方法でオシャレが定量化できそうだ。

さっそくコマンドを作ってみる。

getOshareFromInstagram.sh

#!/bin/bash

# オシャレ定量化コマンド

while [ "$1" != "" ]
do
  # instagramからオシャレ指数を取得
  #POINT=`curl -s curl -s https://www.instagram.com/explore/tags/${1}/|tr ',' '\n'|grep count|grep entry_data|awk -F':' '{print $NF}'`
  # 2017.11.05 動かないので直した
  POINT=`curl -s https://www.instagram.com/explore/tags/${1}/|tr ',' '\n'|grep count\" |grep -v likes|grep -v comments|cut -d' ' -f3`
  # 表示位置調整のための小細工
  if [ `echo "${1}"|wc -m` -le 4 ]
  then
    WORD="${1} "
  else
    WORD="${1}"
  fi
  printf "%.15s\t%'10d oshare\n" "${WORD}" "${POINT}"
  shift
done

exit 0

実測

食べ物 で測定

思いつくままに、適当に食べ物を並べてみる。

$ ./getOshareFromInstagram.sh からあげ ハンバーグ パスタ パフェ ラーメン 蟹 パン ケーキ 沢庵
からあげ            76,194 oshare
ハンバーグ         423,013 oshare
蟹                 97,937 oshare
パン            1,001,182 oshare
ケーキ          1,168,795 oshare
沢庵                2,585 oshare

パンやケーキのオシャレ指数が、かなり高い事がわかる。
ケーキは、沢庵と比べ452倍オシャレであることがわかる。

飲み物 で測定

英名での評価も考えられるが、今回は日本固有のオシャレ感覚を考慮し、和名だけで調査した。

$ ./getOshareFromInstagram.sh 水 牛乳 青汁 ビール 焼酎 日本酒 カクテル ワイン
水        155,891 oshare
牛乳       71,144 oshare
青汁       25,258 oshare
ビール    989,409 oshare
焼酎       93,936 oshare
日本酒    564,994 oshare
カクテル    91,766 oshare
ワイン    397,795 oshare

とりあえずビールを飲んでおけば、オシャレであることに疑いの余地はない。
日本酒も意外にオシャレである。

ファッションブランド で測定

ちょっとググッて見つけたブランドを並べてみる。
日本語と英字の両方が存在する場合は、その両方を記載している。

$ ./getOshareFromInstagram.sh ユニクロ UNIQLO GAP しまむら ZARA GU 無印良品 MUJI
ユニクロ           495,885 oshare
UNIQLO           1,207,245 oshare
GAP             1,528,165 oshare
しまむら           529,127 oshare
ZARA            15,303,593 oshare
GU                656,049 oshare
無印良品           443,495 oshare
MUJI               468,137 oshare

ZARAの圧勝である。

ONE PIECE で測定

$ ./getOshareFromInstagram.sh ルフィ ゾロ ナミ ウソップ サンジ チョッパー ロビン フランキー ブルック
ルフィ             26,365 oshare
ゾロ               13,699 oshare
ナミ                7,082 oshare
ウソップ             4,670 oshare
サンジ             11,418 oshare
チョッパー          33,180 oshare
ロビン             10,586 oshare
フランキー           5,865 oshare
ブルック             3,355 oshare

ゾロとサンジがいい勝負であるが、なんとチョッパーが一番オシャレ指数が高い。
これは、同時にカワイイ指数も含まれていると推察される。

山手線駅名 で測定

山手線駅名の駅名で検索してみる。

$ ./getOshareFromInstagram.sh 東京 有楽町 新橋 浜松町 田町 品川 大崎 五反田 目黒 恵比寿 渋谷 原宿 代々木 新宿 新大久保 高田馬場 目白 池袋 大塚 巣鴨 駒込 田端 西日暮里 日暮里 鶯谷 上野 御徒町 秋葉原 神田
東京    2,225,774 oshare
有楽町     72,929 oshare
新橋       82,467 oshare
浜松町     17,881 oshare
田町       13,631 oshare
品川       90,886 oshare
大崎       10,113 oshare
五反田     40,071 oshare
目黒       79,041 oshare
恵比寿    382,042 oshare
渋谷    1,177,357 oshare
原宿    1,317,258 oshare
代々木     82,567 oshare
新宿      941,782 oshare
新大久保   249,498 oshare
高田馬場    69,581 oshare
目白       19,243 oshare
池袋      492,544 oshare
大塚       12,218 oshare
巣鴨       20,336 oshare
駒込       11,560 oshare
田端        3,841 oshare
西日暮里     7,112 oshare
日暮里     21,986 oshare
鶯谷        4,889 oshare
上野      207,968 oshare
御徒町     19,407 oshare
秋葉原    107,962 oshare
神田       43,982 oshare

東京は、地名以外でもヒットしていると思われるので比較対象から除外する。
すると最もオシャレなのは原宿、次いで、渋谷となり、オシャレ指数の精度の高さを確認できる。
ワーストは田端であるが、原宿の1/342のオシャレ指数となり、東京都心でも格差が大きい。

考察

以上の結果から、かなり高い精度でオシャレ指数を測定できる事が確認できた。
ただし、ONE PIECEでの測定結果にみられるように、純粋なオシャレ指数ではなく「オシャレ指数+カワイイ指数」となっている疑いが残る。
カワイイ指数とオシャレ指数の分離については、今後の課題としたい。

Halvar Flake&PPPとローレイヤーな話をしよう に参加しました

Added by kanata over 4 years ago

Halvar Flake&PPPとローレイヤーな話をしように参加させて頂きました。

当日は、以下の錚々たる顔ぶれで御座いました。

  • 中津留勇さん
  • 黒米祐馬さん
  • ucqさん
  • inaz2さん
  • Halver Flakeさん

お話面白かったです。すごい高度でございました。恐るべしローレイヤーの世界。
(ただ英語力がなくてHalver氏のプレゼンで死んだ。英語力が必要だ。。)

ぼっちで突入した私を気遣って対応して頂いたkanaさん、隣の席で私のお相手して頂いたお二方、ありがとうございました。

資料

inaz2さんは、当日のプレゼンスライドを公開されておりました。

ももいろテクノロジー - 「Self Introduction & The Story that I Tried to Make Sayonara ROP Chain in Linux」というタイトルで発表した
http://inaz2.hatenablog.com/entry/2016/04/28/012136

会場

20160427_HalverFlakeAndPPP.jpg

使わない順 業務で使わないコマンド

Added by kanata over 4 years ago

何気に手元にあるCentOSには標準でインストールされていて、そのコマンドの存在を知っている割には1度も使ったことが無いコマンド達。

調査環境

$ cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core) 

コマンドの仕様を解りやすく説明するために、こういうファイルを用意してみた。

$ cat test.txt 
abcdefg
ABCDEFG
1234567

shuf

行をランダムに入れ替える。

$ shuf test.txt 
ABCDEFG
1234567
abcdefg

使わない。

rev

文字の並びが逆になる。

$ rev test.txt 
gfedcba
GFEDCBA
7654321

使わない。

tac

行単位で逆に出力する。

$ tac test.txt 
1234567
ABCDEFG
abcdefg

ログファイル見る時にもしかして使う・・・?
(いや、でもtail使うし。。)

tput

ターミナル出力に色をつける事ができる!
細かい仕様はこのあたりを参照すると良い。

# 文字色を変える
$ tput setaf [0-255]
# 背景を変える
$ tput setab [0-255]
# 太字にする
$ tput bold
# 下線を引く
$ tput smul
# 文字と背景を反転
$ tput rev
# 全部リセット
$ tput sgr0

今までechoで代用してたけど、今後はこれを使おうと思ってる。
ちなみにPOSIXコマンドでもある。


みんなの使わないコマンドを教えて欲しい

決してディスっている訳ではない。むしろ全くの逆である。
シェル芸人としての嗜みである。
他にもあったら教えてほしいです。

SlideShareで公開されているスライドをpdfでダウンロードするコマンド

Added by kanata over 4 years ago

slideshare-dl

SlideShareで公開されているスライドをpdfでダウンロードするコマンド

Installation

ファイルダウンロードして実行権限をつけるだけ

$ wget https://raintrees.net/attachments/download/421/slideshare-dl
$ chmod u+x ./slideshare-dl

動作環境

x86_64のLinuxで動作すると思われます。

以下で、動作確認しました。

  • CentOS Linux release 7.2.1511 x86_64
  • Kali GNU/Linux 2.0 (sana) x86_64

Debian系だと、若干表示がおかしくなることもあるみたいだけど(゚ε゚)キニシナイ!!

Usage

$ ./slideshare-dl [URL]

$ ./slideshare-dl 'http://www.slideshare.net/ShellShoccarJpn/posix-59780910'
initializing..
downloading.. 59 slides
converting.. 恐怖!シェルショッカーのPOSIX原理主義シェルスクリプト.pdf
complete
$ ls
恐怖!シェルショッカーのPOSIX原理主義シェルスクリプト.pdf

URLは'(シングルコーテーション)で囲んでおいた方が無難。

URLの中に & が入っているとシェルがバックグラウンド実行の記号と解釈しちゃうので。。

Specification

一時作業領域として、コマンド実行中にカレントディレクトリに以下のディレクトリが作成されます。
コマンド実行後には、削除されます。

slideshare-dl_temp_[プロセスID]

もし、なんらかの理由でこのディレクトリが残っていたら、不要ですので削除してかまいません。

中の細かい動作

やっている事は、以下と同じでした。

PILOG - slideshareをPDFダウンロードするRubyスクリプト&Webアプリ
http://xoyip.hatenablog.com/entry/2013/12/12/071507

というかこのコマンド作った後に、このrubyスクリプトの存在に気付いた・・・

Background

何故作ったか

SlideShareのダウンロードをするのに、以下のサイトを利用させて頂いておりました。

http://crazyworks.jp/slideshare_downloder/

ダウンロードして、電車の中で読むというのをしておりまして。
なんですが、どうもエラーになるスライドが幾つかありまして、ちょっとしたストレスになっていて、気がついたら自作してた。

オンラインサービスの逆アセンブラ Retargetable Decompiler がヤバイ (3 comments)

Added by kanata over 4 years ago

CTFなんかで、ELFファイルを逆アセンブル・解析する時

  • IDA Proで・・・
  • OllyDbgで・・・
  • pedaで・・・

そんなふうに考えていた時期が俺にもありました。

今日、新しい選択肢が1つ増えました。

オンラインサービスでの逆アセンブラがございました。

Retargetable Decompiler
https://retdec.com/decompilation/

とりあえずコイツを見てくれ

20160410_RetargetableDecompiler_fig1.png

①…ELF形式だけじゃなく、PEやCOFFまで対応
②…対象のCPUアーキテクチャは、Intel x86, ARM, ARM+Thumb, MIPS, PIC32, PowerPC が対象っ・・・!
③…なんと、C言語かPythonのコードで逆コンパイルしてくれるッ!
④…後述のCall GraphがSVGかPNGかPDFで出力可能!!!1

もぅこの時点で結構高機能。

ちょっと解析してみますか。

解析対象として、SECCON2015オンライン予選の問題 Individual Elebin で出されたELFファイルを利用します。

Decompileボタンを押して、しばらく待つと結果が出てきます。
こんな感じ。

20160410_RetargetableDecompiler_fig2.png

では、デコンパイル・逆アセンブル結果を参照してみます。
⑤の所をクリックすると

20160410_RetargetableDecompiler_fig3.png

おぉ・・・左がアセンブラ、右がC言語ですね。鼻血出そう。
次はCall Graphを見てみる。
⑥の所をクリック

20160410_RetargetableDecompiler_fig4.png

グレートですよ・・・こいつぁ・・・
各関数ごとにこれが参照できます。しかもSVGとかPNGでダウンロードできる!writeup書くのすごく捗りそう。

ちなみに⑦の所クリックで全部ダウンロードできる。

20160410_RetargetableDecompiler_fig5.png

キマシタワー(n'∀')η゚・*゚・*

「すべてのUNIXで20年動くプログラムはどう書くべきか」を買った

Added by kanata over 4 years ago

シェル芸人のための本。
これから読みます。楽しみ。

20160409_usp.jpg

すべてのUNIXで20年動くプログラムはどう書くべきか デプロイ・保守に苦しむ エンジニア達へ贈るシェルスクリプトレシピ集
http://richlab.org/coterie/pfb.html

関連

恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
http://www.slideshare.net/ShellShoccarJpn/posix-59780910

恐怖!シェルショッカー1号男
http://www.slideshare.net/tomoyukimatsura/1-php-con2014-40134119

このサーバに来た怪しい通信を晒してみる

Added by kanata over 4 years ago

面白いアクセスログがあったので、このサーバにきた怪しい通信を幾つか晒してみる。

HTTPステータスコード 404(Not Found) のアクセスログより抜粋。
ログは2015年5月~2016年3月までの範囲。

第1位 68492アクセス

/message.php

なんだか解らないが、これがめっちゃくる。
これが何なのかは調べても解らなかった。

アクセス元は、韓国、インド、リビア、ロシア、デンマーク等、様々。

第2位 885アクセス

//message.php

しつこいぐらいくる。
そうか、そんなにmessage.phpが好きか。

アクセス元は、ほぼ、台湾と香港。

なんか中華圏から来てるね。

第6位 230アクセス

/wp-login.php

WordPressのログイン画面かな?
残念!WordPressは入れてないよ。というかPHPも入れてないよ。

アクセス元は、エストニア、スウェーデン、米国 等、様々。

なんか、こっちは欧米っぽいね。

第44位 36アクセス

/gyoumu/gyoumu.asp

これは、まぁ何かの業務システムの存在を確認したいんでしょうね。
asp動かないけどね。

アクセス元は、googlebotやyandex、msnなどの検索エンジンのクローラー。
アクセス元が検索エンジンになるのはなんでだろう?
アクセス元を隠蔽するために検索エンジンを利用してたりするのかしら?

第45位 35アクセス

/gyoumu/gyoumu.aspと入力する。

これが一番ウケたwww
/gyoumu/gyoumu.asp ではない。
/gyoumu/gyoumu.aspと入力する。 だ!wwwwwwwwww

これアレですね。推測の域を出ませんけど

  • 怪しいマニュアル(「脆弱なサーバを探す方法」みたいな?)がありそう。

    • 怪しいマニュアルには、「例えば、/gyoumu/gyoumu.aspと入力する。」 とか書いてある。
  • 怪しいツールがありそう。

    • 怪しいツールの設定ファイルに「/gyoumu/gyoumu.aspと入力する。」と、間違ってコピペしちゃったw

かしらね。こういう事する人のドジっ娘属性が垣間見れて草。

アクセス元は、googlebotやyandex、msnなどの検索エンジンのクローラー。謎。

産学連携セミナー インシデントレスポンス概論 を受講してきました

Added by kanata almost 5 years ago

産学連携セミナー インシデントレスポンス概論 を受講してきました
http://connpass.com/event/24282/

マルウェア感染によるインシデントが発生した際に、マルウェアがどのように動作し、どのような被害を及ぼすのかなどを調査するために必要となるマルウェア動的解析技術を座学、演習を通して学習します。

沢山ツール教えてもらった!
案外、CTFにも役に立つかもしれないから、「お、これは」と思ったものを以下に紹介しますね。

ツール名 概要 ダウンロードURL
Bintext バイナリビューア http://www.mcafee.com/jp/downloads/free-tools/bintext.aspx
PDF Stream Dumper PDFの解析 http://sandsprite.com/blogs/index.php?uid=7&pid=57
OfficeMalScanner Ofiice形式のファイル解析 http://www.reconstructer.org/
CaptureBAT ファイル、レジストリ、ネットワークの挙動を記録。削除されたファイルの保存などが可能 http://www.honeynet.org/node/315
API Monitor WindowsAPIの呼び出し状況を確認。プログラムの挙動を調べる。 http://www.rohitab.com/apimonitor
REMnux マルウェア解析を支援するためのツールが内包されたLinuxディストリビューション https://remnux.org/

大変勉強になりました!
スタッフの皆様、講師のお二方、ありがとうございました。

ノートとマウスパットを頂いております。
ありがたやありがたや。

ちな、食堂
20160227_tuis.JPG

シェルスクリプトの平文パスワードをセキュアにする方法(別解)

Added by kanata almost 5 years ago

余白の書きなぐり - シェルスクリプトの平文パスワードをセキュアにする方法
http://auewe.hatenablog.com/entry/2014/04/14/213319

余白の書きなぐり - シェルスクリプトの平文パスワードをセキュアにする方法(続き)
http://auewe.hatenablog.com/entry/2015/08/03/234325

を拝見して大変感銘を受けました。
昔、似たようなことをしてたので晒してみる。
いや、Linuxのログイン認証の機能を、そのままシェルスクリプトで実現しただけなんだけど。

当時たしか、Webインタフェースから、コマンド実行させるCGIを作ったんだけど、認証をどうするか考えて、こんな感じにしてた。

まず、これだと平文だよね。

#!/bin/sh
PASSWORD="hoge"

平文のまま記録したくないのでハッシュにしてみる。
当時はMD5にしてたんだけど、このご時世なら sha512 がいいでしょう。

$ echo -n "hoge"|md5sum 
ea703e7aa1efda0064eaa507d9e8ab7e  -
$ echo -n "hoge"|sha512sum 
dbb50237ad3fa5b818b8eeca9ca25a047e0f29517db2b25f4a8db5f717ff90bf0b7e94ef4f5c4e313dfb06e48fbd9a2e40795906a75c470cdb619cf9c2d4f6d9  -

md5sumやsha512sumは、一般的なLinuxディストリビューションにはインストールされているので、普通に使えます。
これを比較するだけ

#!/bin/sh
PASSWORD="dbb50237ad3fa5b818b8eeca9ca25a047e0f29517db2b25f4a8db5f717ff90bf0b7e94ef4f5c4e313dfb06e48fbd9a2e40795906a75c470cdb619cf9c2d4f6d9"

USER_INPUT_HASH=`echo -n "${1}"|sha512sum|awk '{print $1}'`

if [ "${PASSWORD}" == "${USER_INPUT_HASH}" ]
then
  echo "認証OK"
else
  echo "認証NG"
  exit 1
fi

さらにここを参照して、パスワード部分を別のテキストファイルに分離すると、よりセキュアに!!!1
(Linuxは昔、/etc/passwordにハッシュされたパスワードが書かれてたんだけど、/etc/shadowに分離した…という同じ歴史を辿ってて草)

同じパスワードなら、同じハッシュ値になって類推できちゃうんじゃないかって?辞書攻撃に弱い?
よろしい、ではソルトを加えましょう!

準備

0から99までのランダムな値をソルトとして指定し、ハッシュを得る。
(ソルトの値の範囲は、もっともっと大きくしてもいいと思う。)

$ echo -n "$(( $RANDOM % 99 ))hoge"|sha512sum 
3ea3e82f7a6ebf35765d098e53a5bea1eba590ee2c04e9dec6c6fdcf57eecfd2d5c3921108e02cb84a33519cefac4a2d627fd2cd085dbab8d9bcddb75457f2aa  -

認証ソースのサンプル

#!/bin/sh
PASSWORD="3ea3e82f7a6ebf35765d098e53a5bea1eba590ee2c04e9dec6c6fdcf57eecfd2d5c3921108e02cb84a33519cefac4a2d627fd2cd085dbab8d9bcddb75457f2aa"

for SALT in `seq 0 99`
do
  USER_INPUT_HASH=`echo -n "${SALT}${1}"|sha512sum|awk '{print $1}'`
  if [ "${PASSWORD}" == "${USER_INPUT_HASH}" ]
  then
    echo "認証OK"
    break
  fi
  if [ "${SALT}" == "99" ]
  then
    echo "認証NG"
    sleep 10 # sleepするのは、ブルートフォース対策
    exit 1
  fi
done

exit 0

結果

$ ./sample.sh fuga
認証NG
$ ./sample.sh hoge
認証OK

1 ... 8 9 10 11 12 ... 15 (91-100/146)

Also available in: Atom

Add picture from clipboard (Maximum size: 100 MB)