CTF代码合集

SSRF_CTF

SSRF(服务端伪造请求攻击),高危漏洞,可以请求到外网无法访问的内网系统,由服务端发起,可以请求到与该服务器相连的其他的与外网隔离的内网服务器

形成原因大多是由于服务端允许从其他服务器获取服务,但没有对目标地址进行过滤和功能限制

漏洞原理

curl命令——http命令行工具,支持文件的上传和下载,可用于扒取内容(url设为百度,就会显示百度的界面——但此时不是跳转到百度,而是在当前页面显示百度的前端——对百度来说,是请求页面的前面的网站请求他的,不是我们的真实IP去请求的——相当于借刀杀人)

语法:# curl [option] [url]

常见用法:

1、测试网页正常

# curl -o /dev/null -s -w %{http_code} www.linux.com 

在脚本中,这是很常见的测试网站是否正常的用法

2、保存http的response里面的cookie信息

# curl -c cookiec.txt  http://www.linux.com

执行后cookie信息就被存到了cookiec.txt里面了

3、保存http的response里面的header信息

# curl -D cookied.txt http://www.linux.com

执行后cookie信息就被存到了cookied.txt里面了

注意:-c(小写)产生的cookie和-D里面的cookie是不一样的

4、模仿浏览器

curl内置option:-A可以让我们指定浏览器去访问网站 

# curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.linux.com

5、伪造referer(盗链)
很多服务器会检查http访问的referer从而来控制访问。比如:你是先访问首页,然后再访问首页中的邮箱页面,这里访问邮箱的referer地址就是访问首页成功后的页面地址,如果服务器发现对邮箱页面访问的referer地址不是首页的地址,就断定那是个盗连了
curl中内置option:-e可以让我们设定referer

# curl -e "www.linux.com" http://mail.linux.com

6、显示抓取错误

# curl -f http://www.linux.com/error

典型SSRF触发代码

IP查询 - 查IP(www.cip.cc)

该网站用于查询当前的出口IP,在百度翻译界面查询该网站会显示百度翻译服务器的IP地址——百度翻译

可现在上述网址查询目标IP,然后将此页面的URL复制到百度翻译,就可以查询该IP的真实IP,或者出口IP

URL跳转

在别人的网站跳转到目标的恶意网站去,可以校验跳转的URL的域名头,不是当前资产的域名头就不允许跳转

@绕过——@到一个域名,不能是文件

https://blog.csdn.net/?url=http://[email protected]

@绕过的话————此链接就会自己跳转到百度的网站上

URL支持很多的协议:可以使用file协议读取本地的根目录、http/https协议访问一些别的资源、使用FTP协议访问一些资源等——最常用的是file协议

https://blog.csdn.net/?url=file:///etc/password

/etc/passwd 文件

系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读操作。

文件每一行代表着一个用户的信息,格式如下

用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell

1、x  代表该用户有密码

密码存储在 /etc/shadow 文件中,此文件只有 root 用户可以浏览和操作,这样就最大限度地保证了密码的安全

“x” 不能删除,如果删除了 “x”,那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆

root:x:0:0:root:/root:/bin/bash
xaiowang:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
lihua:x:2:2:bin:/bin:/usr/sbin/nologin
...
wangmei:x:1000:1000:ubuntu-18.04.1,,,:/home/skx:/bin/bash
lilei:x:1001:1001:,,,:/home/lilei:/bin/bash

parse_url()函数

parse_url()函数:把URL按协议,POST头(www.baidu.com),路径,查询目标等进行解析——只需要校验host头即可

使用[email protected]绕过,就会有一个新的传参user,其值为XXX

换成file协议parse_url()函数也可以解析

白盒审计,碰到如下代码,可以做任意文件读取,也可以访问账号密码

GET传参和POST传参的对象可能会存在不同

一般情况下,传参都是传给当前网页,但如果当前网页是重定向的话,重定向的URL本身就是原URL的传参,如果想要文件的读取权限,只能GET传参跟在URL的后面,不能使用POST传参,POST传参是传给原来的URL

如果非要POST传参,可以使用gopher协议

gopher协议:用于信息查找,可以传递信息给内网,但传递的信息要进行URL编码——空格(%20),换行(%0D),冒号,//,都需要编码

可以直接通过?url=gopher://抓包后的访问目标网站数据包的URL编码(传参类型参考原来需要的参数)

在gopher协议下要注意content_length——它的长度要传参内容的长度保持一致

eg:gopher://目标ip:80_POST%20/security/flag.php……

python脚本化gopher协议

自动对目标网站传参然后url编码返回,使用的时候在cmd启动python 3.7.2,然后转到脚本所在的目录下(最好放在桌面上,比较好找一些),直接输入脚本名称启动脚本等待返回值即可

实际可以在浏览器传参,burp抓包,然后去掉不重要的内容,合为一行,进行url编码,前面加gopher://196.164.32.4_ 即可

import urllib
import requests

test =\

"""POST /security/flag.php HTTP/1,1
Host:192.164.32.4
Content-Type:application/x-www-form-urlencoded

w=flag.php
"""
tmp=urllib.parse.quote(test)   //url编码
new=tmp.replace('0A','%0D%0A')  //换行替换
result='gopher://192.164.32.4_'+new   //使用的时候换IP即可
print(result)

BUUCTF在线评测——SSRF

先查SSRF存在与否,然后file协议,消除cookie,注册一个,然后load url,sql注入,反序列化得到flag所在的路径[网鼎杯 2018]Fakebook(思路详细有说明)_lazy1310的博客-CSDN博客

ctf-wscan 为ctf而生的web扫描器_ctf-wscan.py/-CSDN博客

清除cookie可以退出当前的登录状态

XXE漏洞

XXE(XML External Entity Injection) XML外部实体注入,XML是一种类似于HTML(超文本标记语言)的可扩展标记语言,是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素

CTF代码合集_第1张图片

当使用XML进行信息传输的时候,可能就会发生XXE漏洞攻击

你可能感兴趣的:(web安全,安全)