※脆弱性診断を行う上でのスキルアップとして検証を行っております。この記事で知り得たことを悪用することは禁止とします。
概要
◦dialog 関数の「closeText」オプションへの入力がエスケープされていないためXSSが出る問題

CVE-2016-7103 - GitHub Advisory Database
jQuery-UI vulnerable to Cross-site Scripting in dialog closeText
脆弱性動作検証
ソースコードは以下のようにした。
テキストボックスの値を取得して、diglogのcloseTextオプションにそのまま渡す。
pocが見えないようにtypeをpasswordにしておく。
<script>
$(function(){
$('#button1').click(function(){
var eletemnt = document.getElementById('CVE20167103_text');
$('#dialog1').dialog({
closeText:eletemnt.value,
});
});
});
</script>
<div id="dialog1" title="CVE-2016-7103" style="display:none">
<p>CVE-2016-7103</p>
</div>
<input type="password" id="CVE20167103_text">
<button id="button1">CVE-2016-7103</button>
実行した結果。javascriptが実行されていた。

修正後動作検証
「”><」などがエスケープされていた。

ソースコード差分

感想
実施する順番をミスったか、最新のものから検証してしまったので古いCVEは「まぁそうだよね」といった感じ。
コメント