SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
OWASP Kyushu Local
Chapter Meeting 7th
Depressed One Step Web scraping
2016年12月14日
@nwiizo
アジェンダ
• はじめに
• OWASP BWAとは
• 情報を取得してみよう
• 自動ログインしてみよう
• ログイン後ページでの情報を取得してみよう
• レスポンスヘッダーのチェック
• まとめ
はじめに
• Python3を使ってハンズオン
自動ログインツールの生成
簡易診断ツールの作成
• くれぐれも自分の管理下以外のサーバには
行わないように
• 猛者が暇しない為の問題も用意しています
OWASP BWAとは
• OWASP Broken Web Applocations Project
• 意図して脆弱なアプリケーションを集めた仮
想マシンを提供しているプロジェクト
• 今回は、ここにあるWebアプリを対象に使う
実行環境(Python3)
• 2020年に公式のPython2の開発/保守が終了
します。
Python3 でやるより2の方が幸せ
になれることが多いけどな!!
Python3に対する勘違い
• モジュールが対応していない。
• 文字や数字の振る舞いが違いすぎない??
• そもそもいろんな挙動が違いすぎる。
Python3でも相当するモジュールは存在する場合が多い
申し訳ありません。
ごめんなさい
OWASP BWAの起動
• ダウンロードしたovaをVirtualboxで起動
• 仮想ネットワークの設定でネットワークを「ホ
ストオンリーアダプター」に変更しておく(外部
に公開ぜず設定自分だけ見れるという)
ブラウザでアクセス
• http://[イメージのIPアドレス]/WackoPickoにア
クセス
• WackoPicko
脆弱性のあるWebサイト
画像の共有
画像の売買
etc
タイトルの取得
• 任意のWebページのタイトルを取得するプロ
グラムの作成
• WackoPickoのタイトルを取得して標準出力に
出力してください
使用するライブラリ
• HTMLの取得のために
urllibを使用する。
• HTMLを解析するために
BeautifulSoupを使用する。
get_header.py
import urllib
from bs4 import BeautifulSoup
url = "http://192.168.16.128/WackoPicko/"
page = urllib.request.urlopen(url).read()
page_title = BeautifulSoup(page,"html.parser")
print(**********.title.string)
任意の情報の取得
• Titleの情報をとってくるスクリプトを書きました。
• 今回は、そのページにあるリンクを集めるス
クリプトを作ってみましょう !!
get_href.py
url = "http://192.168.16.128/WackoPicko/"
page = urllib.request.urlopen(url)
s_p = page.read()
s = BeautifulSoup(s_p,"html.parser")
a_list = s.findAll(“*")
for a in a_list:
print (a.get(“****"))
[追加]入力フォームの探索
• Titleもaタグの情報も集めることができました。
• 次にログインフォームの入力にどのようなも
のがあるのか探索してみましょう
[追加]get_input.py
url = "http://192.168.16.128/WackoPicko/users/login.php"
page = urllib.request.urlopen(url)
s_p = page.read()
s = BeautifulSoup(s_p,"html.parser")
for form in s.findAll(“*****"):
print(form.get(“****"))
自動ログインの実装
• 入力すべき値はすべてわかっている前提で
の自動ログインを行う
HTMLを解析し
て必要な情報
を取得
取得したデータ
を元にログイン
ページにログイ
ン情報を送信
ログイン成功
IDとパスワード
• 最初のページ http://[IP_address]/
の WackoPickoのブックマークをクリック
• ログイン情報などが記載されています。
はい、便利
HTMLの解析(手動)
http://[ip_address]/WackoPicko/users/login.php
<h2>Login</h2> <table style="width:320px" cellspacing="0">
<form action="/WackoPicko/users/login.php" method="POST">
<tr><td>Username :</td><td> <input type="text" name="username" /></td></tr>
<tr><td>Password :</td><td> <input type="password" name="password" /></td></tr>
<tr><td><input type="submit" value="login" /></td><td>
<a href="/WackoPicko/users/register.php">Register</a></td></tr>
送信先
ユーザー名
パスワード
使用するライブラリ
• POSTリクエストを送信するためにrequestsを
使う
• pip3 install requests
Auto_login.py
import requests
payload = {"username":"scanner1","password":"scanner1"}
r = requests.post("http://192.168.16.128/WackoPicko/users/login.php")
print(r.text)
課題1
• BeautifulSoupなどを使ってログインできたか
を確認しましょう
課題2
• ユーザを変えるたびにソースコードの変更を
行うのは手間
• 実行時のコマンドライン引数にログイン情報
を入力できるようにしましょう
まとめ
• Python3を使って特定の情報の取得、ログイ
ンの自動化などWebスクレイピングの入門を
行いました。
• 各種モジュールにはもっと便利な機能があり
自分でカスタマイズしていきましょう。
• くれぐれも管理していないWebサイトに行わな
い事。
謝辞
• 発表の機会を下さった。OWASP Kyushu Chapter
Leader 服部さんには深く感謝申し上げたいと思
います。
• 無粋な学生に快く会場を貸してくださった
BETASOFT 竹田様。会場の設定が何度も間違っ
ていてすみません。心より御礼申し上げます。
• このスライドの多くは実習の時間を使って作成し
ました。共同実習者の水田くんには大変、迷惑
をかけました。

Contenu connexe

Tendances

JAWSUG architecture-crowler
JAWSUG architecture-crowlerJAWSUG architecture-crowler
JAWSUG architecture-crowlerTakuro Sasaki
 
Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会Takuro Sasaki
 
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴Akihiro Kuwano
 
Linuxサーバのセキュリティ対策 part2 - Apache編
Linuxサーバのセキュリティ対策 part2 - Apache編Linuxサーバのセキュリティ対策 part2 - Apache編
Linuxサーバのセキュリティ対策 part2 - Apache編Kazunori Inaba
 
Nagios大好きさんが喋るzabbixとAWS連携の話
Nagios大好きさんが喋るzabbixとAWS連携の話Nagios大好きさんが喋るzabbixとAWS連携の話
Nagios大好きさんが喋るzabbixとAWS連携の話Takayuki Saito
 
Memtest86をかけてみた話
Memtest86をかけてみた話Memtest86をかけてみた話
Memtest86をかけてみた話Yasuaki Sera
 
ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -
ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -
ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -JustSystems Corporation
 
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare verサーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare verSeiichiro Ishida
 
「Windows Azure」 の Mobile Services
「Windows Azure」 の Mobile Services「Windows Azure」 の Mobile Services
「Windows Azure」 の Mobile Servicessnicker_jp
 
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップスScraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップスTakuro Sasaki
 
ZabbixでDockerも監視
ZabbixでDockerも監視 ZabbixでDockerも監視
ZabbixでDockerも監視 Atsushi Tanaka
 
カジュアルに本番データを開発環境に入れる #mysqlcasual
カジュアルに本番データを開発環境に入れる #mysqlcasualカジュアルに本番データを開発環境に入れる #mysqlcasual
カジュアルに本番データを開発環境に入れる #mysqlcasualKazuhiro Oinuma
 
Slackから始めるChatOps
Slackから始めるChatOpsSlackから始めるChatOps
Slackから始めるChatOpsYuto Suzuki
 
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」Atsushi Tanaka
 
JAWS-UG初心者支部 AWS書籍活用術
JAWS-UG初心者支部 AWS書籍活用術JAWS-UG初心者支部 AWS書籍活用術
JAWS-UG初心者支部 AWS書籍活用術Takuro Sasaki
 
ジャストシステムJava100本ノックのご紹介
ジャストシステムJava100本ノックのご紹介ジャストシステムJava100本ノックのご紹介
ジャストシステムJava100本ノックのご紹介JustSystems Corporation
 
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用真治 米田
 

Tendances (20)

さくらのクラウドアップデート情報2016年7月版
さくらのクラウドアップデート情報2016年7月版さくらのクラウドアップデート情報2016年7月版
さくらのクラウドアップデート情報2016年7月版
 
JAWSUG architecture-crowler
JAWSUG architecture-crowlerJAWSUG architecture-crowler
JAWSUG architecture-crowler
 
Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会
 
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
 
BIOSからUEFI
BIOSからUEFIBIOSからUEFI
BIOSからUEFI
 
Linuxサーバのセキュリティ対策 part2 - Apache編
Linuxサーバのセキュリティ対策 part2 - Apache編Linuxサーバのセキュリティ対策 part2 - Apache編
Linuxサーバのセキュリティ対策 part2 - Apache編
 
Nagios大好きさんが喋るzabbixとAWS連携の話
Nagios大好きさんが喋るzabbixとAWS連携の話Nagios大好きさんが喋るzabbixとAWS連携の話
Nagios大好きさんが喋るzabbixとAWS連携の話
 
Memtest86をかけてみた話
Memtest86をかけてみた話Memtest86をかけてみた話
Memtest86をかけてみた話
 
ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -
ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -
ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -
 
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare verサーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver
 
「Windows Azure」 の Mobile Services
「Windows Azure」 の Mobile Services「Windows Azure」 の Mobile Services
「Windows Azure」 の Mobile Services
 
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップスScraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
 
20150523
 20150523 20150523
20150523
 
ZabbixでDockerも監視
ZabbixでDockerも監視 ZabbixでDockerも監視
ZabbixでDockerも監視
 
カジュアルに本番データを開発環境に入れる #mysqlcasual
カジュアルに本番データを開発環境に入れる #mysqlcasualカジュアルに本番データを開発環境に入れる #mysqlcasual
カジュアルに本番データを開発環境に入れる #mysqlcasual
 
Slackから始めるChatOps
Slackから始めるChatOpsSlackから始めるChatOps
Slackから始めるChatOps
 
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」
 
JAWS-UG初心者支部 AWS書籍活用術
JAWS-UG初心者支部 AWS書籍活用術JAWS-UG初心者支部 AWS書籍活用術
JAWS-UG初心者支部 AWS書籍活用術
 
ジャストシステムJava100本ノックのご紹介
ジャストシステムJava100本ノックのご紹介ジャストシステムJava100本ノックのご紹介
ジャストシステムJava100本ノックのご紹介
 
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用
 

En vedette

En vedette (6)

johnson_and_walesuniversity_2016_2017_chapter_plan
johnson_and_walesuniversity_2016_2017_chapter_planjohnson_and_walesuniversity_2016_2017_chapter_plan
johnson_and_walesuniversity_2016_2017_chapter_plan
 
TASKMASTERS COMPANY PROFILE
TASKMASTERS COMPANY PROFILETASKMASTERS COMPANY PROFILE
TASKMASTERS COMPANY PROFILE
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Personality
PersonalityPersonality
Personality
 
Развитие Краснотурьинска
Развитие КраснотурьинскаРазвитие Краснотурьинска
Развитие Краснотурьинска
 
Chariots of Iron
Chariots of IronChariots of Iron
Chariots of Iron
 

Similaire à OWASP_Kyushu_Local_Chapter_Meeting_7th

Challenge PWA!! WordCamp Tokyo 2018
Challenge PWA!!  WordCamp Tokyo 2018Challenge PWA!!  WordCamp Tokyo 2018
Challenge PWA!! WordCamp Tokyo 2018Ryu Shindo
 
診断ツールの使い方(Owasp zapの場合)
診断ツールの使い方(Owasp zapの場合)診断ツールの使い方(Owasp zapの場合)
診断ツールの使い方(Owasp zapの場合)shingo inafuku
 
Pythonで検索エンジン2
Pythonで検索エンジン2Pythonで検索エンジン2
Pythonで検索エンジン2Yasukazu Kawasaki
 
B 2-1 はじめての Windows Azure
B 2-1 はじめての Windows AzureB 2-1 はじめての Windows Azure
B 2-1 はじめての Windows AzureGoAzure
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト健一 辰濱
 
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話Masataka Tsukamoto
 
PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013Ryu Shindo
 
Windows azureって何
Windows azureって何Windows azureって何
Windows azureって何Kana SUZUKI
 
dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料s. kaijima
 
コンテナで作る開発環境 (20161104 CodeIgniter Night)
コンテナで作る開発環境 (20161104 CodeIgniter Night)コンテナで作る開発環境 (20161104 CodeIgniter Night)
コンテナで作る開発環境 (20161104 CodeIgniter Night)智之 大野
 
PWA has come!! / 2019/2/9 ABCD 浜松
PWA has come!! / 2019/2/9 ABCD 浜松PWA has come!! / 2019/2/9 ABCD 浜松
PWA has come!! / 2019/2/9 ABCD 浜松Ryu Shindo
 
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介健一 辰濱
 
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetupS Akai
 
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another ApproachDaisuke Miyakawa
 
PWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringPWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringRyu Shindo
 

Similaire à OWASP_Kyushu_Local_Chapter_Meeting_7th (20)

Challenge PWA!! WordCamp Tokyo 2018
Challenge PWA!!  WordCamp Tokyo 2018Challenge PWA!!  WordCamp Tokyo 2018
Challenge PWA!! WordCamp Tokyo 2018
 
診断ツールの使い方(Owasp zapの場合)
診断ツールの使い方(Owasp zapの場合)診断ツールの使い方(Owasp zapの場合)
診断ツールの使い方(Owasp zapの場合)
 
Pythonで検索エンジン2
Pythonで検索エンジン2Pythonで検索エンジン2
Pythonで検索エンジン2
 
B 2-1 はじめての Windows Azure
B 2-1 はじめての Windows AzureB 2-1 はじめての Windows Azure
B 2-1 はじめての Windows Azure
 
20160218 devsumi
20160218 devsumi20160218 devsumi
20160218 devsumi
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
JavaOne2014_LT
JavaOne2014_LTJavaOne2014_LT
JavaOne2014_LT
 
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話
 
PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013
 
Windows azureって何
Windows azureって何Windows azureって何
Windows azureって何
 
20090828 Webconlocal
20090828 Webconlocal20090828 Webconlocal
20090828 Webconlocal
 
Osoljp201204
Osoljp201204Osoljp201204
Osoljp201204
 
dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料
 
コンテナで作る開発環境 (20161104 CodeIgniter Night)
コンテナで作る開発環境 (20161104 CodeIgniter Night)コンテナで作る開発環境 (20161104 CodeIgniter Night)
コンテナで作る開発環境 (20161104 CodeIgniter Night)
 
PWA has come!! / 2019/2/9 ABCD 浜松
PWA has come!! / 2019/2/9 ABCD 浜松PWA has come!! / 2019/2/9 ABCD 浜松
PWA has come!! / 2019/2/9 ABCD 浜松
 
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
 
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup
 
Bambooによる継続的デリバリー
Bambooによる継続的デリバリーBambooによる継続的デリバリー
Bambooによる継続的デリバリー
 
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
 
PWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringPWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 Spring
 

OWASP_Kyushu_Local_Chapter_Meeting_7th