2023年1月21日
※脆弱性診断を行う上でのスキルアップとして検証を行っております。この記事で知り得たことを悪用することは禁止とします。
◦dialog 関数の「closeText」オプションへの入力がエスケープされていないためXSSが出る問題
https://github.com/advisories/GHSA-hpcf-8vf9-q4gj
ソースコードは以下のようにした。
テキストボックスの値を取得して、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は「まぁそうだよね」といった感じ。