当前位置:  开发笔记 > 编程语言 > 正文

在php的fopen中利用漏洞

如何解决《在php的fopen中利用漏洞》经验,为你挑选了1个好方法。

我正在接受一个网络安全类,对于一项任务,我们必须利用一个特定的php文件,并获得对它所托管的服务器的某种访问权限.我可以设置我自己的$email和$ password变量$_POST.我相信我能利用的唯一代码就是这个.

$email = $_POST['email']
$password = $_POST['password']
....    
$accountfile = "./acounts/" . $email

if(!file_exists($accountfile)){
  diefooter("unknown email address or password")
}
$fh = fopen($accountfile, "r")
if(!$fh){
  diefooter("Cannot open file $accountfile.");
}
$last = fgets($fh);
$first = fgets($fh);
$pass = fgets($fh);

if(strcmp($pass,$password)!=0){
  diefooter("wrong email or password.")
}

我知道fopen()函数中内置了漏洞,我可以使用正确的输入访问shell.

filePath = "/var/ctf/music-copyright/html/cgi-bin/login.php"
shellKode = "exploit@gmail.com\0;echo shell_exec("+'"cat '+filePath+'");'
# payload = {'email':shellKode, 'password':'test'}
testPayload = {'email':'exploit@gmail.com','password':'a'}
r = requests.post(url, data = testPayload)
print(r.text)

我可以在系统中输入电子邮件,但在保存之前会验证格式.在这一点上,我有点失落,不知道我还能做些什么. fopen()是我认为可以被利用的文件中的唯一函数,我想不出另一个漏洞利用的地方.



1> Wadih M...:

我认为他们指的是CRLF漏洞.

在您的示例漏洞利用代码中,您传递了一些PHP代码,但这不是您要做的.

目标是fopen从互联网上打开一个文件.如果$email变量包含由CRLF分隔的两个字符串,则可以fopen()访问不应该访问的外部网站.

所有这些都取决于$fh文件描述符之后发生的事情,它将决定你将如何利用它.

这是我在该漏洞上找到的链接:http://www.securiteam.com/unixfocus/5OP0C0A8AC.html

发布更多代码后编辑:

我们首先要强制$password你想要的价值.

因此,游戏的名称强制$pass为您想要的值,这样strcmp返回true,并且您在不知道任何密码的情况下登录.

$pass 在最后一个陈述中受到控制 $pass = fgets($fh)

如果您使用CRLF漏洞指向fopen以打开您托管的URL,例如http://your.ip.address/your-file,并且在该文件中,您可以设置与设置相同的数据$password.这应该允许您登录而无需注册.

但是代码中有一些奇怪的东西,例如:

$last = fgets($fh);
$first = fgets($fh);
$pass = fgets($fh);

好像代码可能是不完整的,因为这里的值$last,$first并且$pass永远都是这没有任何意义相同.这将是一个需要考虑的因素.

可能性#2 - 文件遍历:

../$email变量中使用,您将能够访问文件夹fopen外的其他acounts/文件.

如果您运行:


它成功评估并查找test.sh内容的两个文件夹.因此,您可以通过$email变量探测文件系统的内容.然后游戏的名称是找到一个标准文件,您知道其中的内容,将其输入$password,您可以登录系统而无需注册.

情形#3 - 注册以.php结尾的电子邮件地址:

正如drew010所提到的,假设您被允许注册一个自定义帐户,然后通过注册$email结尾.php,并在注册您的帐户时将eval()PHP代码放入其中$password,这将创建一个后门文件,acounts/$email您可以通过网络访问的方式命名.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有