如果您想了解*源码网分享怎么修补XSS跨站脚本攻击的相关知识,那么本文是一篇不可错过的文章,我们将对xss跨站脚本攻击修复进行全面详尽的解释,并且为您提供关于20170812-XSS跨站脚本攻击、De
如果您想了解*源码网分享怎么修补XSS跨站脚本攻击的相关知识,那么本文是一篇不可错过的文章,我们将对xss跨站脚本攻击修复进行全面详尽的解释,并且为您提供关于20170812-XSS跨站脚本攻击、DedeCMS 如何修补XSS跨站脚本攻击、DedeCMS 怎么修补XSS跨站脚本攻击、js中xss跨站脚本攻击的简单理解的有价值的信息。
本文目录一览:- *源码网分享怎么修补XSS跨站脚本攻击(xss跨站脚本攻击修复)
- 20170812-XSS跨站脚本攻击
- DedeCMS 如何修补XSS跨站脚本攻击
- DedeCMS 怎么修补XSS跨站脚本攻击
- js中xss跨站脚本攻击的简单理解
*源码网分享怎么修补XSS跨站脚本攻击(xss跨站脚本攻击修复)
XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,
从而达到恶意 攻击用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。
而本文主要讲的是利用XSS得到目标服务器的 shell。
技术虽然是织梦CMS老技术,但是其思路希望对大家有帮助。
首先打开文件:/include/common.func.php
在文件中加入函数
function RemoveXSS($val) {
$val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
$search = 'abcdefghijklmnopqrstuvwxyz';
$search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$search .= '1234567890!@#$%^&*()';
$search .= '~`";:?+/={}[]-_|\'\\';
for ($i = 0; $i < strlen($search); $i++) {
$val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val);
$val = preg_replace('/(�{0,8}'.ord($search[$i]).';?)/', $search[$i], $val);
}
$ra1 = array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
$ra2 = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
$ra = array_merge($ra1, $ra2);
$found = true;
while ($found == true) {
$val_before = $val;
for ($i = 0; $i < sizeof($ra); $i++) {
$pattern = '/';
for ($j = 0; $j < strlen($ra[$i]); $j++) {
if ($j > 0) {
$pattern .= '(';
$pattern .= '(&#[xX]0{0,8}([9ab]);)';
$pattern .= '|';
$pattern .= '|(�{0,8}([9|10|13]);)';
$pattern .= ')*';
}
$pattern .= $ra[$i][$j];
}
$pattern .= '/i';
$replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2);
$val = preg_replace($pattern, $replacement, $val);
if ($val_before == $val) {
$found = false;
}
}
}
return $val;
}
<p>
搜索 <strong>{dede:global name='keyword'
20170812-XSS跨站脚本攻击
XSS跨站脚本攻击:
XSS 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)缩写混淆, 所以将跨站脚本攻击缩写为XSS。 XSS是攻击者在web页面插入恶意的代码。当用户浏览该页面时,代码执行,从而实现攻击目的。对受害用户可能采取Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击
XSS跨站脚本攻击分为:反射型(非持久型XSS)和持久型
反射型XSS:
用户点击攻击链接,服务器解析响应,在返回的响应内容中出现攻击者的XSS代码,被浏览器执行。这样,XSS攻击脚本被web server反射回来给浏览器执行,所以称为反射型XSS
正常链接,点击后会在页面显示hello 用户名
http://xxx.com?username=yang
页面输出
hello yang
如果我把上面的url变成这样,同时服务器没有做过滤
http://xxx.com?username=<script>alert("xss")</script>
页面会出现弹框,显示xss;可能会在上面的脚本中加入其它更加复杂的脚本
持久型XSS:
攻击者在相关页面输入恶意的脚本数据后,恶意脚本会被存放到到服务器的数据库。用户浏览页面时,会从数据库中查询数据,数据在页面的显示导致该恶意脚本会在页面中执行,浏览此页面的用户就可能受到攻击。这个流程简单可以描述为:恶意用户的Html输入Web程序->进入数据库->Web程序->用户浏览器。
例如: 恶意用户 H 提交评论<script>console.log(document.cookie)</script>
,然后用户 B 来访问网站,这段脚本会在B的浏览器直接执行,恶意用户 H 的脚本就可以任意操作 B 的 cookie,而 B 对此毫无察觉。有了 cookie,恶意用户 H 就可以伪造 B 的登录信息,随意访问 B 的隐私了。而 B 始终被蒙在鼓里。
DOM-based XSS
基于DOM的XSS,也就是web server不参与,仅仅涉及到浏览器的XSS。比如根据用户的输入来动态构造一个DOM节点,如果没有对用户的输入进行过滤,那么也可能导致XSS攻击的产生。
XSS的防御
XSS出现的原因是:在用户输入的时候没有做严格的过滤,在输出内容到浏览器页面时,也没有进行检查、转移和替换
使用XSS Filter
输入过滤,对用户提交的数据进行有效性验证,仅接受指定长度范围内并符合我们期望格式的的内容提交,阻止或者忽略除此外的其他任何数据。
DOM型的XSS型防御:
把变量输出到页面时要做好相关的编码转义工作,如要输出到 <script>中,可以进行JS编码;要输出到HTML内容或属性,则进行HTML编码处理(把"<"和">"转换为html字符实体)。根据不同的语境采用不同的编码处理方式。
将重要的cookie标记为http only
这样的话当浏览器向Web服务器发起请求的时就会带上cookie字段,但是在脚本中却不能访问这个cookie,这样就避免了XSS攻击利用JavaScript的document.cookie获取cookie
CSP: Content-Security-Policy(内容安全策略)
CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。CSP 大大增强了网页的安全性,减少(注意这里是减少而不是消灭)跨站脚本攻击。
启用CSR(内容安全策略)的方法
- 通过 HTTP 头信息的Content-Security-Policy的字段:默认配置下,会阻止内联代码执行,可以在一定程度上防止。这里的内联代码包括:<script>块内容,内联事件,内联样式。
- 通过HTML的<meta>标签。
<meta http-equiv="Content-Security-Policy" content="xxxxxxxxxx">
参考
http://www.imooc.com/article/...
DedeCMS 如何修补XSS跨站脚本攻击
总结
以上是小编为你收集整理的DedeCMS 如何修补XSS跨站脚本攻击全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
Dedecms相关文章
- • 织梦系统 dedecms pagelist标签使用修改
- • 织梦网站怎么搬家?dede系统网站迁移数
- • 织梦网站安全设置方法 dede系统网站如何
- • 织梦自动生成网站地图sitemap代码 dede
- • dede织梦纯代码制作网站地图 dede网站地
- • 织梦dede自定义表单添加全选功能 dede自
- • dede cms如何定时主动推送文章 dede实现
- • 织梦dede发布文章实时api主动推送
- • 织梦dedecms当前位置标签代码的5种写法
- • 织梦DEDECMS文章、栏目页获取当前页面顶
DedeCMS 怎么修补XSS跨站脚本攻击
XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。而本文主要讲的是利用XSS得到目标服务器的shell。技术虽然是老技术,但是其思路希望对大家有帮助。
首先打开文件:/include/common.func.php
在文件中加入函数:
Copy to ClipboardLiehuo.Net Codes引用的内容:[]
function RemoveXSS($val) {
$val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
$search = 'abcdefghijklmnopqrstuvwxyz';
$search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$search .= '1234567890!@#$%^&*()';
$search .= '~`";:?+/={}[]-_|\'\\';
for ($i = 0; $i < strlen($search); $i++) {
$val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val);
$val = preg_replace('/(�{0,8}'.ord($search[$i]).';?)/', $search[$i], $val);
}
$ra1 = array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
$ra2 = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
$ra = array_merge($ra1, $ra2);
$found = true;
while ($found == true) {
$val_before = $val;
for ($i = 0; $i < sizeof($ra); $i++) {
$pattern = '/';
for ($j = 0; $j < strlen($ra[$i]); $j++) {
if ($j > 0) {
$pattern .= '(';
$pattern .= '(&#[xX]0{0,8}([9ab]);)';
$pattern .= '|';
$pattern .= '|(�{0,8}([9|10|13]);)';
$pattern .= ')*';
}
$pattern .= $ra[$i][$j];
}
$pattern .= '/i';
$replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2);
$val = preg_replace($pattern, $replacement, $val);
if ($val_before == $val) {
$found = false;
}
}
}
return $val;
}
然后在过滤显示的标签中修改,例如:/templets/default/search.htm,将:
Copy to ClipboardLiehuo.Net Codes引用的内容:[]
<p>
搜索 <strong>{dede:global name='keyword'/}</strong> 的结果
</p>
修改为:
Copy to ClipboardLiehuo.Net Codes引用的内容:[]
<p>
搜索 <strong>{dede:global name='keyword' function='RemoveXSS(@me)'/}</strong> 的结果
</p>
这样就可以了,当然其他地方显示的地方也可以通过这个函数过滤掉。
本文章网址:http://www.ppssdd.com/code/3832.html。转载请保留出处,谢谢合作!js中xss跨站脚本攻击的简单理解
跨站脚本,称为xss这个术语用来表示一类的安全问题,指攻击者向目标web站点注入html标签或者脚本。
来一个小栗子
substring 返回介于两者之间的字符串,如果省去最后一个参数,则直接以length为填充window.location.search 返回/后面内容包括问号返回?后面的参数window.location.search.substring(1)decodeURIComponent() 将url进行解码,返回解码后的utf-8格式
<!doctype html> <html> <head> <title>这是标题</title> <meta charset="utf-8"> </head> <body> <script> var name = decodeURIComponent(window.location.search.substring(1)); // 获取参数 console.log(name); document.write("hello " + name); </script> </body> </html>
访问
http://abc.com:8887/?%20word
本地使用web server for chrome 完成了本地静态服务器的搭建,使用host文件,强制修改home.abc.com 以及 abc.com 到 127.0.0.1 完成域名的绑定,因为js脚本不能本地运行,因为有跨域的限制
页面输出
hello word
这是一个灰常正经的页面。
下面如果尝试输入
http://abc.com:8887/?%3Cscript%3Ealert("David")%3C/script
事实上现在的浏览器很智能了。。已经自动解析了。已经自动暂停解析了,最后加上%3e被浏览器拦截,自动的,去掉以后,由于容错机制,自动生成
好吧,要不是这容错机制,xss还没法实验呢。无奈,现在太智能了,小白的手法,已经不行喽
<script> </script>
导致能允许。好吧,去掉自动拦截,chrome直接禁止访问了。╮(╯▽╰)╭
使用的是预解析,自动平衡树
此时script变身成为
document.write('hello ' + <script>alert("David")</script)
好啦,接着,就会出现一个弹窗,David
因为使用这个url自动生成一个另外一个脚本,由于浏览器自动的安全措施,所以使用浏览器页面预解析,写一个不平衡的树,初始浏览器解析的时候自动添加上
<script> </script>
事实上,现在基本上都会屏蔽掉的,和sql注入一样,都是非常小白的攻击手法。╮(╯▽╰)╭
导致出现弹窗,xss完成
接着下面还有
使用src引入一个脚本。
http://abc.com:8887/?%3Cscript%20src=%E2%80%9Chttps://1.com/evil.js%E2%80%9D%3E%3C/script%3E
这样就完成了一次脚本的注入。会将其他站点的脚本,通过连接进行注入。
可以对该站点的内容做任何的操作,以及读取cookie,以及将数据发送回站点
事实上浏览器插件就是这样干的,在页面中加入js脚本,通过更改页面的js来达到对页面修改的目的
预防
通过使用replace()全部替换为实体即可。
name = name.replace(/</g, "<"),replace(/>/g, ">");
总结
xss和sql注入一样,属于小白攻击法,要说简单也很简单,要说难也很难
拒绝服务攻击
如果一个站点无限弹窗,浏览器会卡死。包括使用js挖矿什么的,都不值得一提了。
相关文章:
利用PHP编程防范XSS跨站脚本攻击
如何利用php防止XSS跨站脚本攻击
以上就是js中xss跨站脚本攻击的简单理解的详细内容,更多请关注php中文网其它相关文章!
今天关于*源码网分享怎么修补XSS跨站脚本攻击和xss跨站脚本攻击修复的分享就到这里,希望大家有所收获,若想了解更多关于20170812-XSS跨站脚本攻击、DedeCMS 如何修补XSS跨站脚本攻击、DedeCMS 怎么修补XSS跨站脚本攻击、js中xss跨站脚本攻击的简单理解等相关知识,可以在本站进行查询。
本文标签: