sqlmap の実験

AmazonEC2 で公開サーバーを構築する予定ですが、思ったようには
いきません
まずは、初期の状態をどうにかしないとだめです
とりあえず、まずはそれはおいておくとして
この機会にセキュリティに関して勉強をすることにしました
今回は、日経 Linux 2011-09 を使って勉強しています

今回は、SQLインジェクションについてです
SQLインジェクションの脆弱性は
sqlmap を使うことで見つけることができるようです
ubuntu の場合
sudo apt-get -y install sqlmap
でインストール
デモ用サイトへ実行するには
sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1
使い方に関しては
http://charie99.egloos.com/m/category/IT/page/2
が参考になります
SQLインジェクションは
データベースの問い合わせ言語であるSQLを Webさいとへ送りつけ
操作できないデータベースを外部から操る手法です
照合用のプログラムがユーザ名を検索するとき
SQL文で
SELECT * FROM users WHERE user name~’user1′ AND password=’****’;
となります
ユーザ名に ‘ OR 1=–
パスワードなしで認証したときに
ユーザ名で使用可能な文字列以外を破棄する
ロジックを組み込んでいないと
SELECT * FROM users WHERE user name=” OR1=1–‘ AND password=”;
が実行され
すべてのユーザアカウントが閲覧可能になってしまいます
これとは別のもうひとつ興味深いものとして
GPGPUによるハッシュ値の解読なども特集にありましたが
残念ながら、私のマシンではGPUがないので、実践はできませんでした
ちなみに、今回の特集で使われたのは
GeForce GTS 450
になります

CentOS AMI に入れておきたいもの

AmazonEC2 のAMI作成のため
必要となるものをまとまめてみました
アプリケーション
・エディタ
・テキストベースのインターネット
開発
・開発ツール
サーバー
・DNSネームサーバー
ベースシステム
・システムツール
・ベース
・管理ツール
言語
・日本語のサポート
用途としては、公開するWebサーバーとメールサーバーにする予定です
もし、他にも使えるAMIがあれば、先にそちらで実践してみようと思います
EC2用にCentOS5.2のAMIを作ってみた
の記事によりますと
RightScaleがCentOSのイメージを公開しているとのことですので
もしできるようなら、こちらも試して見ようとおもいます

AmazonEC2 CentOS 5.5

SUZ-LAB謹製 CentOS AMI 6.0.0の作り方
でAMIを作成していた情報がありました
micro Instance で
このAMIを使わせていただこうと思います
EC2 Dashboard を選択し
Launch Instance をクリック
ec2_20110925092530.png
どのAMIを使うかを聞かれるので
community AMI タグを 選び
Viewing で 32bit を選択
検索欄へ suz を入力
表示されたAMIから 今回はCentOS5.5 を選びました
ec2-2.png

AmazonEC2 でサーバ構築する場合

最近は停電、震災などが多いため、自宅サーバーだけでなく
クラウドを活用しようと思って AmazonEC2 を始めたのですが
VMware のような仮想マシン作成とは少しことなります
基本的に AMI と呼ばれるものからイメージ(仮想マシン)を
探して、起動する方法
(VMware などのできているマシンをダウンロードして使うようなもの)
これらに関しては
SUZ-LAB謹製 CentOS AMI (6.0.0 64bit ap-northeast-1)
にありますように、バージョンやOS、AMIの番号から調べて選び
起動するというようになります
もしくは、自分でAMIを作成し、そこから作っていく方法になります
本来、この方法を使おうと思っていたのですが
VMware のように、インストールメディアのISOからすすめると
思っていたのですが、実際には、コマンドを使って作り上げるようです
AmazonEC2 CentOS AMI 作成
と検索した結果、いくつかヒットしましたので
メモしておきました
CentOS5のAMIを作ってみる
2011年7月29日金曜日 “SUZ-LAB謹製 CentOS AMI 6.0.0″の作り方
が参考になりそうです

じゃらんAndroid JUnit テストのメモ


