◎◆php.ini
expose_php
error_reporting
display_errors エラーメッセージの表示抑止
display_startup_errors
default_charset 文字コードの指定
date.timezone
mbstring.language
PHP7.4 ぼくのかんがえたさいきょうのphp.ini - Qiita
welcome.conf
icons
Options Indexes FollowSymLinks
/etc/httpd/conf.d/notrace.conf:TraceEnable off
x frame options
ServerTokens ProductOnly
攻撃を受ける前に見直すApacheの基本的なセキュリティ10のポイント - レムシステム エンジニアブログ
x content type options nosniff
大規模サービスのセキュリティ対策用HTTPヘッダーまとめ - Qiita
Options -Indexes ディレクトリリスティング無効化
session.use_only_cookies = 1
session.cookie_httponly = 1
session.use_strict_mode = 1
Header unset "X-Powered-By"
LimitRequestBody 10485760
LimitRequestFields 50
core - Apache HTTP サーバ バージョン 2.4
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
https://agohack.com/can-nott-upload-files-apache24-mod_reqtimeout/
Apache, PHP, MySQL セキュリティ設定メモなど : 犬ターネット
◎◆.env
◎◆OSコマンドをphp中で使用しない
◎ evalを使わない
◎ system、execは使わない headerは要注意
◎ refererを使ったリダイレクトはどこで使ったか?⇒ 2箇所。問題なし。
◎ requireとincludeの箇所にトラバーサル攻撃の可能性 basementを使用
◎ blade内のimg等に対して../../トラバーサル攻撃、パス指定してる箇所が危ない
◎ urlでディレクトリ名を指定 ⇒ 指定していない
◎ json decodeなどdecode系を外部入力値に対して使わない
◎◆sqlインジェクション
◎'; delete from users --
◎' or 1 /*
◎sqlをrawで検索
△sqlの複文の実行を禁止
△sqlを静的プレースホルダにする
◎◆ヌルバイト攻撃 %00
http://hdg?p=1%00
https://qiita.com/tabo_purify/items/d7a67709f54865df891e
◎◆制御文字のチェック
¥n ¥t ¥0 %00
◎◆URL
Get値 keyword=<script>alert(1)</script>
Get値 url=javascript:alert(a)
リダイレクトとクッキー付与でhttpレスポンスヘッダが使われている URL中の改行がそのまま使われるのは良くない refererを使っているところ
◎◆xss
◎bladeで {!! としているところ
◎xmlを使わず、jsonを使う
◎htmlspecialcharsにent_quotesが入ってるか
styleタグの中に、@import()でjavascript実行可能
jsのlocation.hrefに任意の文字列でxss危険
ajaxのinnerHTMLとdocument.writeはscriptが動く
strip_tagsにjavascriptを埋め込める
$()の引数を動的に生成は要エスケープ
◎◆最後
httpにtelnetで接続 '<>
外部からfile get 、putできないこと
◎OWASP ZAPでテスト
脆弱性診断ツール OWASP ZAP vs 脆弱性だらけのWebアプリケーションEasyBuggy - Qiita
VAddy料金プラン | VAddy クラウド型Web脆弱性診断ツール
◎ ◆調査に使用する文字列
\n<\0>\t';,%00)(!"#$%&'()=~|{`*}_?
\([
?
'; UPDATE TABLENAME SET COLLUMNAME = 99 WHERE COLLUMNAME = 1 --
' or 1 /* UPDATE `TABLENAME` SET COLLUMNAME = 99 WHERE `COLLUMNAME` = 1 --
<a onclick="window.alert('アラートの表示3');">テスト3</a>
<sup onclick="window.alert('アラートの表示4');">テスト4</sup>
<sub onclick="window.alert('アラートの表示5');">テスト5</sub>
<u onclick="window.alert('アラートの表示6');">テスト6</u>
<span onclick="window.alert('アラートの表示7');">テスト7</span>
<br onclick="window.alert('アラートの表示8');">テスト8</br>
<a href="javascript:(alert('アラートの表示8');)">クリック</a>
<script type="text/javascript">
function ShowAlert() {
alert("aaaaa");
}
</script>
<a href="javascript:void(0)" onclick="ShowAlert();">bbbbbbbbb</a>
javascript:OnLinkClick(window.alert('アラートの表示'););
https://urlname.com/¥00aiueo04/
<button onclick="document.getElementById('dom_access_1').innerHTML='クリックでinnerHTML変更'">テスト</button>
http://yahoo.co.jp/@import(javascript:alert('ようこそ私のページへ'))
keyword=<sup script>alert(1)</sup>
@import()
javascript:alert(a)
a@a.jphttp://hdg?p=1%00
a@a.jphttp://hdg?p=1
http://yahoo.co.jp?p=1"<script>alert(12)</script>
a@a.jphttp://hdg?p=1
a@a.jphttp://hdg?p=1