Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

InnerHTML的XSS攻击漏洞 #474

Open
ITzhao opened this issue Jan 17, 2024 · 5 comments
Open

InnerHTML的XSS攻击漏洞 #474

ITzhao opened this issue Jan 17, 2024 · 5 comments

Comments

@ITzhao
Copy link

ITzhao commented Jan 17, 2024

描述:
DOM型XSS漏洞是基于文档对象模型(Document Object Model)的一种漏洞。它的攻击代码不需要服务器解析响应,而是通过浏览器端的DOM解析触发XSS。客户端上的JavaScript脚本可以访问浏览器的DOM并修改页面的内容,不依赖服务器的数据,直接从浏览器端获取数据并执行。在JavaScript中给DOM的innerHTML属性赋值一个<script>标签,普遍的xss注入点。如果攻击者利用该漏洞进行攻击, 5 可能会有账号或Cookie信息被窃取,从而冒充管理者登录后台进行数据篡改等恶意操作。

检测详情:

3.[文件]/Frameworks/AAInfographics.framework/AAJSFiles.bundle/AAHighcharts.js
[代码]:setElementHTML=function(e,a){e.innerHTML="";a&&(new c(a)).addToDOM(e)};c.prototy
4.[文件]/Frameworks/AAInfographics.framework/AAJSFiles.bundle/AAHighcharts.js
[代码]:t/html");else{var a=x("div");a.innerHTML=c;c={body:a}}var h=function(c,l){var e=
5.[文件]:/Frameworks/AAInfographics.framework/AAJSFiles.bundle/AAHighcharts.js
[代码]:ild(Q);p(b,"dir","ltr");-1===b.innerHTML.indexOf("xmlns")&&p(Q,"xmlns",this.SVG_
6.[文件]:/Frameworks/AAInfographics.framework/AAJSFiles.bundle/AAHighcharts.js
[代码]:th&&e(this.textWidth),r=[b,p,c.innerHTML,this.textWidth,this.textAlign].join(),F
7.[文件]:/Frameworks/AAInfographics.framework/AAJSFiles.bundle/AAHighcharts.js
[代码]:ighcharts-chart",this.index);e.innerHTML="";b.skipClone||e.offsetWidth||this.tem
8.[文件]/Frameworks/AAInfographics.framework/AAJSFiles.bundle/AAHighcharts.js
[代码]:oy&&(a[b]=d.destroy())});c&&(c.innerHTML="",da(c),e&&W(c));T(a,function(b,d){del

解决方案:
开发者自查:如果需要通过innerhtml获取到的页面内容与远程服务器做内容过滤及转换,建议过滤掉非法字符。示例如下:私有静态字符串
htmlEncode(char c){开关(c){ case '&': return "&"; case '<': return "<"; case '>': return """"; case '"': return """; case ' ': return " "; default: return c + ""; }}

@ITzhao
Copy link
Author

ITzhao commented Jan 17, 2024

请教下大神,等保检测结果怎么处理?

@hkfuyy
Copy link

hkfuyy commented Feb 2, 2024

我也遇到了,请问下解决了吗?

@AAChartModel
Copy link
Owner

试试将 AAChartKit-Swift 更新的到最新版本 9.0.0, 之前的版本依赖的 Highcharts 较旧, 更新到最新的应该能够解决问题.

@AAChartModel
Copy link
Owner

我全局搜索检查了一下, AAChartKit-Swift9.0.0版本中, 所依赖的最新版的 Highcharts, 以上高风险 JS 代码已被移除.

参考:

@hkfuyy
Copy link

hkfuyy commented Feb 2, 2024

检测详情:/Payload/.app/Frameworks/AAInfographics.framework/AAJSFiles.bundle/AAHighcharts.js:k){g&&g!==d&&g.destroy&&g.destroy();delete b[k]})},discardElement:function(d){b||(b=w("div"));d&&b.appendChild(d);b.innerHTML=""},erase:function(b,d){for(var g=b.length;g--;)if(b[g]===d){b.s /Payload/.app/Frameworks/AAInfographics.framework/AAJSFiles.bundle/AAHighcharts.js:function(e){q(e,function(a,f){var h=!0;-1===c.allowedAttributes.indexOf(f)&&(h=!1);-1!==["background","dynsrc","href","lowsrc","src"].indexOf(f)&&(h=B(a)&&c.allowedReferences.some(function(c /Payload/.app/Frameworks/AAInfographics.framework/AAJSFiles.bundle/AAHighcharts.js:(new DOMParser).parseFromString(c,"text/html");else{var a=x("div");a.innerHTML=c;c={body:a}}var h=function(c,l){var e=c.nodeName.toLowerCase(),a={tagName:e};if("#text"===e){e=c.textContent|| /Payload/.app/Frameworks/AAInfographics.framework/AAJSFiles.bundle/AAHighcharts.js:function(a){this.container.className="highcharts-container "+(a||"")};a.prototype.getContainer=function(){var a=this.options,b=a.chart,d=ka(),c,e=this.renderTo;e||(this.renderTo=e=b.renderTo /Payload/***.app/Frameworks/AAInfographics.framework/AAJSFiles.bundle/AAHighcharts.js:d[g].destroy();"title subtitle chartBackground plotBackground plotBGImage plotBorder seriesGroup clipRect credits pointer rangeSelector legend resetZoomButton tooltip renderer".split(" ").fo

解决方案:
建议开发者自查:<w:br /gt;1. 使用textContent。<w:br /gt;2. 使用第三方过滤了危险字符的框架,来给DOM复制。例如jquery 的html()函数。

更新最新版本也能解决吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants