### 简要描述: 发现PageAdmin官网更新了版本,就去复查了一下,然后发现厂商的修复手段等于没修复! http://www.pageadmin.net/soft/ 选择本地下载最新版,PageAdmin V3.0.20151204(最后更新时间:2016-03-11) Demo站换了后台地址,这次仅在本地复现。 ### 详细说明: #0 之前的漏洞是这个 http://**.**.**.**/bugs/wooyun-2016-0177673 #1 依旧是/e/master/build_static.aspx 这个页面 原来的代码是这样的: ``` if(IsNum(Ids)){ sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Table+" where html=2 and id="+Ids; } else { sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Table+" where html=2 and id in("+Ids+")"; } ``` 而在最新的版本中被修复为了: ``` if(IsNum(Ids)) { sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Sql_Format(Table)+" where html=2 and id="+Ids; } else { sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Sql_Format(Table)+" where html=2 and id in("+Ids+")"; } ``` #2 审计Sql_Format()函数 ``` private string Sql_Format(string str) { if(str=="" || str==null) { return ""; } str=str.Replace("'","''");...
### 简要描述: 发现PageAdmin官网更新了版本,就去复查了一下,然后发现厂商的修复手段等于没修复! http://www.pageadmin.net/soft/ 选择本地下载最新版,PageAdmin V3.0.20151204(最后更新时间:2016-03-11) Demo站换了后台地址,这次仅在本地复现。 ### 详细说明: #0 之前的漏洞是这个 http://**.**.**.**/bugs/wooyun-2016-0177673 #1 依旧是/e/master/build_static.aspx 这个页面 原来的代码是这样的: ``` if(IsNum(Ids)){ sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Table+" where html=2 and id="+Ids; } else { sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Table+" where html=2 and id in("+Ids+")"; } ``` 而在最新的版本中被修复为了: ``` if(IsNum(Ids)) { sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Sql_Format(Table)+" where html=2 and id="+Ids; } else { sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Sql_Format(Table)+" where html=2 and id in("+Ids+")"; } ``` #2 审计Sql_Format()函数 ``` private string Sql_Format(string str) { if(str=="" || str==null) { return ""; } str=str.Replace("'","''"); str=str.Replace("\"","\""); return str; } ``` 发现仅仅将'替换为了'' 而"还是替换成立" 然而我上个漏洞中的POC中的注入代码中一个单引号都没有,而且页面的越权也没有被修复。本地复现成功 [<img src="https://images.seebug.org/upload/201603/11173137c0a0d4838d97512cd753102de44916e4.png" alt="poc.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201603/11173137c0a0d4838d97512cd753102de44916e4.png) ### 漏洞证明: #0 之前的漏洞是这个 http://**.**.**.**/bugs/wooyun-2016-0177673 #1 依旧是/e/master/build_static.aspx 这个页面 原来的代码是这样的: ``` if(IsNum(Ids)){ sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Table+" where html=2 and id="+Ids; } else { sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Table+" where html=2 and id in("+Ids+")"; } ``` 而在最新的版本中被修复为了: ``` if(IsNum(Ids)) { sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Sql_Format(Table)+" where html=2 and id="+Ids; } else { sql="select id,site_dir,static_dir,static_file,lanmu_id,sublanmu_id from "+Sql_Format(Table)+" where html=2 and id in("+Ids+")"; } ``` #2 审计Sql_Format()函数 ``` private string Sql_Format(string str) { if(str=="" || str==null) { return ""; } str=str.Replace("'","''"); str=str.Replace("\"","\""); return str; } ``` 发现仅仅将'替换为了'' 而"还是替换成立" 然而我上个漏洞中的POC中的注入代码中一个单引号都没有,而且页面的越权也没有被修复。本地复现成功 [<img src="https://images.seebug.org/upload/201603/11173149c13043b8959f2fb61cf9e034087bdb0f.png" alt="poc.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201603/11173149c13043b8959f2fb61cf9e034087bdb0f.png)