怎么通过构造User-Agent请求头内容实现LFI到RCE提权
这篇文章将为大家详细讲解有关怎么通过构造User-Agent请求头内容实现LFI到RCE提权,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
十载专注建站、设计、互联网产品按需求定制设计服务,业务涵盖成都品牌网站建设、商城网站开发、重庆小程序开发公司、软件系统开发、重庆APP开发公司等。凭借多年丰富的经验,我们会仔细了解每个客户的需求而做出多方面的分析、设计、整合,为客户设计出具风格及创意性的商业解决方案,创新互联公司更提供一系列网站制作和网站推广的服务,以推动各中小企业全面信息数字化,并利用创新技术帮助各行业提升企业形象和运营效率。
下面通过对请求User-Agent内容构造,成功实现从本地文件包含漏洞(LFI)到远程代码执行漏洞(RCE)的提权。
发现LFI漏洞
以下为目标网站的Contact Us链接路径:
https://www.website.com/index.php?pg=contact.php
经过对pg参数的fuzz,我发现其中存在LFI漏洞,可以用../../../../etc/passwd直接读出系统密码信息:
https://www.website.com/index.php?pg=../../../../etc/passwd
从LFI到RCE
要想把LFI提权到RCE, 我又发现另一个可读路径/proc/self/environ,于是我有了以下构造:
https://www.website.com/index.php?pg=../../../../proc/self/environ
很好,从其输出中可以看到,其中包含了如HTTP_USER_AGENT等一些环境变量参数:
不错,开启BurpSuite,用system()方法更改请求中的User-Agent值:
User-Agent:
不行,无效。再试试exec()方法:
User-Agent:
也是不行,无效。那用phpinit()试试:
User-Agent:
折腾了一阵后,我差点忘了我是可以向目标网站服务器写东西的啊,于是我就又在User-Agent头中构造了以下Payload:
User-Agent:
解释上述构造的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动作如下:
响应成功。希望我们的Webshell可以成功,访问https://website.com/nadeshot.php试试看:
Webshell写入成功,保存为了nadeshot.php,太好了,我们再接着往里写入nadeshot.txt文件试试:
然后访问https://website.com/nadeshot.txt,一样有效:
就这样,成功实现了从LFI到RCE的提权。
关于怎么通过构造User-Agent请求头内容实现LFI到RCE提权就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
网页题目:怎么通过构造User-Agent请求头内容实现LFI到RCE提权
标题网址:http://azwzsj.com/article/pjhisd.html