漏洞发现-web应用之漏洞探针利用修复

漏洞发现-web应用之漏洞探针利用修复
Yatming的博客漏洞发现-web应用之漏洞探针利用修复
原理分析
- 已知 CMS
- 如常见的 dedecms.discuz,wordpress 等源码结构,这种一般采用非框架类开发,但也有少部分采用的是框架类开发,针对此类源码程序的安全检测,我们要利用公开的漏洞进行测试,如不存在可采用白盒代码审计自行挖掘。(1.在漏洞平台如seebug、cnvd搜索关键字2.使用工具框架如cmsscan、wpscan3.代码审计(函数,功能,框架三个方面))
- 开发框架
- 如常见的 thinkphp,spring,flask 等开发的源码程序,这种源码程序正常的安全测试思路:先获取对应的开发框架信息(名字,版本),通过公开的框架类安全问题进行测试,如不存在可采用白盒代码审计自行挖掘。
- 未知 CMS
- 如常见的企业或个人内部程序源码,也可以是某 CMS 二次开发的源码结构,针对此类的源码程序测试思路:能识别二次开发就按已知 CMS 思路进行,不能确定二次开发的话可以采用常规综合类扫描工具或脚本进行探针,也可以采用人工探针(功能点,参数,盲猜),同样在有源码的情况下也可以进行代码审计自行挖掘。
已知CMS
如果是已知CMS的情况,可以先从上一讲说过的一些方式,漏洞平台等之类的直接查找对应的漏洞,网上还有一些针对某一个cms的工具,这个不是每一个cms都有,看情况来的,最后就是代码审计,就是自己从代码中进行分析
CMSScan扫描工具介绍
博客链接:
1 | https://www.freebuf.com/sectool/190361.html |
工具下载链接:
1 | https://github.com/ajinabraham/CMSScan |
未知CMS
如果是这种情况的话,还是用工具去扫描,上面是已知CMS然后是针对性的去找漏洞,这种是不知道所以就直接用工具扫描,如果可以扫出cms的类型,这样就可以用已知CMS的方法来进行下一步测试
除了工具直接扫描之外,人工的方式就是从网站本身的应用方向下手,比如之前说过的如果是一个购物网站在处理订单的时候可能就会有逻辑漏洞等等之类的,或者是从URL中,这个就像是文件包含,文件下载那个章说过的,网站的URL的传参值,考虑是否可控等一些问题,最后就是盲猜了,也就是全部都测试一遍,当然过程很慢
本地CMS演示
使用thinkphp框架报错后的回显页面
接下来就可以用上面说过,直接用对应的工具,找一个专门针对thinkphp的工具,对这个网站进行扫描,攻击之类的操作
工具:
1 | ThinkPHP 检测工具:https://github.com/Lucifer1993/TPscan |
进入搭建好的靶场环境,然后安装官方WP,直接进行抓包
完成!!!
WordPress插件漏洞分析溯源
先用在线CMS查看这个类型
进入kali,这里我用2021报错,然后我选择了用2019的版本,就没有问题了
使用代码,直接在终端输入
1 | wpscan --url http://124.70.71.251:45287/ |
问题
wpscan新版本有一个问题,就是:wpscan.org(官网获取tooken)
地址:https://wpvulndb.com/users/sign_up
注册一下,然后会有确认邮箱
复制
然后在使用的时候,只需要在后面加上这个参数,然后这个参数加上你刚刚复制的token
心累了,还是用不了,搞了一个下午,放弃了,扫描报403,更新报证书过期
这种红色的表示有漏洞
然后直接用sqlmap进行扫描:
1 | sqlmap -u http://124.70.71.251:45287/wp-content/plugins/comment-rating/ck-processkarma.php?id=1&action=add&path=a |
1 | python sqlmap.py http://124.70.71.251:45287/wp-content/plugins/comment-rating/ck-processkarma.php?id=1&action=add&path=a |
这个是SQLmap在windows平台使用的命令
语句:
1 | sqlmap -u http://124.70.71.251:45287/wp-content/plugins/comment-rating/ck-processkarma.php?id=1&action=add&path=a |
查数据库
查表
爆字段
获取账号密码
密码MD5解密为12qwaszx
登陆wordpress
登陆:admin/12qwaszx
用菜刀连接
1 | http://124.70.71.251:45287/wp-admin/plugin-editor.php?file=comment-rating/comment-rating.php&a=te&scrollto=1901 |
提交
代码审计工具
载入源码
点击—>更新
刷新网页,点击更新,会发现多了很多,里面的SELECT * FROM dd
WHERE ip
LIKE ‘127.0.0.1’十分的可疑(这里不是普通的查表)
这个就相当于我们访问首页返回的语句,那么我们就需要查找一下这个语句是怎么来的
查找关键字,看是否有一个SQL语句
发现这里并没有SQL语句,这里这个是前端的表单语言,所以不算是SQL语句
上面可以看到,还有这个”IP”是关键字,所以这里在搜索一下IP
为什么都没有?那么只有一种可能,那么就是包含了文件,或者说如果还是不清楚,可以用一下全局搜索
发现这里有这个SQL语句,文件路径是:php下面的function.php
查看刚刚说过的首页文件,index.php,查询是不是包含了function.php,结果果然是包含了,既然包含了这个文件,就意味着会执行这个文件,那么就确定我们找的这个文件思路是对的
进入被包含的代码
发现有一个函数:ywdd
然后去首页文件查看是否也有这个函数
发现确实有引用这个函数
由于首页文件ywdd后面是一个getIP,所以要在全局搜索一下为什么得到的是127.0.0.1
其他全部都是调用,只有这个function是创建了这个函数
-查看getip()函数(发现这里是从数据包的首部传参的),这里就可以构造HTTP_X_FORWARDED_FOR的值来进行SQL注入
1 | 1.REMOTE_ADDR:浏览当前页面的用户计算机的ip地址 |
综上所述,可以知道传进去的IP值是可以伪造的,既然可控就有可能有SQL注入
这里我没有:X-Forwarded-For:8.8.8.8,所以我手动添加
这里可以看到我将这里改成了8.8.8.8,然后传参对应的变成了,我输入的值
然后去数据库中查询,这个对应的数据,也就是dd
可以看到有5个字段,所以就可以直接union select 1,2,3,4,5这样就可以了,如果是在实战环境,还是需要一个一个测试(这里都代码审计了,应该是可以直接取数据库中查的)
语句:
1 | X-Forwarded-For:8.8.8.8'union select 1,2,3,4,5# |
1 | GET /qqyw/ HTTP/1.1 |
成功!!!
未知 CMS 非框架类渗透测试报告-人工-你我都爱的 wg 哦~
访问这个链接,会自动跳转到一个hs网站,怎么说呢。。。
然后我就用在线指纹识别了一下
已经是改了
emm,直接识别,是可以识别到,但是我访问的话,会直接跳转
—进入CMS的特殊路径(果然是换了,不是dedecms)
—如果存在,可以访问特殊的路径,看有没有弱口令
—扫描端口(888和8888端口可能会存在宝塔的漏洞)登录:ip:888/pma
—直接访问ip获得备份文件
涉及资源
1 | https://vulhub.org/ |