### 简要描述:
前几天刚爆了5.1的注入漏洞,在对一个站检测时,发现对方使用的是HDWiKi V 4.0.3版,网上关于模板写马的,好像在这个版本用不了,研究了下,就发现了这个上传WEBshell的方法!
### 详细说明:
HDWiKi V 4.0.3 在在线安装插件时,没有对压缩包的文件里面的文件做检测,可以先将马放在压缩包里面,再在线安装!
如图:
[<img src="https://images.seebug.org/upload/201204/15162250c66caad6de2cf0fd0cfa7d7e36e10a21.jpg" alt="" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201204/15162250c66caad6de2cf0fd0cfa7d7e36e10a21.jpg)
安装好后,马马就在plugins下面对应的插件目录里面,具体如何找,你懂的!
HDWiki V5.1 的就简单了,模块下面有个文件管理!直接可以上传的!
[<img src="https://images.seebug.org/upload/201204/15164236ab46f3949bf2e0de339c8a11b8a3e187.jpg" alt="" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201204/15164236ab46f3949bf2e0de339c8a11b8a3e187.jpg)
找回密码链接,可以预测:
这个有点难度,主要有2点: 1,要知道被破账号的邮件地址; 2,要抓准确 服务器的时间戳。 百科本身刷新,cookie里面有一个13位JAVA的时间戳,我测试了几次,去掉后三位,精度也和PHP的不一样。应该有其他方法从百科的里面找到,我没测试。
5.1版本的control/user.php里面的代码
```
$timetemp=date("Y-m-d H:i:s",$this->time); //时间戳
$verification= rand(1000,9999); //4位随机数
$encryptstring=md5($this->time.$verification);
$reseturl=WIKI_URL."/index.php?user-getpass-".$user['uid'].'-'.$encryptstring;
$_ENV['user']->update_getpass($user['uid'],$encryptstring);
```
4.03版本control/user.php里面的代码的如下:
```
$timetemp=date("Y-m-d h:i:s",$this->time);
while (($verification = rand() % 10000) < 1000);
$encryptstring=md5($this->time.$verification);
$reseturl=$this->setting['site_url']."/index.php?user-getpass-".$user['uid'].'-'.$encryptstring;
```
我找的方法可能比较特殊,因为目标站有一个Discuz x2论坛,我用鼠标点击软件,几乎在一秒内,点了找回密码,和刷新了论坛发帖,用论坛发帖里面的时间戳,这样误差几乎为零。
4位的随机码,还是很好破的,下面来图:
[<img src="https://images.seebug.org/upload/201204/1516512202bced8421a5919980d888ba6dee6131.jpg" alt="" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201204/1516512202bced8421a5919980d888ba6dee6131.jpg)
在这次检测中,还发现了4.03版本后台文件任意下载和删除问题,需要管理员权限。对目录限制不严,只是将小点转换成星号,删除文件同理!
index.php?admin_db-downloadfile-/**/**/config*php 下载config.php
index.php?admin_db-remove-/**/**/config*php 删除config.php
5.1版本也存在,不过5.1已经有文件管理,貌似这个就麻烦很多。不过也算一个缺陷吧!
总结:
我对网上说的包含漏洞,没有测试成功,主要原因还是截断,现在能截断的很少。
我对网上说上传任意文件的漏洞,也做了验证,4.0.3 和 5.1 的,没有对5.0的做验证,
发现对文件还是有检测,后缀名突破不了,可能是能力不足的问题吧!
### 漏洞证明:
上传漏洞,我都放在详细说明里面了,有图有真相。
这下面代码是 找回密码的一段
4.03版本control/user.php里面的代码的如下:
```
$timetemp=date("Y-m-d h:i:s",$this->time);
while (($verification = rand() % 10000) < 1000);
$encryptstring=md5($this->time.$verification);
$reseturl=$this->setting['site_url']."/index.php?user-getpass-".$user['uid'].'-'.$encryptstring;
```
暂无评论