を参考に、サンプルアプリを作っていましたが、XMLの解析でつまづきました
ようやく、解決したのでメモしておきます
今回、つまづいたのは102ページのところの
ResultsFactoryTest.java のテストコードの実装のところ
ちなみに、JUnit Test Code のクラスを作成するには
File > new > Package
でパッケージ を作成
ResultsFactoryTest を作成するには
File > new > JUnit TestCode で作成することができます
基本的にはそのままでよいのですが、
int iRet =svr.requestText(“http://jws.jalan.net/APIAdvance/StockSearch/V1/?key=取得したAPIキー&s_area=330202&stay_date=20110129”);
となっているのをそのままにして Android JUnit Test を
行うと、エラーになりました
エラーの内容は
junit.framework.AssertionFailedError: expected:<0> but was:<1230>
at com.sample.data.ResultsFactoryTest.testGetResponse(ResultsFactoryTest.java:26)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
原因を探してみた結果
&stay_date=20110129
の部分は、じゃらんWebサービス 空室検索API
にあるように、
宿泊開始日になります
このままだと、テストするにはすでに日付が過ぎているので、ここを変更します
&stay_date=20110129

&stay_date=20110929
というように、先の日付に変更します
これで一度保存し、
右クリック > Run As > Android JUnit Test を実行すると
再びエラーになります
junit.framework.AssertionFailedError: expected:<537> but was:<1230>
at net.linuxliker.data.ResultsFactoryTest.testGetResponse(ResultsFactoryTest.java:26)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
ただし、今回は 少し変化があります
junit.framework.AssertionFailedError: expected:<0> but was:<1230>
だったところが
junit.framework.AssertionFailedError: expected:<537> but was:<1230>
となっています
これは、105ページに注意書きが書いてあったのですが
引数で指定するリクエストURLに対し
レスポンスが常に同じになるとは限らないというためのようです
今回の数値が expected 537 に対し 1230 となっているのが原因でエラーとなったので
assertEquals(results.getNumberOfResults(), 1230);

assertEquals(results.getNumberOfResults(), 537);
と修正することで。エラーがなくなり、緑色の成功になります
ただ、日付を変更したりした場合、修正が必要になりそうです

AmazonS3 とEC2

仮想マシンをまるごとバックアップするためのメモです
今回は、仮想マシンをまるごとバックアップ
ただしこれは
AWSアカウントの初回サービスの無料ではないので注意
まずブラウザでAWS Management Console を右クリックし
Creat Image EBS AMI
を実行します
Image Name に
保存する名前
とりあえず
ubuntu desk11.04
Image Description には
説明文を書きます
develop test
にしました
ec2-s3.png
これで、仮想マシンが保存されます

x2go クライアントでEC2接続

AmazonEC2 デスクトップ環境構築
で作成した仮想マシンにGUI接続するため
x2go で接続します
前回、仮想マシン側に x2goclient を入れましたが
これは x2goserver の間違いでした
このため、まず
ssh -p22 -i ap-north.pem ubuntu@175.41.199.50
のように、端末からログインし
仮想マシンへログインできたら
sudo apt-get -y install x2goserver
でインストールします
次に、ネットブック(クライアント)側で
x2goclient &
で起動し
ホスト名に AmazonEC2 マシンの public DNS
ユーザ名へ ubuntu
Use RSA/DSA key for ssh connect へ鍵ファイルの場所を指定します
これでログインできるようになります

AmazonEC2 デスクトップ環境構築

東京データセンターで ubuntu 公式イメージを使うなら

http://uec-images.ubuntu.com/releases/11.04/release/

へアクセスし
32bit を選択します
リージョンとイメージの選択になるので
ap-northeast-1
32bit
ebs
を選択
ebs は micro instance を意味します
ap-north.pemという鍵作成 & download
chmod 600 ap-north.pem
でアクセス権限変更
あらかじめ、Security Group で
ssh ポートを開放しておくことが条件です
sshログインは公開鍵認証
ユーザ名はubuntu
-p22 で22ポートを指定
-i 鍵ファイル名
IPは、AmazonEC2 の PublicDNSになります
例えば
ssh -p22 -i ap-north.pem ubuntu@175.41.199.50
ログインしたら
sudo apt-get update
して
デスクトップ環境がほしいので
sudo apt-get -y install ubuntu-desktop
日本語が最初は使えないので
wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add –
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- |sudo apt-key add –
sudo wget https://www.ubuntulinux.jp/sources.list.d/natty.list -O- /etc/opt/sources.list.d/ubuntu-ja-list
sudo apt-get update
sudo apt-get install ubuntu-desktop-ja
次に Unity-2D インストール
(EC2仮想マシンではGPUをつかう通常のUnity は使えない)
sudo apt-get install unity-2d
続いてリモートデスクトップ環境構築
まずはリポジトリ登録
sudo add-apt-repository ppa:x2go/stable
これでGONOMEと unity-2d インストール
sudo apt-get update
sudo apt-get -y install x2gouser x2gognomebindings
ここまでEC2側の設定
次は、クライアントになるネットブックに設定するので
http://www.kkaneko.com/rinkou/linux/x2go.html
を参考に設定
今回、参考資料として

を使いましたが、ここの部分が違っていました
書籍はまちがっていたようです
: が i になっているようです

AmazonEc2 リージョン選択

AmazonEC2 1リージョン選択のときのメモです
ap-southeast
がわからなかったので調べてみました
どうやら、シンガポールらしいとのこと
http://jaws-users.687672.n3.nabble.com/AP-Southeast-td764525.html
が参考になりました
ap-northeast
は東京のこと
http://blog.suz-lab.com/2011/06/asia-pacific-tokyoap-northeast-1us-east.html
が参考になりました
引き続き、AmzonEC2 でのデスクトップ環境構築へ進みます

アプリの外部ストレージ保存の注意点

Android 2.2 以降は、アプリを外部ストレージ
例えば microSD などに保存することができるようになりました
しかし、このアプリの保存についても
注意すべき点があるようです
現在、アプリ作成をしていますが、開発する側でも
いろいろと外部保存については問題があったりします
今回は、
アプリケーションのインストール領域を考える (Dev Guild – App Install Location 和訳
を参考にさせていただきました
とくに気をつけたいのがサービス系です
外部ストレージをアンマウントした時
外部ストレージが再マウントされてもリスタートされないということです