这个函数可以接收留个参数:
如不雅应用法度榜样应用了eval()来动态履行一个由你控制的注入字符串,那你就异常荣幸了。在这种情况下,你就可以随便选择你须要注入的代码了:
1.type参数:该参数可所以一个标签名(例如'div'或'span'),或一个component类。然则在React Native中只许可component类。
2.props参数:该参数包含一个传递给新元素的属性列表。
3.children参数:该参数包含新元素的子节点。
如不雅你可以或许控制个中任何一个参数的话,那么这个参数就会变成进击向量。
注入子节点
早2015年3月份,Daniel LeCheminant申报了一个存在于HackerOne的存储型跨站脚本马脚(XSS)。这个马脚的成因如下:HackerOne的Web应用会将用户所供给的随便率性对象算作children参数传递给React.createElement()函数。根据我们的推想,存在马脚的代码可能跟下方给出的代码比较类似:
- * Retrieve a user-supplied, stored value from the server and parsed it as JSON for whatever reason.
- attacker_supplied_value = JSON.parse(some_user_input)
- */
- render() {
- return <span>{attacker_supplied_value}</span>;
- }
这段JSX代码将会被转译成如下所示的JavaScript代码:
- React.createElement("span", null, attacker_supplied_value};
如不雅个中的attacker_supplied_value是一个字符串的话(正常情况),代码将会生成一个正常的span元素。然则在当前版本的ReactJS中,createElement()函数还会接收以children参数情势传递的通俗对象。Daniel经由过程一个JSON编码的对象应用了这个马脚,他在这个对象中包含了dangerouslySetInnerHTML属性,这将许可他向React出现的输出效不雅中注入原始的HTML代码。最终的PoC代码:
相干的马脚缓解筹划可以在React.js的GitHub主页上找到,感兴趣的同窗可以参考。在2015年11月份,Sebastian Markbåge提交了一个修复筹划:为React元素惹人了$$typeof: Symbol.for('react.element')属性。因为无法年腋荷琐注入对象引用全局JavaScript符号,所以Daniel设计的马脚应用技巧(注入child元素)就无法再应用了。
控制元素类型
固然我们不克不及再将通俗对象来算作ReactJS元素来应用了,然则组件注入并非弗成能实现,因为createElement()函数还可以接收type参数中的字符串数据。我们假设开辟者采取了如下所示的代码:
- // Dynamically create an element from a string stored in the backend.
- element_name = stored_value;
- React.createElement(element_name, null);
如不雅stored_value是一个由进击者控制的字符串,那我们就可以创建随便率性的React组件了。然则此时创建的是一个通俗的无属性HTML元素,而这种器械对于进击者来说是没有任何感化的。是以,我们必须要可以或许控制新创建元素的属性才可以。
请大年夜家先看看下面给出的┞封段代码:
- // Parse attacker-supplied JSON for some reason and pass
- // the resulting object as props.
- // Don't do this at home unless you are a trained expert!
- attacker_props = JSON.parse(stored_value)
- React.createElement("span", attacker_props};
如许一来,我们就可以向新元素中注入随便率性属性了。我们可以应用下面给出的Payload来设置dangerouslySetInnerHTML属性:
- {"dangerouslySetInnerHTML" : { "__html": "<img src=x/ onerror=’alert(localStorage.access_token)’
推荐阅读
WannaCry勒索病毒:全球网络攻击的幕后黑客取走比特币赎金
此次的WannaCry病毒在蒲月份时袭击了世界各地,所用的文件加密恶意软件应用泄漏的NSA马脚进击Windows体系。据统计,WannaCry病毒感染了跨越30万台电脑,在美洲、欧洲、俄罗斯和中国令很多>>>详细阅读
地址:http://www.17bianji.com/lsqh/36639.html
1/2 1