一、总导图
![](https://i-blog.csdnimg.cn/blog_migrate/10ccc0b4573c9fbbce9131ec40660c1c.png)
二、IIS
<---IIS/6.0--->
查看路径
![](https://i-blog.csdnimg.cn/blog_migrate/4fd10b6696db232173ac5eeba1c68132.png)
登陆站点。
![](https://i-blog.csdnimg.cn/blog_migrate/067f21242b9a5e7351f0e5ed92923c72.png)
输入下面的站点后回车。
![](https://i-blog.csdnimg.cn/blog_migrate/fb2b0bde2c73c63e0ba7bdce152a5484.png)
访问后会自动跳转到以下站点,并且要求输入账号以及密码。
![](https://i-blog.csdnimg.cn/blog_migrate/bf0b28da625c93cd0b20ac31b1906b59.png)
登陆后台后可以看到下面页面。
![](https://i-blog.csdnimg.cn/blog_migrate/fc4c32532af097fbd5fbc5d2eca26d92.png)
登陆后台后再次访问下面站点,此时网站就不会跳转了。
![](https://i-blog.csdnimg.cn/blog_migrate/c8650c998d01999c11b54875148b89d6.png)
选择文件进行上传后抓包可以看到其版本是“IIS/6.0”
![](https://i-blog.csdnimg.cn/blog_migrate/026917bcb0ba4f37ffe7daf329d3cd9a.png)
根据文章最开始的思维导图可知其存在以下漏洞。
![](https://i-blog.csdnimg.cn/blog_migrate/a469e252a8f328527ddeac99159ec542.png)
解释:
文件夹
正常:image/qq.jpg
执行:image.asp/qq.jpg
qq.jpg就会被当做asp解析执行
文件
正常:image.jpg
执行:image.asp;jpg或image.asp;image.jpg
image.jpg 就会被当做asp解析执行
asp可以换做php 如果换了php 那么就当php执行
如果在数据包里“/”后添加一个“1”,那么文件名内就也会多出一个“1”。
![](https://i-blog.csdnimg.cn/blog_migrate/d95339f3c6e725de7e208af44f514b56.png)
如果在数据包里“/”后添加一个“1a”,那么文件名内就也会多出一个“1a”。
![](https://i-blog.csdnimg.cn/blog_migrate/03bd3c88d12a3a42f04e1b3b6b2a832f.png)
如果在数据包里“/”后添加一个“x.asp;.”,那么文件名内就也会多出一个“x.asp;.”。
![](https://i-blog.csdnimg.cn/blog_migrate/5219f8dfa87074f09547752bd50ccfe4.png)
此时就满足触发了下面的规则,代码就会被当作asp执行。
![](https://i-blog.csdnimg.cn/blog_migrate/f7e38cd74eb3f2bd57be6e7cb2a82841.png)
放包后访问文件地址后返回了以下错误信息,因为我们刚刚上传的图片是随便选择的,里面并没有加入恶意代码。
![](https://i-blog.csdnimg.cn/blog_migrate/96fc1f31ff4fbbf6d2a000c611afb06d.png)
如果正常执行,不当作asp执行的话,网页就会返回正常内容。
![](https://i-blog.csdnimg.cn/blog_migrate/6f4dd0064088b6a0df75d872a685f02f.png)
返回正常内容如下。
![](https://i-blog.csdnimg.cn/blog_migrate/f39fdc575ff098063645f6e7c0e3199c.png)
在服务端可以看到刚刚上传上去的文件显示的均为图片格式,但是画绿色框出的文件就触发了解析楼哦对那个。
![](https://i-blog.csdnimg.cn/blog_migrate/55dfb47eb5a3a86a97860fc87efdd849.png)
<---IIS/7.5--->
这个漏洞和Nginx非常相似。
启动靶场环境(这里使用“Vulhub搭建漏洞测试靶场“)。
![](https://i-blog.csdnimg.cn/blog_migrate/fc2142ccd123e35c07609ee2150ad22e.png)
查看ip。
![](https://i-blog.csdnimg.cn/blog_migrate/7332f72f9a66c0fbe03cffa7357b156c.png)
查看端口。
![](https://i-blog.csdnimg.cn/blog_migrate/6bf7e1efe6570725486930741be952c8.png)
进入靶场网页。
![](https://i-blog.csdnimg.cn/blog_migrate/5d3f86fe58499c366eebbdb4e548eb45.png)
查看版本
![](https://i-blog.csdnimg.cn/blog_migrate/342cb71f571eda696b6822ad477e167f.png)
制作一个图片马。
![](https://i-blog.csdnimg.cn/blog_migrate/d32747756a356c7bde3fdc97587b04a5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b989359d3a68ad5b290782008f152fe0.png)
将图片上传后,得到了图片的路径信息。
![](https://i-blog.csdnimg.cn/blog_migrate/9ddb9979094620316b4eb4164d856faf.png)
访问图片路径,路径后面加上“/.php”。
![](https://i-blog.csdnimg.cn/blog_migrate/8f4b06bb585fc53f80f69d90c1c78ff3.png)
可以看到图片马内的php语句被成功执行了。
三、Nginx
<---解析漏洞--->
启动靶场环境
![](https://i-blog.csdnimg.cn/blog_migrate/5b86085518e8bcb7eb56f4092958ea92.png)
查看ip地址。
![](https://i-blog.csdnimg.cn/blog_migrate/a5472bb196b9aed39c744680935304c4.png)
查看端口信息。
![](https://i-blog.csdnimg.cn/blog_migrate/b23ebb088f586522f6eb455f871b5082.png)
访问网址(因为默认就是80端口,所以就没写端口号)。
![](https://i-blog.csdnimg.cn/blog_migrate/57114f075c4b7e0d60f59737c82e2bdc.png)
查看其中间件及版本是“nginx/1.17.8”。
![](https://i-blog.csdnimg.cn/blog_migrate/716da39980ad2b165825025c03272cd4.png)
随便上传一个文件,可以得到路径信息。
![](https://i-blog.csdnimg.cn/blog_migrate/f1e0e30d67ee9a130163b042f32026ae.png)
访问图片路径,可以正常访问,可以确定上传成功了。
![](https://i-blog.csdnimg.cn/blog_migrate/9fbb332a5c70c966a9f3f68032bd91f0.png)
在网址后面随便添加以“.php”结尾的内容,即可触发解析漏洞,返回了以下错误信息,因为我们刚刚上传的图片是随便选择的,里面并没有加入恶意代码。
![](https://i-blog.csdnimg.cn/blog_migrate/495ee909e734159395c2a24e3d34940a.png)
创建一个图片一句话后门代码。
![](https://i-blog.csdnimg.cn/blog_migrate/b6fba538d4968c0dddc6844392519778.png)
同样的方法上传访问后可以发现图片内的恶意代码被成功执行了。
![](https://i-blog.csdnimg.cn/blog_migrate/c7e6a1b7b62bba06aabe160ec37fdecc.png)
<---换行解析--->
Nginx文件名逻辑漏洞(CVE-2013-4547)
漏洞说明
2013年底,nginx再次爆出漏洞(CVE-2013-4547),此漏洞可导致目录跨越及代码执行,主要原因是nginx因为00截断错误地解析了请求的 URI ,将获取到用户请求的文件名解析为对应的脚本程序,导致出现权限绕过、代码执行等连带影响,从而实现getshell的过程。
影响版本
Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
启动靶场环境(这里使用“Vulhub搭建漏洞测试靶场“)。
![](https://i-blog.csdnimg.cn/blog_migrate/1939829f8d83740955ac2f8723f54814.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e9a03e8a1732227c523f3c5157cae503.png)
查看ip。
![](https://i-blog.csdnimg.cn/blog_migrate/7332f72f9a66c0fbe03cffa7357b156c.png)
查看端口。
![](https://i-blog.csdnimg.cn/blog_migrate/724130e6876f94706fe965df9adb28be.png)
访问网页后查看版本,发现是nginx/1.4.2,在漏洞影响范围内。
![](https://i-blog.csdnimg.cn/blog_migrate/d22d1b9f310c8e86bb026b340617ff9e.png)
上传一个“1.gif ”,注意后面的空格,抓包。
![](https://i-blog.csdnimg.cn/blog_migrate/1eeedf0a0ecdccb664e95e06bac7d238.png)
将Hex部分如下内容进行修改,访问http://your-ip:8080/uploadfiles/1.gif[0x20][0x00].php,即可发现PHP已被解析。
![](https://i-blog.csdnimg.cn/blog_migrate/3291894bfc5e76655a80222fb0364658.png)
四、Apache
<---低版本--->
启动服务。
![](https://i-blog.csdnimg.cn/blog_migrate/5eb8e8a669cd36e0fa82fbc67c72734d.png)
查看端口号。
![](https://i-blog.csdnimg.cn/blog_migrate/9b35d8b17dacda6de0bd645bf71608be.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ab38e805cecb6feb0a783d2e8d226ba9.png)
访问站点,发现有两个文件。
![](https://i-blog.csdnimg.cn/blog_migrate/5efb919d99a76817e455cf9402bb1336.png)
打开第一个(phpinfo.php)。
![](https://i-blog.csdnimg.cn/blog_migrate/30579bdec48e9bc15fb02bbdc89b6f2f.png)
打开第二个(phpinfo.php.xxx)。
![](https://i-blog.csdnimg.cn/blog_migrate/14bfbb1669d4a7c1fb20714d2ff64624.png)
可以看到两个不同的后缀名执行的都是php代码。
打开“.xxx”后缀的文件可以发现其内部代码为php代码。
![](https://i-blog.csdnimg.cn/blog_migrate/0cdad993bccdd6902ad25ee170945eb0.png)
因此可以知道“.php.xxx”后缀名的文件是当作php文件解析的,这就是Apache的解析漏洞,即如果后缀名不识别就向上解析。
解释:
x.php.xxx.yyy
识别最后的yyy,
识别不认识,
向前解析,
直到识别,
xxx也不认识,
最后识别到的是php。
利用场景:
如果对方中间件apache属于低版本,
我们可以利用文件上传,
上传一个不识别的文件后缀,
利用解析漏洞规则成功解析文件来使文件中的后门代码被执行。
<---换行解析--->
Apache HTTPD 换行解析漏洞(CVE-2017-15715)
Apache在2.4.0-2.4.29版本中存在一个解析漏洞。
程序在解析PHP时,如果文件名最后有一个换行符“x0A”,apache依然会将其当成php解析,但是在上传文件时可以成功的绕过黑名单。
如果上传文件的php程序是设置的白名单,那么这个漏洞将无法利用。
启动靶场环境(这里使用“Vulhub搭建漏洞测试靶场“)。
![](https://i-blog.csdnimg.cn/blog_migrate/f1555105d91132610a06ff9c15df1091.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8136a810c80c3bb365499690ea431b2e.png)
查看ip。
![](https://i-blog.csdnimg.cn/blog_migrate/7332f72f9a66c0fbe03cffa7357b156c.png)
查看端口。
![](https://i-blog.csdnimg.cn/blog_migrate/724130e6876f94706fe965df9adb28be.png)
访问网页后上传一个名为“1.php”的文件,发现被拦截了。
![](https://i-blog.csdnimg.cn/blog_migrate/47a893e464a910a371ce92c18cef9ac2.png)
在“1.php”后面插入一个“\x0A“(注意:不能是\x0D\x0A,只能是一个\x0A),发现不再被拦截了。
![](https://i-blog.csdnimg.cn/blog_migrate/2a1e84dea631b2398f3cd70b49a430b7.png)
访问刚才上传的“/1.php%0a”,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞。
![](https://i-blog.csdnimg.cn/blog_migrate/c4a9f09dcd1092fcb24d97cbc69fc897.png)