bWAPP解法记录——XSS

bWAPP简介

​ bwapp是一个漏洞演示平台,包含100多个漏洞。可以单独下载安装,也可以下载虚拟机版本。此处给出下载地址:

https://sourceforge.net/projects/bwapp/

xss漏洞练习

跨站脚本攻击的终极思路:让输入的内容在页面中回显。


1-XSS - Reflected(GET)

1)low等级 未对输入进行过滤

在用户名和密码输入:<script>alert( 'haha' )</script>

出现两个haha

2)medium等级 因为引号被转义,原方法失效。可用<script>alert( /haha/ )</script>绕过转义,成功显示。

2-XSS - Reflected(POST)

​ 同上

3-XSS - Reflected(JSON)

观察关键源代码

1
2
3
4
5
6
7
8
9
10
11
> <script>
>
> var JSONResponseString = '{"movies":[{"response":"HINT: our master really loves Marvel movies :)"}]}';
>
> // var JSONResponse = eval ("(" + JSONResponseString + ")");
> var JSONResponse = JSON.parse(JSONResponseString);
>
> document.getElementById("result").innerHTML=JSONResponse.movies[0].response;
>
> </script>
>

可使用闭合json语句的方法,输入"}]}';alert(1);</script>,成功显示。

4-XSS - Reflected(AJAX/JSON)

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

使用常用语句 <img src=x onerror=alert(1)>,会出现重复(鬼畜)弹窗。

5-XSS - Reflected(AJAX/XML)

据说使用HTML转义字符或特殊实体可实现,如 &lt;img src=x onerror=alert(1)&gt;,然鹅在我的浏览器并没有成功。。

6-XSS - Reflected(Back Button)

1
2
3
4
5
6
> <p>Click the button to go to back to the previous page:
>
> <input type=button value="Go back" onClick="document.location.href='http://192.168.172.130/bWAPP/xss_ajax_1-1.php'">
>
> </p>
>

根据代码知——可改变onClick的值,用burp将Referer请求头修改为 "><script>alert(/1/)</script>

便会出现弹窗。

7-XSS - Reflected(Custom Header)

根据提示添加名为bWAPP的请求头,输入 bWAPP=<img src=a.png onerror=alert(/haha/)>

成功弹窗~

8-XSS - Reflected (Eval)

1、low

直接修改url里的date,可直接alert

2、medium等级

原方法失效,可利用eval执行函数

eval(String.fromCharCode(97,108,101,114,116,40,47,120,115,115,47,41))

9-XSS - Reflected(HREF)

可知 $name的值由我们输入,所以在投票处闭合a标签:

/><img src=a.png onerror=alert(1)> 成功xss

10-XSS - Reflected(Login form)

强行用sql注入的方法成功登陆,在此union上XSS内容即可:

' or 1=1,"<img src=a.png onerror=alert(/1/)>"

迷之成功。。

11-XSS - Reflected(phpMyAdmin)

遇到难题了= =,google一番后仍未找到可行方法…

12-XSS - Reflected(PHP_SELF)

直接用<script>alert( /haha/ )</script> XSS成功。

关于$_SERVER['PHP_SELF']的安全问题可参考:http://www.cnblogs.com/52php/p/5670068.html

13-XSS - Reflected(Referer)

添加Referer即可

14-XSS - Reflected(User-Agent)

显而易见,修改User-Agent即可

15-XSS - Stored(Blog)

low与medium等级均可通过<script>alert( /haha/ )</script>实现。

16-XSS - Stored(Change Secret)

观察源代码,发现有隐藏的输入框~修改type属性由hidden到text:

在隐藏输入框输入"><script>alert( /haha/ )</script><",提交后html发生变化,同时xss成功。

17-XSS - Stored(Cookies)

尝试了几种方法,没有成功。。

18-XSS - Stored(SQLiteManager)

​ 在原页面看了一会没发现xss点,然后发现SQLiteManager是一个链接。。考点是这个版本的SQLiteManager页面有xss漏洞。

参考文档 在此。

构造url后,网页源码发生变化:

19-XSS - Stored(User-Agent)

抓包修改User-Agent值,为存储型XSS。


结语

​ bwapp内的XSS漏洞覆盖面较广,而一般只要找到攻击点基本就能够成功,所以难度不算太大。多数漏洞在不同的安全等级对输入进行了编码,medium对应addslashes,high等级使用htmlspecialchars。通过这次靶机的练习,我弥补了一些知识的空缺,有不少的收获~