Browser Exploit Against SSL/TLSの脆弱性

### Browser Exploit Against SSL/TLS(BEAST)とは
SSL 3.0 の CBC モードを利用している場合、プロトコルに存在している脆弱性が悪用される可能性がある
暗号化ブロックの境界位置をイヴが自由にずらすことで、常に1バイトずつのブルートフォース攻撃が可能になる

### 対策
これらのプロトコルをサポートするサーバで TLS 1.2 または TLS 1.3 を有効にします。
これらのプロトコルをサポートするウェブブラウザで TLS 1.2 または TLS 1.3 を有効にします。

UbuntuではTLS1.2がデフォルトで有効になっている
なるほどー、最新OSを使うのは大事だな

RC4暗号とは?

### RC4暗号とは?
1ビット単位で暗号化・復号が可能なストリーム暗号(stream cipher)で、WEPやWPA、SSL/TLS、sshなど様々なプロトコルの暗号方式の一つとして採用
RC4は脆弱な暗号方式とされており、ブラウザのサポートが順次終了して利用できなくなる

RC4 暗号が暗号化で保護されなくなったため、RC4 のサポートが削除されるという合意が業界全体で存在している

### 無効化の方法
ubuntuの場合
/etc/apache2/site-available/default-ssl.conf

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!3DES:!RC4

sudo systemctl restart httpd.service

2^30.6 byteのキーストリームにより識別可能
2^44.7 byteのキーストリームにより識別可能
などが原因らしい
なるほどー

HttpOnly属性、URLエンコードとは?

### HttpOnly属性
httponly属性を指定すると、HTTPテキスト内のスクリプトからCookieをアクセスできなくなる。
クロスサイト・スクリプティングの脆弱性があっても、その脆弱性によってCookieを盗まれるという事態を防止できる。

php.ini

session.cookie_httponly = 1

### URLエンコードとは
あ -> %E3%81%82 など日本語文字などをURLに使って良い文字の組み合わせに変換すること
パーセントエンコードとも言われることがある
URLデコードは %E3%81%82 -> あ など

X-Content-Type-Options:nosniffとは?

Content-TypeはHTTPレスポンスヘッダに付与する属性
text/plain, text/html, application/json, application/pdfなど

### X-Content-Type-Options:nosniffとは?
ファイルの内容をContent-Type属性から判断してとお願いできる。

phpの場合

header("X-Content-Type-Options: nosniff");

なるほどー やりおる

VPN接続入門

### VPN概要
– 内部ネットワークあどれすは通常インターネットからDNSの名前解決ができない
– 接続先がプライベートアドレスを使っている場合もインターネットを介して接続できない
– 誰でも内部ネットワークに通信できるとセキュリティ上問題
— VPNだと認証後に接続先ネットワークと直接接続されているように使うことができる
— VPNはファイヤーウォールと一緒、個別に構築する場合はDMZに配置する
– 専用線は第三者がアクセスできないので通信の盗聴を予防できる
– VPNであれば既存の公衆回線を利用できる
– 離れた場所にあるネットワークに対し、同じLANにいるようなアクセスが実現できる

### トンネリング
元々のパケットにインターネットで使われるIPアドレスを追加することでインターネットでルーティングできるようになる。受信側では、追加されたIPアドレスを外して送信先のIPアドレスと通信
パケットにアドレス等を追加することをカプセル化と言う
データの暗号化には共通鍵暗号方式がよく使われる(DES, 3DES, RC4, AES, RSAなど)

### VPN接続の認証や共通鍵作成
ID, Passwordハッシュが使われる。MD5, SHA1, SHA2等が使われる
データ等をハッシュを利用してMAC値を生成(HMACと言う)

閉域網はインターネットとは分離隔離された形で閉域網を構築している

なるほどー、閉域網かあ

RSSでiOS developerの新着情報を取得しよう

$feed = file_get_contents('https://developer.apple.com/news/rss/news.rss');
$rss = simplexml_load_string($feed);

$i=0;
foreach($rss->channel->item as $item) {
	if($i < 10) {
		$date = $item->pubDate;
		$title = $item->title;
		$description = strip_tags($item->description);
		$description = substr($description, 0, 150) . "...";
		echo $date . "\n";
		echo $title . "\n";
		echo $description . "\n\n";
	}
	$i++;
}

$ php index.php
Tue, 15 Feb 2022 10:00:46 PST
Enable Family Sharing for your subscriptions
Family Sharing helps people share access to eligible auto-renewable subscriptions with up to five iCloud family members across their Apple devices. Yo…

Tue, 08 Feb 2022 08:40:52 PST
Get ready for App Store sessions
Connect with Apple experts through online sessions February 15 to March 29 to learn about the latest App Store features and get your questions answere…

Thu, 03 Feb 2022 22:35:55 PST
Additional details available for dating apps in the Netherlands
Throughout its history, Apple’s App Store has helped drive innovation in the Netherlands. Today, the iOS app economy supports over 184,000 Dutch job…

Tue, 01 Feb 2022 12:18:13 PST
Updated Apple Developer certificates now available
As a reminder, the intermediate certificate updates are now available for the Apple Push Notification service (APNs) and Developer ID.Apple Worldwide …

Wed, 26 Jan 2022 13:32:49 PST
Apple Search Ads now supports custom product pages
With custom product pages, you can create up to 35 additional versions of your App Store product page to showcase different app features, content, or …

Tue, 25 Jan 2022 16:27:41 PST
New App Store Connect API capabilities now available
The App Store Connect API now offers greater flexibility to automate and customize workflows for your app. With these new capabilities, you can create…

Sat, 22 Jan 2022 09:28:08 PST
Deadline for in-app purchase and account deletion requirements extended
In order to provide more time for you to update your apps, we’ve changed the following requirement deadlines to June 30, 2022.Online group event in-…

Thu, 20 Jan 2022 14:18:26 PST
Custom offer codes for subscriptions now available
Now it’s even easier to acquire, retain, and win back subscribers. In addition to one-time-use codes, you can now create custom codes in App Store Con…

Wed, 19 Jan 2022 07:00:24 PST
Explore the latest videos
Discover how you can add support for in-app events, develop for Apple Watch, learn about Metal for A15, and more.

これをメールでcronで送るか…

ほう

[Swift] URLSessionによるPOST

Button("Place Order"){
	Task {
		await placeOrder()
	}
}

func placeOrder() async {
	guard let encoded = try? JSONEncoder().encode(order) else {
		print("Failed to encode order")
		return
	}

	let url = URL(string: "https://hoge.com")!
	var request = URLRequest(url: url)
	request.setValue("application/json", forHTTPHeaderField: "Content-Type")
	request.httpMethod = "POST"

	do {
		let (data, _) = try await URLSession.shared.upload(for: request, from: encoded)
	} catch {
		print("Checkout failed.")
	}
}

どのようにデータをPOSTしているのか、なんとなくイメージはついた。
ああああ、Swiftやらなきゃあああああああああああああ
どうしよう、これ。。。

[マクロウィルスとは]

特定のページを開くというマクロ

Sub workbook_open()
	ActiveSheet.Hyperlinks.Add(Anchor:=Range("A1"),_
	Address:="",
	_TextToDisplay:="解説ページへ!").Follow
End Sub

上記のように、添付ファイルにマクロを仕込み、ユーザが開封したらマクロが起動する。

WannaCryの例だと、WindowsのMS17-010という脆弱性があるサーバー・パソコンで感染を広げる。この脆弱性は、ファイル共有のしくみ(SMBv1と呼ばれる通信プロトコル)にあり、プリンターの共有やファイル共有で使われている。これが残った状態で、かつインターネットに特定の条件の下で接続したままでいると、外部からの攻撃で侵入されてWannaCryに感染してしまう。

なるほどー

DockerでPHPを動かそう

$ sudo docker run –rm php:8.0-rc php -v
$ echo “ index.php
$ docker run –rm -p 8000:80 -v `pwd`:/var/www/html php:8.0-rc-apache

declare(strict_types=1);

$f = function(int|string $v){
	var_dump($v);
};

$f(100);
$f("abc");
$f(true);
declare(strict_types=1);

final class User {
	public function __construct(
		public int $id,
		private string $name,
	){}
}

var_dump(new User(1, 'Foo'));

ふむー

シェル・FTP接続でファイル転送する方法

putでファイルを転送し、getでファイルを取得する

### コマンドラインでSFTP接続する方法
$ sftp ubuntu@***.**.**.**
sftp> put sample.txt
Uploading sample.txt to /home/ubuntu/sample.txt
sample.txt 100%

### シェルでSFTPする方法
test.shにファイルの転送、取得を書いて、sample.shにftp接続する際のパスワードを書きます。
$ chmod +x test.sh
$ chmod +x sample.sh

test.sh

sftp ubuntu@***.**.***.** << END
get nodesource_setup.sh
put sample.txt
quit
END

sample.sh

#!/bin/bash
expect -c "
  set timeout 3
  spawn ./test.sh
  expect \"ubuntu@***.**.***.**'s password:\"
  send \"hogehoge\n\"
  interact
"

$ ./sample.sh
spawn ./test.sh
ubuntu@***.**.***.**’s password:
Connected to ***.**.***.**.
sftp> get nodesource_setup.sh
Fetching /home/ubuntu/nodesource_setup.sh to nodesource_setup.sh
/home/ubuntu/nodesource_setup.sh 100% 14KB 345.7KB/s 00:00
sftp> put sample.txt
Uploading sample.txt to /home/ubuntu/sample.txt
sample.txt 100% 4 0.3KB/s 00:00
sftp> quit

ほう、これがやりたかった。

sftp ubuntu@hoge.com としてもできるが、passwordの入力は同じか…