- 1. 安全なウェブサイトの作り方についてまとめてみた
- 2. PHPセキュリティ入門【これだけはやろう】
- 3. Slackコマンドで社内APIを叩くときに気をつけたこと
- 4. HackTheBox[Nibbles] -Writeup-
- 5. ATECC608A-TNGTLS検証(AWS IoT Multi-Account Registration接続テスト)(ATECC608A-TNGTLS AWS IoT connection test by using Multi-Account Registration)
- 6. 公開鍵暗号方式について
- 7. セキュリティの資格攻略法
- 8. CentOS8でしぶといIPv6を無効にする
- 9. TomcatでAJP 1.3 Connectorの接続をローカルに限定する
- 10. 手当たり次第IPv6を無効にしてみる
- 11. 耐火金庫をハック
- 12. 今更聞けない!Runtime Application Self-Protection(RASP)とは?
- 13. Let’sEncryptでPre-loaded Public Key Pinningに対応しやすい証明書を発行する
- 14. 「DDoS攻撃対策 トリロジー」最終回: HTTP(S)フラッド攻撃の対策
- 15. 【初心者向け】Webアプリケーションにおけるセキュリティを確保する仕組み
- 16. 「DDoS攻撃対策 トリロジー」第二回: 一般的なDDoS攻撃の対策
- 17. サーバーの構築は結局何をしたらいいのか。
- 18. GitHub Code Scanningを試してみた | 脆弱性の自動検出
- 19. Laravelの認証jwt-authにログイン失敗時のロックアウト機能を追加し、セキュリティを高める方法
- 20. セキュリティテスト
安全なウェブサイトの作り方についてまとめてみた
#はじめに
IPAが出している『安全なウェブサイトの作り方』全115ページについて、まとめたものです。以下はIPAのサイト
https://www.ipa.go.jp/security/vuln/websecurity.html内容
1.SQLインジェクション
2.OSコマンド・インジェクション
3.パス名パラメータの未チェック/ディレクトリ・トラバーサル
4.セッション管理の不備
5.クロスサイト・スクリプティング
6.CSRF(クロスサイト・リクエスト・フォージェリ)
7.HTTPヘッダ・インジェクション
8.メールヘッダ・インジェクション
9.クリックジャッキング
10.バッファオーバーフロー
11.アクセス制御や認可制御の欠落##1. SQLインジェクション
悪意のあるリクエストにより、データベースの不正利用を招く可能性があります。例えば、入力フォームにSQL文を含んだ文字列を入力した場合、データ漏洩や改ざんが起る場合があります。
###解決策1
SQL文の組み立ては全てプレースホルダで実装する。
###解決策2
SQL文の組み立てを文字列連結により行う場合は
PHPセキュリティ入門【これだけはやろう】
セキュリティについて、
“安全なWebアプリケーションの作り方 第二版(徳丸浩著)”を読みましたので
アウトプットとして、
細かいところは置いといて
最低限の守るべきところをまとめました!#### 1. POSTの値を使うときはfilter_inputをかける
#### 2. 外部からコードやファイル名を取り込むのは避け、どうしても使うときはエスケープする
#### 3. バリデーションはアプリケーション要件に沿って行うだけでも効果あり
#### 4. eval関数は使わない
#### 5. APIを呼ぶときはMIMEタイプを正しく指定する
#### 6. hiddenパラメータ、クッキーは書き換え可能という前提を持つ
#### 7. htmlspecialchars関数の文字コード指定は必須
Slackコマンドで社内APIを叩くときに気をつけたこと
# はじめに
遠い昔、緊急時などにサーバーへある設定を入れる必要があった際
`会社に来る→サーバにアクセスする→設定を入れる`
という流れを踏む必要がありました。
(当時は社内ネットワークが無く、このような方法を取らざるを得ませんでした)この運用だと緊急にも関わらず、暫定対応ですら数時間後の対応となってしまい困っていました。
その解決のために、SlackとAPIを利用して設定を入れる方式を導入しました。
`Slackでコマンドを叩く → APIサーバーのAPIが叩かれる → 設定が入る。`しかし、Slackから叩ける = どこからでも叩けるサーバーになってしまうのでセキュリティをいかに担保するかが鍵になっていました。
今回は「どうやってセキュリティを担保したか」を説明していきます。# 前提
– 対象サーバーがNode.jsで書かれていること(今回はNode.jsで実装したため、その説明になります)
– Slackのwebhook設定が完了しており、Slackからサーバーを叩けるようになっていること【参考】[Slack での Incoming Webhook の利用](
HackTheBox[Nibbles] -Writeup-
# はじめに
HackTheBoxの攻略などを自分用にまとめたものです。
主に記録用として記しています.
GitHub(ペネトレーションテスト用チートシート):
https://github.com/yukitsukai47/PenetrationTesting_cheatsheet
Twitter:@yukitsukai1731# Nibbles
![スクリーンショット 2020-10-14 002351.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447800/50a7fefb-e919-da66-c7f7-f49fef00098b.png)HackTheBox公式より
Nibbles is a fairly simple machine, however with the inclusion of a login blacklist, i
ATECC608A-TNGTLS検証(AWS IoT Multi-Account Registration接続テスト)(ATECC608A-TNGTLS AWS IoT connection test by using Multi-Account Registration)
#はじめに#
以前、[NXP SE050検証(AWS IoT Multi-Account Registration接続テスト)](https://qiita.com/kmitsu76/items/b7bb4146117a9a59412e)で実施した内容をMicrochip社のATECC608AのTrust and Goという製品で追試する。前回整理したように、自分のCAを構築して、それを登録、共通のCAで認証されたデバイスを接続させるJust In Time Registrationよりも簡素化した、Multi-Account-Registrationを利用し、チップメーカーのCAを利用してデバイスを認証させる流れとなる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387653/39c10f31-f85d-7c99-dc1d-b217f60e1b0c.png)#ATECC608AのTrust and Go#
ATECC608Aは16個のスロットの役割、権限を個別に設定できるC
公開鍵暗号方式について
自分の備忘録のため投稿します。
[参考資料](https://www.amazon.co.jp/dp/B07L9QXX9J/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)## 用語解説
#### 暗号化データを第三者にわからないように変換。
#### 復号
暗号化したデータを元の状態に戻す。#### 公開鍵
データの暗号化をする。世間に公開するための鍵だから公開鍵。
#### 秘密鍵
データを復号化する。他人に見られちゃいけないから秘密鍵。
## 公開鍵暗号方式の流れ
① Aさん(受信者)が公開鍵と秘密鍵を用意。
② 公開鍵を公開して「自分にデータを送るときはこの鍵で暗号化して送ってね」。
③ Bさん(送信者)は Aさんの公開鍵を利用してデータを暗号化。A さんに送信。
④ A さんは B さんから送られてきた暗号化されたデータを自分で持っている秘密鍵で復号化。
セキュリティの資格攻略法
#はじめに
資格の良し悪しは別として、入札などで資格保持者が必要になるケースはそれなりにあると思います。所属する組織によっては受験費用を負担してくれたり、報奨金が出る場合もありますね。ということで、私がこれまでに取得した資格について、資格試験の概要と勉強法についてまとめてみることにしました。なお、中にはかなり前に取得したものもありますので、現在の試験とは異なる可能性があります。
各試験の試験時間、問題数、試験形式、個人的な難易度、試験費用、更新費用をつけています。#情報処理安全確保支援士
更新料が高いだの講習がめんどくさいだのと色々言われていますが、試験費用が安く、国家資格であるというのは他の資格に比べて優位性があると思います。ただし更新費用は非常に高額なので、所属する組織が更新費用を負担してくれる場合にのみ登録した方が良いでしょう。試験合格だけでも十分意味があると思います。
午前Ⅰ、Ⅱ、午後Ⅰ、Ⅱの4種類の試験すべてで60点以上を取る必要があります。午後Ⅰ、Ⅱは筆記試験です。
他の資格とは異なり、過去問が公開されているため対策はしやすいと思います。過去問を数年分解くだけでもかなり
CentOS8でしぶといIPv6を無効にする
#はじめに
掲題の件で、手間取って調べた時のメモ#まずは王道
まずはよくあるパターンとして以下を実行してreboot“`/etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.enp0s3.disable_ipv6 = 1
“`再起動後に“`ip a“`でチェックすると、しぶとく残っている。
“`
$sudo sysctl –all | grep disable_ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.enp0s3.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 1
“`#解決策
Network mangerで管理しているから、効かないらしい。
そこで
TomcatでAJP 1.3 Connectorの接続をローカルに限定する
#やり方
こんな感じでadress属性を指定するとよい。“`server.xml
“`#参考
https://qiita.com/polarbear08/items/f016a0675e6c9637e7b8
手当たり次第IPv6を無効にしてみる
#はじめに
最近は、いろんなサービスがIPv4, IPv6のいずれにも対応している。
今回そんなサービスたちをIPv4のみに限定してしまおう。# Apache(http)
“`/etc/httpd/conf/httpd.conf
#Listen 80
Listen 0.0.0.0:80
“`# Apache(https)
“`/etc/httpd/conf.d/ssl.conf
#Listen 443 https
Listen 0.0.0.0:443 https
“`# ssh
/etc/ssh/sshd_config
“`
#AddressFamily any
AddressFamily inet
“`# MySQL(v8)
“`/etc/my.cnf.d/mysql-server.cnf
[mysqld]
bind-address=127.0.0.1
mysqlx-bind-address = 127.0.0.1
“`# PostgreSQL
“`pg_hba.conf
#host all all
耐火金庫をハック
ネットの世界でもセキュリティは大切ですが、元祖おうちのセキュリティの耐火金庫をハックして見ました。
対象は開いている状態で番号が分からなくなった金庫です。
閉まった状態で番号が分からない金庫は業者さんにお願いするしかないと思います。
扉の裏蓋を開けるとこのようなメカがあります。
![IMG_20201007_103059.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/33b2e70a-7a84-0357-e4aa-b171cce2a754.jpeg)
左の円盤は四枚が重なっています。すべての円盤の切りかきが右にそろうと鍵で開けられる仕組みになっています。ダイアルを右に四回以上回すと一番奥の円盤が回るようになります。一番奥の円盤の切りかきが右になる位置を探します。見つかったら次に、左にダイアルを回して、手前の円盤の切りかきが同じように右になる位置を探します。二つ目も重なったら右回りにダイヤルを回して、手前の円盤も合わせます。最後に左回りに回して、一番手前の円盤の切りかきがあってすべ
今更聞けない!Runtime Application Self-Protection(RASP)とは?
ITが好きでやまない非技術職です。今回は初投稿ですが、私が今注目しているRASPと呼ばれるセキュリティ技術について紹介したいと思います。
#概要
アプリケーションを守る技術としてRASPというのがありますが、RASPとは何でしょうか。その名の通り、アプリケーションまたはアプリケーションを実行するランタイム環境で、セキュリティ機能を導入しリアルタイムでアプリケーションまたはアプリケーション実行環境を脅威から守るセキュリティ技術です。#なぜRASP?
サーバ上で動くアプリケーションであれば、サーバに何かしらのウイルス対策ソフトをインストールし、なんとなくアプリケーションも守られていて、安心してしまいます。
昨今、クラウドやコンテナ技術が注目を浴び、クラウド環境であれば例えばAWSのfargateといった環境では、マネージドサービスでOSレイヤーを制御できない環境も普通になってきました。
マネージドサービスになると、サーバと同等なセキュリティ対策ができないことが多く、WAFでセキュリティ対策を済ませることも多々あります。
WAFは多くの場合ですと、見れるレイヤーが限られていて、対策で
Let’sEncryptでPre-loaded Public Key Pinningに対応しやすい証明書を発行する
# 最初に
本記事ではLet’sEncrypt, PublicKeyPinningに関する解説は省略します。# 通常の証明書発行
通常、(certbotを使った場合)以下のように発行と更新を行うかと思います。“`
# 初回
certbot certonly –server https://acme-v02.api.letsencrypt.org/directory -d “*.foo.com” –manual-public-ip-logging-ok –agree-tos# 更新
certbot renew
“`## 発生する問題
Pre-loaded Public Key Pinningを行いたい場合、クライアント側に公開鍵をもたせる必要があります。
`certbot renew`の場合、このクライアント側に持たせたい公開鍵を毎回作成し直してしまいます。
アプリなどの場合、こうなると証明書が更新されるたびにアプリの更新も必要かつ同時にやらなければPinningに失敗します。# 公開鍵を固定にして証明書を発行
“`
certbot certonly —
「DDoS攻撃対策 トリロジー」最終回: HTTP(S)フラッド攻撃の対策
今回はこの「DDoS攻撃対策 トリロジー」最終回だ。正直、このシリーズは人気がないよう見った。しかし、DDoS攻撃は、今日のあらゆるインターネットサービスにとって主なセキュリティ上の脅威であり、緊急時に対応できるように、事前に何を想定しているかを知っておくことが重要だ。
好かれようが好かれまいが、今回は最終回だった。将来的には、私は多分DDoS攻撃に関連する経験記事をこれ以上書くべきではないだ。それらの多くは、商業秘密だからだ。
今回の記事は、「HTTP(S) フラッド攻撃」の対策ですが、しかし今回は前回の「一般的なDDoS攻撃の対策」よりほとんど簡単だった。まず「HTTP(S) フラッド攻撃」を対策ため、必要のお金は前回より安くだ、そして、規模はともかく、方法は同じいだ。つまり「HTTP(S) フラッド攻撃」の防衛理念は全部同じだ。
同じに、今回の記事は大体は防衛の方法そして理念を教えれだけだ、だから、それが取得してすぐに使用することができるコードやプログラムを提供してない。
では、そろそろ始めましょう。
———————————-
【初心者向け】Webアプリケーションにおけるセキュリティを確保する仕組み
#はじめに
ここ2週間ほどWeb技術に関する入門書を読んでいました。
本日、読了したのでその中でも特に勉強になったと思われるセキュリティに関する部分をザックリとアウトプットしていこうと思います。かなり基礎的な内容になりますので、軽めに読み進めたい初心者向けです。
#Webアプリケーションが守るべきセキュリティとは
大きく分けて3つ。
1. 第三者への情報流出を防ぐこと(機密性)
(情報→Webサービスで利用している個人のログイン情報や、クレジットカード情報など)2. 第三者による情報の改ざんを防ぐこと(完全性)
(情報→Webサービスで利用しているショッピングポイントや口座残高の情報など)3. 適切な権限を持った人間が適切な情報を利用できること(可用性)
(情報→クライアントユーザーに紐づいた情報)これら一つでも許してしまったらユーザーへの信頼を失ってしまうので、セキュリティに対する情報はその都度アップデートして対策を施していく必要がある。
#代表的な攻撃手法と対策
###①SQLインジェクション入力フォームを利用して、データーベースに発行されるSQLを開
「DDoS攻撃対策 トリロジー」第二回: 一般的なDDoS攻撃の対策
今回の記事は「DDoS攻撃対策 トリロジー」第二回です。前回の記事に我々はDDoS攻撃の基本原理が説明したが、だから今回テーマは一般的なDDoS攻撃の対策を教えなさい。
始め前に、何っで今回の記事はただの「一般的なDDoS攻撃」だけを説明する。まず、私で「一般的なDDoS攻撃」の理解はHTTP(S) フラッド攻撃そしてDoS類の脆弱性を利用するの攻撃以外のDDoS攻撃です。その原因は「一般的なDDoS攻撃」と「HTTP(S) フラッド攻撃」の対策方法は全然違う、そして「DoS類の脆弱性を利用するの攻撃」の対策方法は以前の記事にも教えましたから、だからこそう今回記事の対策はただの「一般的なDDoS攻撃」だった。
—————————————-
# 1. DDoS攻撃対策基本理論概要
「一般的なDDoS攻撃」の対策は、その理想な理念は**「防御コストには攻撃コストより低くされる。」**です。
**この防御コストには、CPU、メモリ、サーバーの数など、要求を処理するためのリソース使用のコストが含まれます。 最も簡単な理解は、私がD
サーバーの構築は結局何をしたらいいのか。
#なんの記事?
よくサーバー構築するのですが、そのたびに何したらいいんだっけ。
セキュリティ対策はどうしたらいいんだっけってなるので備忘録の記事です。
間違えている所があればコメントで教えてくださるとありがたいです。
>書いてある情報を鵜呑みにせず、他の記事も調べて実行してくださるとありがたいです。
>また、サーバーのOSやバージョンの差が発生することがあるので細かい情報は「やりたいこと + サーバーのOS」で調べてください。
>あくまでこれは学生プログラマがまとめた忘備録です。##サーバーのOS
サーバーのOSには[WindowsServer](https://www.microsoft.com/ja-jp/windows-server),[macOSserver](https://www.apple.com/macos/server/),[Linux](https://ja.wikipedia.org/wiki/Linux)があります。
サーバーとして人気なのはLinux系統です。
###各OSについて
####WindowsServer
Microsoftが開発しているWin
GitHub Code Scanningを試してみた | 脆弱性の自動検出
# GitHub Code Scanningとは
コードをスキャンして隠された脆弱性を検出してくれる機能です。
GitHub Actionsで実行できる。
今朝twitterで知った。Code scanning is here! ?
Prevent issues in code by automating security as a part of your workflow.
✔️ Free for public repositories
✔️ Developer-first, GitHub native
✔️ Enabled for GitHub Enterprise CloudLearn more! https://t.co/2SSCjb09Il
— GitHub (@github) Laravelの認証jwt-authにログイン失敗時のロックアウト機能を追加し、セキュリティを高める方法
## jwt-authにロックアウト機能を追加してセキュリティを高めましょう。
最近ではフロントエンドとバックエンドを疎結合するのがモダンな実装なので、
フロントエンドはvue,nuxtなどのSPAを使い、LaravelをAPIサーバとして使うパターンが多いのではないでしょうか。nuxtやvueからLaravelにログインする際、APIの認証(ログイン機能)としてよく使われるのがjwt-authです。
https://github.com/tymondesigns/jwt-authJWT認証をLaravelで導入する手順については、いろんな記事があるのですが、
セキュリティを強化するため、jwt-authの標準では搭載されていない**認証に複数回失敗した時のロックアウト機能**を追加しました。## jwt-authの導入
LaravelへのAPI認証実装とjwt-authの導入についてはこれらの記事がわかりやすいです。
APIでログインしてbearerトークンを返し、フロントエンドのSPAなどから利用する時に使います。https://qiita.com/zaburo
セキュリティテスト
#セキュリティ課題
昨今、**個人情報の漏えい**や**顧客情報流出**などのニュースを耳にすることにより、セキュリティ意識の重要性が広く知られるようになった。まずは、**「システム脆弱性」**への対策が直近の優先課題となる。
**脆弱性への対策を考える**
“`lang:感染経路を確認する
1.電子メールの添付ファイル(何気なく開封したファイルが対象になっていることも)
2.ホームページを閲覧
3.USBメモリ
4.ファイル共有ソフト
5.マクロプログラム
6.アプリのインストール
7.ブラウザのアドオン
8.偽サイトへの誘導“`
#なぜ?セキュリティテストを実行するのか
設計上の**欠陥**や**構成エラー**、**ハードウェア**と**ソフトウェアの脆弱性**、**コーディングエラー**、 および**情報システムの能力**に影響を及ぼす可能性があるため。
不正アクセスにより**顧客の個人情報が流出する事故**が多いためである。
また、**十分なセキュリティ対策が実装**されているかどうかを確認する。
結果、脆弱性が見つかり事業の見直し、さらには**企業