まったり技術ブログ

主にWebエンジニア向けのセキュリティ情報

【開発日誌】Konva.Transformerのスタイル変更

f:id:motikan2010:20190127165714p:plain

TL;DR

・「Konva.Transformer」コンストラクタの引数を指定することでデザインを変更可能

背景

 先日開発したWebアプリケーションでは下画像を見たら分かるようにアンカーをドラッグすることによって画像のサイズ・角度を変えられるようになっています。
↓そのWebアプリケーション
『挑戦者が現れました』メーカー

続きを読む

RedshiftのスナップショットをAWS CLIで取得

やりたかったこと

Redshiftで3世代分を残すようなスナップショットの取得方法がやりたかったので、その備忘録。
Bashで実行しています。

実現方法

スナップショットを取得

 "aws redshift create-cluster-snapshot"コマンドを使用することで、Redshiftのスナップショットを取得することが可能です。

aws redshift create-cluster-snapshot --region "ap-northeast-1" \
--cluster-identifier "sample-cluster" --snapshot-identifier "sample-cluster-2018-12-20-00-00-00"

スナップショットの削除

"aws redshift describe-cluster-snapshots"コマンドを使用することで、スナップショットの一覧を取得することができます。
下記の例では、取得した一覧で最古のスナップショットを"aws redshift delete-cluster-snapshot"コマンドで削除しています。

# 指定したクラスターの最古のスナップショットIDを取得する
OLDEST_SNAPSHOT_ID=$(aws redshift describe-cluster-snapshots --region "ap-northeast-1" --cluster-identifier "sample-cluster" --snapshot-type "manual" \
--query "sort_by(Snapshots[*].{SnapshotIdentifier:SnapshotIdentifier, SnapshotCreateTime:SnapshotCreateTime}, &SnapshotCreateTime)[0].SnapshotIdentifier" --output text)

# 取得したスナップショットIDを指定して、スナップショットを削除
aws redshift delete-cluster-snapshot --region "ap-northeast-1" --snapshot-identifier "${OLDEST_SNAPSHOT_ID}"

取得と削除をまとめる

 最終的には下記のようなシェルになりました。スナップショットを取得し、その後に削除するような処理です。
クラスターに紐づくスナップショットが既に3つある場合には、3世代分を残しておくような取得方法になります。

#!/bin/bash

TIMESTAMP=`date '+%Y-%m-%d-%H-%M-%S'`
REGION="ap-northeast-1"
CLUSTER_NAME="sample-cluster"

# スナップショットを取得
aws redshift create-cluster-snapshot --region "${REGION}" --cluster-identifier "${CLUSTER_NAME}" --snapshot-identifier "${CLUSTER_NAME}-${TIMESTAMP}"

# 最古のスナップショットを削除
OLDEST_SNAPSHOT_ID=$(aws redshift describe-cluster-snapshots --region "ap-northeast-1" --cluster-identifier "${CLUSTER_NAME}" --snapshot-type "manual" \
--query "sort_by(Snapshots[*].{SnapshotIdentifier:SnapshotIdentifier, SnapshotCreateTime:SnapshotCreateTime}, &SnapshotCreateTime)[0].SnapshotIdentifier" --output text)
aws redshift delete-cluster-snapshot --region "${REGION}" --snapshot-identifier "${OLDEST_SNAPSHOT_ID}"

参考

redshift — AWS CLI 1.16.79 Command Reference

TLS1.2のみ許可しているWebDAVサーバをマウントできない

 最近、セキュリティ強化の為にTLS1.1以下の接続を不可にするようなサービスが増えてきている。
 勝手にTLS1.2で接続されるだろうとWevDAVクライアントを放置していたが、接続できないという事象が発生した。

検証用WebDAVサーバ

GitHub - motikan2010/WebDAV-Apache-Docker at 20181123

認証情報  :webdav/pass123
ディレクトリ:/wevdav

エラー発生

 TLS1.2のみを許可しているWebDAVサーバをマウントしようとしたら以下のエラーが発生した。

$ sudo mount -t davfs https://127.0.0.1/webdav /media/127.0.0.1
/sbin/mount.davfs: Mounting failed.
SSL handshake failed: SSL alert received: Error in protocol version

原因

 gnutlsパッケージが古いらしい。

GnuTLS - Wikipedia

現在のバージョン確認
$ sudo yum list installed | grep gnutls
gnutls.x86_64                        2.8.5-4.el6_2.2               installed

解決策

 gnutlsパッケージをアップデートすればTLS1.2に対応される。

$ sudo yum -y update gnutls
アップデート後のバージョン
$ sudo yum list installed | grep gnutls
gnutls.x86_64                        2.12.23-21.18.amzn1           @amzn-main
動作確認

検証として利用しているWevDAVサーバの証明書は適当なものを使っているので、警告が出ているが問題なくマウントができていることが確認できる。

$ sudo mount -t davfs https://127.0.0.1/webdav /media/127.0.0.1
/sbin/mount.davfs: the server certificate does not match the server name
/sbin/mount.davfs: the server certificate is not trusted
  issuer:      XX, XX, XX, XX
  subject:     XX, XX, XX, XX
  identity:    XX
  fingerprint: 9b:dc:c1:34:b5:3c:68:10:c7:c5:6d:8f:fa:25:7a:51:46:70:22:ff
You only should accept this certificate, if you can
verify the fingerprint! The server might be faked
or there might be a man-in-the-middle-attack.
Accept certificate for this session? [y,N] y
/sbin/mount.davfs: Warning: can't write entry into mtab, but will mount the file system anyway

# マウントができている
$ df | grep webdav
https://127.0.0.1/webdav  26666664 13333332  13333332  50% /media/127.0.0.1

【随時更新】Webセキュリティ診断ツールのまとめ

f:id:motikan2010:20181020180235j:plain

Webセキュリティ診断ツール比較サイト

sectoolmarket.com

目次

  • Webセキュリティ診断ツール比較サイト
  • 目次
  • GUIアプリケーション型
    • Burp Suite
    • OWASP ZAP
      • zap-cli
    • Fiddler
      • Watcher
      • X5S
  • コンソールアプリケーション型
    • SQLMap
    • NoSQLMap
    • w3af
    • Arachni
    • Scan My Server
    • WhatWeb
    • Skipfish
    • Nikto
    • Vega
    • Grabber
    • Wapiti
    • WebScarab
    • Ratproxy
    • Wfuzz
    • Grendel-Scan
    • WAScan
    • Paros
  • SaaS型
    • VAddy
    • Walti
      • 特徴
      • 診断種別
      • 「Web Server」のスキャン結果
      • 料金
    • Acunetix WVS
    • Qualys - Web Application Scanning
    • UpGuard - Cloud Scanner
      • 診断結果
    • Tinfoil Security
      • 診断結果
        • 診断結果トップ
        • 脆弱性一覧
        • 脆弱性詳細
  • Sucuri
    • 診断結果
  • Web Inspector - Free Website Malware Scanner
    • 診断結果
  • 参考
  • 更新履歴

GUIアプリケーション型

 玄人向けのアプリケーションが多い印象。

Burp Suite

公式 Burp Suite Scanner | PortSwigger
https://portswigger.net/burp
  • 診断を実施する上で便利な拡張プラグインが公開されている。独自に作成・公開することも可能です。 PortSwigger Web Security · GitHub

  • GUIアプリケーション

  • シナリオ型の設定可能

OWASP ZAP

公式 OWASP Zed Attack Proxy Project - OWASP
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
GitHub https://github.com/zaproxy/zaproxy
  • GUIアプリケーション
  • スパイダー型(簡易スキャン)

    zap-cli

  • Cookieの設定はコンテキストを読み込ませる必要があり難しそう

Dockerfile-zap-cli https://gist.github.com/Grunny/6ea8d48d711c6ad28064

Fiddler

 Windows上のデバッグでよく用いられるプロキシ。 今はMac OS向けもあります。
アドオン(Watcher、X5S)を追加することによって診断を行うことが可能になります。

OWASP Fiddler Addons for Security Testing Project - OWASP

Watcher

公式 Watcher: Web security testing tool and passive vulnerability scanner - CodePlex Archive
https://archive.codeplex.com/?p=websecuritytool
  • パッシブスキャン

X5S

公式 x5s - test encodings and character transformations to find XSS hotspots - CodePlex Archive
https://archive.codeplex.com/?p=xss
  • アクティブスキャン
続きを読む

LDAPインジェクションをしたかった話

f:id:motikan2010:20181005002942p:plain

今更ながらLDAPインジェクションがどのようなものなのかの検証をやってみました。

 LDAPインジェクションは脆弱性としてそこそこ有名であり、名前だけは目にすることがあるが、イマイチ実際に検証を行う気になれない脆弱性でもあると思う。特にLDAPの環境構築は手間になりそうだし。
 このままだとLDAPインジェクションを体験しないまま死んでしまってもおかしくないので、DockerでささっとLDAPインジェクションを行える環境を作ってみて、体験してみるとする。

  • 検証環境
    • ホスト
    • コンテナ
  • 構築
    • OpenLDAP
    • LDAPクライアントアプリケーション
      • 1. アプリケーションの用意
      • 2. コンテナの準備
      • 3. コンテナの実行
  • 動作確認
    • OpenLDAPの動作確認
    • 予想外の事態発生
  • 脆弱性の検証
    • 正常系の動作確認
    • 脆弱性の確認
  • ダメな対策
  • 対策
  • まとめ
  • 参考

検証環境

ホスト

  • Docker 18.06.1

コンテナ

  • OpenLDAP 2.4.44
  • PHP 7.0 (php-ldap)
続きを読む