学習記録 (2月7-11日 )
2/8
- Ajax (Asynchronous Javascript and XLS) Javascrpitによるサーバとの通信通信、画面遷移を伴わない ブラウザ上は部分的に更新される 画面遷移のタイミング(セキュリティ上の注意点)がわかりづらくなる WebアプリケーションもAjaxを利用するものとしないものがある
- Ajaxは外部サイトとの連携に用いられる
- JSONP:JSONデータのクロスドメインでの通信を可能にする可能にする技術 HTML/XHTMLは"script"タグの異なるドメインでのデータの取得ができる
2/9
- バイナリーセーフ %00のような制御文字をデコードできる。
- パーセントエンコードはマルチバイト文字(日本語)や制御文字を表現できる。%と16進法の文字で表示
- HTTPレスポンスはライン、ヘッダ、ボディで構成されている
- 3xxで示されるステータスコードはレスポンスヘッダの情報をもとにリダイレクトを行う。"Location"ヘッダーへ転送される。
- ヘッダに改行を入れると任意のヘッダを追加することができる。
- SQLインジェクション: アプリケーションが想定しないSQL文を実行させる
- 能動的攻撃: ターゲットのサーバにコードを挿入、サーバの情報の取得、改ざん、不正利用
- 受動的(誘導型)攻撃: サーバ上に罠を仕掛けユーザが実行することを強要する。
- セッション管理 WebアプリケーションあるいはWebサーバレベルで管理番号を発行して、複数に渡る通信間の関連性を実現している。共有するしくみはCookieを利用するものと、GET/POSTパラメタなどを利用するものがある。
- サーバがセッションIDを発行し、自身にも格納する
- トークンと呼ばれるセッション管理用のパラメータがPOSTパラメータでも使われる
- セッション変数:ログインIDを格納する。
- 格納の形態はファイル、データベース、メモリ上で行われる
- セッション変数は認証管理に利用されることが多い。
- 入力値の検証?エスケープ?
- 入力と出力の異なるwebアプリケーションはツールによる脆弱性の自動検知は難しい。
- 脆弱性:セッションフィクセーション、攻撃者がユーザに指定したセッションIDを使わせる。ログインのセッションが乗っ取られてしまうので、多くのサイトでは成功時のIDを破棄して再発行する。
2/11
- Telnet(teletype network) :
- TelnetクライアントとTelnetサーバの間でソケットを開き的ステベースの通信を行う、暗号化せずに通信を行う。同様な機能を持ち、通信内容を暗号化する"SSH"プロトコル
- CGI (Common Gateway Interface) : サーバ上でプログラムを動かすための仕組み、プログラムがその場でページを作って返す。
- telnet (wwwサーバ名) (ポート番号)
- CGIに渡した環境変数がレスポンスのbodyに入って返ってきている。
Mac標準のターミナルからApacheを起動する
Apacheの起動
sudo apachectl start
ブラウザで http://127.0.0.1/ を確認すると、「It works!」と表示されるかと思います。ソース - 起動した後に
telnet localhot 80
で接続できた。 - 同様にtelnet localhot 127.0.0.1 80
でも接続できた。続いて
GET / HTTP/1.1 Host: localhost
を入力して
HTTP/1.1 200 OK Date: Fri, 11 Feb 2022 08:12:32 GMT Server: Apache/2.4.34 (Unix) Content-Location: index.html.en Vary: negotiate TCN: choice Last-Modified: Fri, 09 Sep 2016 05:02:59 GMT ETag: "2c-53c0c0f6366c0" Accept-Ranges: bytes Content-Length: 44 Content-Type: text/html <html><body><h1>It works!</h1></body></html>Connection closed by foreign host.
が戻ってきた。
HTTPSのサイトに接続したい場合はopensslコマンドを利用する
openssl s_client -connect ホスト名:443 -crlf
- 0-1023番までのポートをウェルノウンポートという
- URLの入力、リンクのクリック、テクストの送信これらの操作がGETやPOSTを送信している。
- burp suiteのローカルでブラウザの挙動をモニターすることができる。