Self-XSS利用1
目标应用程序为某在线商店,在其注册页面的First Name
字段中注入XSS Payload:
注册成功,但当我尝试登录我的帐户时,界面显示403 Forbidden
,即无法登录我的帐户。
我很好奇为什么我无法登录我的帐户,所以我打开了 Burp 并拦截了登录请求,以查看为什么会收到403 Forbidden
。我发现客户端向服务器发送了两个请求。
第一个请求中包含我的用户名和密码:
POST /login HTTP/2
Host:www.example.com
loginID=attacker@gmail.com&password=xxx
其返回包为200 OK,返回体中包含我的个人信息,如FirstName
、lastName
、UID
等等。
第二个请求中包含我的个人信息:
POST /login HTTP/2
Host: www.example.com
Data={"eventName":"login","remember":false,"UID":"9046b58424b84429ab2d5b811baer3xc","eventName":"login","remember":false,"UID":"9046b58424b84429ab2d5b811baer3xc","profile":{"firstName":"<svg+Only=1+onload=alert(1)>","lastName":"sssss","email":"attacker@gmail.com","zip":"55551"},"data":{"phoneNumber":"2111443343","smsOptin":false,"dateOfBirth":"11/11/1999","emailOptin":true}}
也许服务器在针对第二个请求的处理上存在WAF,所以firstName
可能是问题所在。
因此我删除了firstName字段
,不出所料,我成功登录了我的账户,并实现了Self-XSS:
我尝试通过缓存中毒或缓存欺骗来实现真实的XSS危害,但无功而返。
接着,我进入账户设置,将我的电子邮箱改为[email protected]
:
更改后,我收到了一份邮件,通知我的个人信息已更改:
点击View web version
,触发XSS Payload。
Self-XSS利用2
接下来是另一个Self-XSS的利用过程。
来到目标应用程序的支持中心:
https://example.com/contact?submitted=false
我在每个字段中都注入XSS Payload,接着提交表单。接着我被重定向至感谢页面https://example.com/contact?submitted=true:
这里并没有预期的结果发生,但引起我注意的是参数?submitted=
,在提交表单之前,它的值是false
,而在提交表单之后,它的值变成了true
。
所以我决定重新访问https://example.com/contact?submitted=false
,如图,成功实现Self-XSS:
这个Self-XSS 需要太多步骤才能复现,要实现步骤的简化,我们就需要找到一种方法,避免提交后被重定向。
一段时间后,我发现在任何字段中输入任何错误的内容,例如在Phone Number
字段中输入 LingLongSec 然后提交表单,便可直接实现Self-XSS,而不发生重定向。
那么如何实现真实的危害呢?在提交表单时,我拦截了请求,再将该POST请求修改为GET请求,我发现服务器能够正确解析该请求,现在只需将一些参数置空即可:
https://example.com/contact?projectTypes=Other&projectTypes=e"><img+src=x+onerror=alert(1)>&default-method=contactMe&FirstName=&LastName=&Email=&PhoneNumber=&CallTime=
原文出处:https://medium.com/@7odamoo/how-could-self-xss-end-with-b8342555cf3e
培训咨询v
bc52013 或 linglongsec
SRC漏洞挖掘培训
往期漏洞分享
玲珑安全B站公开课
https://space.bilibili.com/602205041
玲珑安全QQ群
191400300
玲珑安全交流群
原文始发于微信公众号(玲珑安全):漏洞案例:提升Self-XSS危害
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论